diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 8dc4cb18..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,89 +0,0 @@ -const length = 140 - -module.exports = { - parser: '@typescript-eslint/parser', - plugins: [ - '@typescript-eslint', - 'import', - 'react' - ], - parserOptions: { - ecmaVersion: 9, - sourceType: 'module', - tsconfigRootDir: __dirname, - project: ['./tsconfig.json'] - }, - env: { - es6: true, - node: true, - browser: true - }, - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:import/recommended', - 'plugin:import/typescript', - 'plugin:react/recommended', - 'plugin:react-hooks/recommended' - ], - settings: { - 'import/core-modules': ['tinymce'], - 'react': { version: '17.0.2' } - }, - rules: { - '@typescript-eslint/prefer-ts-expect-error': 'error', - '@typescript-eslint/no-unused-vars': ['warn', { - ignoreRestSiblings: true, - varsIgnorePattern: '^_', - argsIgnorePattern: '^_' - }], - 'quotes': ['error', 'single', { avoidEscape: true }], - 'linebreak-style': ['error', 'unix'], - 'eqeqeq': ['error', 'always'], - 'indent': ['error', 'tab', { SwitchCase: 1 }], - 'max-len': ['warn', length, { ignorePattern: 'd="([\\s\\S]*?)"' }], - 'array-bracket-newline': ['error', 'consistent'], - 'function-call-argument-newline': ['error', 'consistent'], - 'comma-dangle': ['error', 'only-multiline'], - 'no-tabs': ['error', { allowIndentationTabs: true }], - 'one-var': ['error', 'never'], - 'arrow-parens': ['error', 'as-needed'], - 'quote-props': ['error', 'consistent-as-needed'], - 'yoda': ['error', 'always'], - 'dot-notation': 'error', - 'operator-linebreak': ['error', 'after'], - 'no-extra-parens': ['warn', 'all'], - 'object-property-newline': ['error', { allowAllPropertiesOnSameLine: true }], - 'prefer-template': 'error', - 'no-magic-numbers': ['error', { ignore: [-1, 0, 1] }], - 'no-plusplus': ['error', { allowForLoopAfterthoughts: true }], - 'dot-location': ['error', 'property'], - 'capitalized-comments': ['warn', 'always', { - ignorePattern: 'translators:', - ignoreInlineComments: true, - ignoreConsecutiveComments: true - }], - 'no-invalid-this': 'error', - 'max-lines-per-function': ['warn', { skipBlankLines: true, skipComments: true }], - 'prefer-named-capture-group': 'error', - 'func-style': ['error', 'expression'], - 'no-mixed-spaces-and-tabs': ['error', 'smart-tabs'], - 'semi': ['error', 'never'], - - 'no-ternary': 'off', - 'multiline-ternary': 'off', - 'padded-blocks': 'off', - 'implicit-arrow-linebreak': 'off', - - // Potentially revisit these later - 'curly': ['error', 'multi-line'], - 'no-alert': 'off', - 'camelcase': 'off', - 'sort-keys': 'off', - 'max-params': 'off', - 'sort-imports': 'off', - 'require-unicode-regexp': 'off', - 'array-element-newline': 'off', - 'space-before-function-paren': 'off' - } -} diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 14ce1184..1341bbea 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -1,114 +1,65 @@ -name: "🐞 Bug Report" -description: "Did you find a bug in Code Snippets and can you reproduce it consistently? Please report it here." -labels: ["bug"] +name: Bug report +description: Create a report to help us improve +labels: [ 'bug' ] body: - - type: markdown + - type: textarea attributes: - value: | - ## ⚠️ BEFORE POSTING YOUR ISSUE - ### 🐞 Please create GitHub issues only for Code Snippets Bug Reports. - #### ❌ GitHub issues should NOT BE USED FOR SUPPORT ❌. - ❔ If you have questions, need guidance, help, or general support, please use one of the following channels: - - 🌐 [Code Snippets Community](https://www.facebook.com/groups/codesnippetsplugin) The main Facebook group where all kinds of users come together to help each other. - - πŸ“„ [Documentation](https://help.codesnippets.pro/) Learn everything about our Developer-API. - - πŸ’‘ [Feature Requests](https://roadmap.codesnippets.pro/ideas) Let us know how we can make dev-life easier for you ; ) - - πŸ—ΊοΈ [Roadmap](https://roadmap.codesnippets.pro/roadmap) See what we're up to. - - ⭐ [Reviews](https://wordpress.org/plugins/code-snippets/#reviews) Please leave a review, they really make a difference for us! - - πŸ”„ [Changelog](https://wordpress.org/plugins/code-snippets/#developers) Check the latest features we released. - - πŸ’¬ [Free Support Forum](https://wordpress.org/support/plugin/code-snippets/) Get help on WordPress.org. - - πŸ’Ž If you have an active [Code Snippets Pro](https://codesnippets.pro/) license you are entitled to personal support, please see your purchase email or visit your [Code Snippets Account page](https://codesnippets.pro/account/) for details. - - ### πŸ™ Follow these best practices to help save you time - - πŸ” **Search Before Posting:** Before creating a new Bug Report, please search for similar issues to prevent creating duplicates. - - πŸ†• **Stay Up-to-date:** Make sure you are using the most recent and stable versions of [Code Snippets](https://wordpress.org/plugins/code-snippets/#developers), [Code Snippets Pro](https://codesnippets.pro/), [WordPress](https://wordpress.org/download/releases/), and your theme. - - πŸ”¬ **Isolate the problem:** Deactivate all of your plugins (except Code Snippets Free/Pro), and temporarily change your WordPress theme to [Hello theme](https://wordpress.org/themes/hello-elementor/). If this solves the problem, gradually activate your plugins and theme one by one, until you spot the conflicting plugin or theme. - - πŸ•΅οΈ **Validate Your Issue:** If the issue can't be recreated consistently or reproduced on other sites, it's likely not a bug in Code Snippets. In that case, use one of the support links above. - - 🧩 **Contact 3rd-party Support:** If the issue happens with a Code Snippets add-on, extension, compatible plugin, or integrated theme, contact their support first. We do not provide support for 3rd-party software. - - 1️⃣ **One Issue Per Thread:** If you are experiencing more than one bug, submit only **ONE ISSUE PER THREAD**, so we can properly track them and reference them without any confusion. + label: Current behavior + description: A concise description of what you're experiencing. + validations: + required: true - ## THE ISSUE - - type: checkboxes - id: prerequisites - attributes: - label: "Prerequisites" - options: - - label: "I have searched for similar issues in both open and closed tickets and cannot find a duplicate." - required: true - - label: "The issue still exists against the latest stable version of Code Snippets." - required: true - - type: dropdown - id: bug_type + - type: textarea attributes: - label: "Type of Bug" - description: "What type of bug are you reporting? Please select at least one option that is affected by the issue you're reporting (acceppts multiple options)." - multiple: true - options: - - "Snippet type PHP" - - "Snippet type HTML" - - "Snippet type CSS" - - "Snippet type JS" - - "A Code Snippet" - - "Design/Styles" - - "Dependencies" - - "Code Editor" - - "Export/Import" - - "Internationalization" - - "Maintenance Mode" - - "Notes" - - "Performance" - - "Plugin Settings" - - "Privacy" - - "Product/Core" - - "Product/Pro" - - "Product/Cloud" - - "RTL" - - "Semantics" - - "SEO" - - "UI/UX" - - "Widget" - - "Workflow" - - "I'm Not Sure" - - "Unspecified" + label: Expected behavior + description: A concise description of what you expected to happen. validations: required: true + - type: textarea - id: description + id: to_reproduce + attributes: + label: Steps to reproduce + description: Outline the steps to reproduce the behavior. + placeholder: > + 1. Go to '...' + 2. Click on '....' + 3. Scroll down to '....' + 4. See error validations: - required: true + required: false + + - type: input attributes: - label: "Description" - description: "Describe the problem. What caused the issue? What did you expect to happen and what actually happened? Please be as descriptive as possible. Attach screenshots, screen recordings, and related links." - - type: textarea - id: steps_to_reproduce + label: WordPress version + description: What version of WordPress was this tested on? validations: required: true + + - type: input attributes: - label: "Steps to reproduce" - description: "List all the steps needed to reproduce the issue in detail, so we can replicate it ourselves on our own installation. Be thorough, we won't be able to reproduce it if you don't explain how." - placeholder: "1) ... 2) ... 3) ..." - - type: checkboxes - id: isolating_the_problem + label: Code Snippets version + description: What version of Code Snippets was this tested on? + validations: + required: true + + - type: dropdown attributes: - label: "Isolating the problem" + label: Code Snippets license + description: Was this tested on the core free plugin, or with Code Snippets Pro? + multiple: true options: - - label: "This bug happens with only the Code Snippets plugin active (Free or Pro)." - - label: "This bug happens with a Blank WordPress theme active. For example: ([Hello theme](https://wordpress.org/themes/hello-elementor/))." - - label: "I can reproduce this bug consistently following the steps above." - - type: textarea - id: system_info + - Core (free) + - Pro validations: required: true + + - type: textarea attributes: - label: "Comment" - description: "Please add anything else you may deem useful for us to help you." - render: markdown - - type: markdown - attributes: - value: | + label: Anything else? + description: | + Links? References? Anything that will give us more context about the issue you are encountering! - --- - ⚠️ Please follow all the instructions indicated above, and fill all the required fields with valid information. We reserve the right to close issues that do not comply with these guidelines without any warning. - - - + Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index e4243232..ff7bf39b 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,15 +1,12 @@ blank_issues_enabled: true contact_links: - - name: πŸš€ Feature Request - url: https://roadmap.codesnippets.pro/ideas - about: Suggest new ideas, features, or enhancements - name: ❓ Support Question url: https://help.codesnippets.pro/ about: For Code Snippets users who need assistant and have general usage questions. - - name: πŸ’Ž Premium Support - For customer only + - name: πŸ’Ž Premium Support - For customers only url: https://help.codesnippets.pro/ about: If you have an active license you are entitled to premium support. - - name: πŸ—¨οΈ Code Snippets Global Community + - name: πŸ—¨οΈ Code Snippets Facebook Community url: https://www.facebook.com/groups/codesnippetsplugin about: The main Facebook group where all kinds of users come together to help each other. - name: πŸ“š Code Snippets Documentation diff --git a/.github/ISSUE_TEMPLATE/delete_me b/.github/ISSUE_TEMPLATE/delete_me deleted file mode 100644 index fdaf01da..00000000 --- a/.github/ISSUE_TEMPLATE/delete_me +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: '' -assignees: '' - ---- - -**Describe the bug (only bugs please, this is not support!)** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml new file mode 100644 index 00000000..82483de6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature.yml @@ -0,0 +1,32 @@ +name: Feature request +description: Suggest an idea for this project +labels: [ 'enhancement', 'suggestion' ] +body: + - type: textarea + attributes: + label: Is your feature request related to a problem? Please describe + description: A clear and concise description of what the problem is. + placeholder: e.g. I'm always frustrated when… + validations: + required: false + + - type: textarea + attributes: + label: Describe the solution you'd like + description: A clear and concise description of what you want to happen. + validations: + required: true + + - type: textarea + attributes: + label: Describe alternatives you've considered + description: A clear and concise description of any alternative solutions or features you've considered. + validations: + required: false + + - type: textarea + attributes: + label: Additional context + description: Add any other context or screenshots about the feature request here. + validations: + required: false diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..eb930d58 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,47 @@ +name: "(Build): Plugin" + +on: + workflow_call: + inputs: + ref: + required: false + type: string + default: ${{ inputs.ref }} + outputs: + artifact_name: + value: ${{ jobs.build.outputs.artifact_name }} + artifact_url: + value: ${{ jobs.build.outputs.artifact_url }} +jobs: + build: + runs-on: ubuntu-latest + outputs: + artifact_name: ${{ steps.build.outputs.name }} + artifact_url: ${{ steps.artifacts.outputs.artifact-url }} + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} + + - name: Set up PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.1' + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version-file: .node-version + + - name: Install & Build + id: build + run: | + npm install && npm run bundle + echo "name=$(jq -r .name package.json)" >> $GITHUB_OUTPUT + + - name: Upload + id: artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.build.outputs.name }} + path: ./bundle diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml new file mode 100644 index 00000000..154d07f4 --- /dev/null +++ b/.github/workflows/pull-request.yml @@ -0,0 +1,40 @@ +name: "(Pull Request): Build" + +on: + pull_request: + types: [labeled] + +jobs: + comment: + if: contains(github.event.pull_request.labels.*.name, 'build') + runs-on: ubuntu-latest + outputs: + comment_id: ${{ steps.comment.outputs.comment-id }} + steps: + - name: Comment + id: comment + uses: peter-evans/create-or-update-comment@v4 + with: + issue-number: ${{ github.event.pull_request.number }} + body: | + πŸ‘Œ Build started.. a link to the built zip file will appear here soon.. + + install: + needs: comment + uses: ./.github/workflows/build.yml + with: + ref: ${{ github.head_ref }} + + publish: + needs: ['comment', 'install'] + runs-on: ubuntu-latest + steps: + - name: Publish comment + if: ${{ needs.install.outputs.artifact_name || needs.install.outputs.artifact_url }} + uses: peter-evans/create-or-update-comment@v4 + with: + edit-mode: replace + comment-id: ${{ needs.comment.outputs.comment_id }} + body: | + ### Download and install + πŸ“¦ [${{ needs.install.outputs.artifact_name }}.zip](${{ needs.install.outputs.artifact_url }}) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..f10c23f0 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,51 @@ +name: "(Release): Build" + +on: + release: + types: [created] + +jobs: + install: + uses: ./.github/workflows/build.yml + with: + ref: ${{ github.event.release.tag_name }} + + upload: + needs: install + runs-on: ubuntu-latest + steps: + - name: Get artifact url + id: artifact + run: | + url="${{ needs.install.outputs.artifact_url }}" + id="${url##*/}" + echo "id=$id" >> $GITHUB_OUTPUT + + - name: Download built zip + id: download + uses: actions/download-artifact@v4 + with: + artifact-ids: ${{ steps.artifact.outputs.id }} + path: ./dist + + - name: Get artifact url + id: zip + run: | + zip_name="${{ needs.install.outputs.artifact_name }}.zip" + + cd ./dist/${{ needs.install.outputs.artifact_name }} + zip -r "../$zip_name" . + cd .. + + echo "path=$(pwd)/$zip_name" >> $GITHUB_OUTPUT + + - name: Upload release asset + uses: softprops/action-gh-release@v2 + with: + files: ${{ steps.zip.outputs.path }} + + # deploy: + # needs: upload + # uses: ./.github/workflows/svn_push.yml + # with: + # ref: ${{ github.event.release.tag_name }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 8ec98f56..e42ed840 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,10 @@ # Composer -/vendor/ +/src/vendor/ # generated files /code-snippets.*.zip /code-snippets-pro.*.zip -/dist/ +/src/dist/ /bundle/ # Node diff --git a/.node-version b/.node-version new file mode 100644 index 00000000..80a9956e --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +v20.16.0 diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 521a9f7c..00000000 --- a/.npmrc +++ /dev/null @@ -1 +0,0 @@ -legacy-peer-deps=true diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index e44a38e0..00000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v18.12.1 diff --git a/.travis.yml b/.travis.yml index 8583c0d6..58f3c835 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,7 +31,6 @@ env: before_install: - nvm install node - composer self-update - - npm install -g gulp # Prepare your build for testing. # Failures in this section will result in build status 'errored'. @@ -54,7 +53,7 @@ script: # Search for PHP syntax errors. - find . -maxdepth 1 \( -name '*.php' \) -exec php -lf {} \; - - find php/ \( -name '*.php' \) -exec php -lf {} \; + - find src/php/ \( -name '*.php' \) -exec php -lf {} \; # Run tests - npm run test diff --git a/CHANGELOG.md b/CHANGELOG.md index 086054d3..8895d528 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,567 +1,932 @@ # Changelog -## 3.6.4 (beta release) -* Fixed: Minor type compatability issue with newer versions of PHP. -* Improvement: Increment the revision number of CSS and JS snippet when using the 'Reset Caches' debug action. (PRO) -* Fixed: Undefined array key issue when initiating cloud sync. (PRO) -* Fixed: Bug preventing downloading a single snippet from a bundle. (PRO) -* Added: AI generation for all snippet types: HTML, CSS, JS. (PRO) -* Fixed: Translations not loading for strings in JavaScript files. -* Improved: UX in generate dialog, such as allowing 'Enter' to submit the form. (PRO) -* Added: Button to create a cloud connection directly from the Snippets menu when disconnected. (PRO) - -## 3.6.3 (13 Nov 2023) -* Fixed: Import error when initialising cloud sync configuration. (PRO) -* Improved: Added debug action for resetting snippets caches. - -## 3.6.2 (11 Nov 2023) -* Fixed: Error when attempting to save shared network snippets marked as active. -* Fixed: Type error when rendering checkbox fields without a stored or default value. -* Fixed: Removed automatic encoding of code content. -* Fixed: Label for snippet sharing input incorrectly linked to input field. -* Fixed: Error when attempting to download export files from Edit menu. -* Fixed: Issue loading Freemius string overrides too early. (PRO) -* Fixed: Fix redirect URL when connecting with OAuth on subdirectory or HTTPS sites. (PRO) -* Fixed: Import error when attempting to completely uninstall the plugin. - -## 3.6.1 (07 Nov 2023) -* Fixed: Issue accessing fields on Snippets class. - -## 3.6.0 (07 Nov 2023) +## [3.6.8] (2025-02-14) + +### Added +* `code_snippets/hide_welcome_banner` filter hook for hiding welcome banner in dashboard. + +### Changed +* Updated Freemius SDK to the latest version. (PRO) + +### Removed +* Functionality allowing `[code_snippet]` shortcodes to be embedded recursively – it will be re-added in a future version. + +### Fixed +* Shortcodes embedded within `[code_snippet]` shortcodes not evaluating correctly. +* Translation functions being called too early in some instances when loading plugin settings. +* 'Generate' button not appearing on some sites. (PRO) +* Incorrect arrow entity used in cloud list table (props to [brandonjp]). +* Removed reference to missing plugins.css file in core plugin version. + +## [3.6.7] (2025-01-24) + +### Added +* Generated snippet shortcode tags will include the snippet name, for easier identification. +* Admin notices will dismiss automatically after five seconds. ([#208](https://github.com/codesnippetspro/code-snippets/issues/208)) + +### Changed +* Updated CSS to use latest Sass features. +* Moved theme selector to just above editor preview on settings page (thanks to [brandonjp]). ([#206](https://github.com/codesnippetspro/code-snippets/issues/206)) +* `[code_snippet]` shortcodes can now be nested within each other. ([#198](https://github.com/codesnippetspro/code-snippets/issues/198)) + +### Fixed +* Save buttons above editor did not follow usual validation process in Pro. (PRO) ([#197](https://github.com/codesnippetspro/code-snippets/issues/197)) +* Minor inconsistencies in consistent UI elements between Core and Pro. +* Tags input not allowing input. ([#211](https://github.com/codesnippetspro/code-snippets/issues/211)) +* Issue with Elementor source code widget. (PRO) ([#205](https://github.com/codesnippetspro/code-snippets/issues/205)) +* Snippet descriptions not visible when viewing cloud search results. +* Snippet import page not displaying number of successfully imported snippets. +* Use UTC time when deciding when to display campaign notices. + +## [3.6.6.1] (2024-11-27) + +### Fixed +* Redeployment of [v3.6.6](#366-2024-11-27) to overcome issue with initial build. +* Type issue when caching cloud links. (PRO) + +## [3.6.6] (2024-11-27) + +### Changed +* Improved compatability with modern versions of PHP. +* Extended welcome API to include admin notices. +* Action hook `code_snippets/update_snippet` now only includes the snippet ID instead of the full snippet object. +* Action hook `code_snippets/admin/manage` now includes the currently viewed type. + +### Fixed +* Memory issue from checking aggregate posts while loading front-end syntax highlighter. +* Translation functions being called too early on upgrade, resulting in localisation loading errors. +* Bug preventing the 'share on network' status of network snippets from correctly updating. +* Incorrect logic controlling when to display 'Save Changes' or 'Save Changes and Activate' buttons. +* Old notices persisting when switching between editing and creating snippets. + +## 3.6.5.1 (2024-05-24) + +* Redeployment of [v3.6.5](#365-2024-05-24) to overcome issue with initial build. + +## [3.6.5] (2024-05-24) + +### Added +* New admin menu providing useful resources and updates on the Code Snippets plugin and community. + +## [3.6.4] (2024-03-15) + +### Added +* AI generation for all snippet types: HTML, CSS, JS. (PRO) +* Button to create a cloud connection directly from the Snippets menu when disconnected. (PRO) + +### Changed +* Increment the revision number of CSS and JS snippet when using the 'Reset Caches' debug action. (PRO) +* UX in generate dialog, such as allowing 'Enter' to submit the form. (PRO) + +### Fixed +* Minor type compatability issue with newer versions of PHP. +* Undefined array key issue when initiating cloud sync. (PRO) +* Bug preventing downloading a single snippet from a bundle. (PRO) +* Translations not loading for strings in JavaScript files. + +## [3.6.3] (2023-11-13) + +### Added +* Added debug action for resetting snippets caches. + +### Fixed +* Import error when initialising cloud sync configuration. (PRO) + +## [3.6.2] (2023-11-11) + +### Removed +* Removed automatic encoding of code content. + +### Fixed +* Error when attempting to save shared network snippets marked as active. +* Type error when rendering checkbox fields without a stored or default value. +* Label for snippet sharing input incorrectly linked to input field. +* Error when attempting to download export files from Edit menu. +* Issue loading Freemius string overrides too early. (PRO) +* Fix redirect URL when connecting with OAuth on subdirectory or HTTPS sites. (PRO) +* Import error when attempting to completely uninstall the plugin. + +## [3.6.1] (2023-11-07) + +### Fixed +* Issue accessing fields on Snippets class. + +## [3.6.0] (2023-11-07) + +### Added +* Ability to authenticate with Code Snippets Cloud using OAuth. (PRO) +* Integration with GPT AI for generating snippets. (PRO) +* Ability to generate line-by-line descriptions of snippet code with GPT AI. (PRO) +* Ability to generate tags and description text from existing snippet code with GPT AI. (PRO) +* Added debug settings menu for manually performing problem-solving actions. +* Filter to disable scroll-into-view functionality for edit page notices. + +### Changed * Updated minimum PHP requirement to 7.4. +* Ensure that the URL of the edit snippet page changes when adding a new snippet. +* Snippet tags will automatically be added when focus is lost on the tags field. + +### Fixed +* Moved active status border on edit name field to left-hand side. +* New notices will not scroll if already at top of page. +* Potential CSRF vulnerability allowing an authenticated user to reset settings. + +## [3.5.1] (2023-09-15) + +### Fixed +* Undefined array key error when accessing plugin settings page. (PRO) +* Issue registering API endpoints affecting edit post screen. (PRO) +* Snippet ID instead of snippet object being passed to `code_snippets/update_snippet` action hook. + +## [3.5.0] (2023-09-13) + +### Added +* Support for the Code Snippets Cloud API. +* Search and download public snippets. +* Codevault back-up and synchronisation. (PRO) +* Synchronised local snippets are automatically updated in Cloud. (PRO) +* Bulk actions - 'update' and 'download'. +* Download snippets from public and private codevaults. (PRO) +* Search and download any publicly viewable snippet in Code Snippet Cloud by keyword or name of codevault. (PRO) +* Deploy snippets to plugin from Code Snippets Cloud app. (PRO) +* Bundles of Joy! Search and download Snippet Bundles in one go direct from Code Snippets Cloud. (PRO) + +### Changed +* Redirect to snippets table when deleting snippet from the edit menu. +* Scroll new notices into view on edit menu. -* Added: Ability to authenticate with Code Snippets Cloud using OAuth. (PRO) -* Added: Integration with GPT AI for generating snippets. (PRO) -* Added: Ability to generate line-by-line descriptions of snippet code with GPT AI. (PRO) -* Added: Ability to generate tags and description text from existing snippet code with GPT AI. (PRO) - -* Improved: Ensure that the URL of the edit snippet page changes when adding a new snippet. -* Improved: Snippet tags will automatically be added when focus is lost on the tags field. -* Improved: Added debug settings menu for manually performing problem-solving actions. -* Fixed: Moved active status border on edit name field to left-hand side. -* Added: Filter to disable scroll-into-view functionality for edit page notices. -* Fixed: New notices will not scroll if already at top of page. -* Fixed: Potential CSRF vulnerability allowing an authenticated user to reset settings. - -## 3.5.1 (15 Sep 2023) -* Fixed: Undefined array key error when accessing plugin settings page. (PRO) -* Fixed: Issue registering API endpoints affecting edit post screen. (PRO) -* Fixed: Snippet ID instead of snippet object being passed to `code_snippets/update_snippet` action hook. - -## 3.5.0 (13 Sep 2023) -* Added: Support for the Code Snippets Cloud API. -* Added: Search and download public snippets. -* Added: Codevault back-up and synchronisation. (PRO) -* Added: Synchronised local snippets are automatically updated in Cloud. (PRO) -* Added: Bulk actions - 'update' and 'download'. -* Added: Download snippets from public and private codevaults. (PRO) -* Added: Search and download any publicly viewable snippet in Code Snippet Cloud by keyword or name of codevault. (PRO) -* Added: Deploy snippets to plugin from Code Snippets Cloud app. (PRO) -* Added: Bundles of Joy! Search and download Snippet Bundles in one go direct from Code Snippets Cloud. (PRO) -* Fixed: Error when attempting to update network shared snippets after saving. [[#](https://wordpress.org/support/topic/activating-snippets-breaks-on-wordpress-6-3/)] -* Improved: Redirect to snippets table when deleting snippet from the edit menu. -* Improved: Scroll new notices into view on edit menu. - -## 3.4.2 (05 Jul 2023) -* Fixed: Issue causing export process to fail with fatal error. [[#](https://wordpress.org/support/topic/critical-error-on-exporting-snippets/)] -* Fixed: Type issue on `the_posts` filter when no posts available. [[#](https://wordpress.org/support/topic/collision-with-plugin-xml-sitemap-google-news/)] - -## 3.4.1 (29 Jun 2023) -* Fixed: Undefined array key error. [[#](https://wordpress.org/support/topic/after-updating-occasionally-getting-undefined-array-key-query/)] -* Fixed: Potential type issue when loading Prism. [[#](https://wordpress.org/support/topic/code-snippets-fatal-error-breaking-xml-sitemaps/)] -* Improved: Added better debugging when calling REST API methods from the edit menu. -* Improved: Escape special characters when sending snippet code through AJAX to avoid false-positives from security modules. [[#](https://wordpress.org/support/topic/latest-3-4-0-ajax-bug-cannot-save-snippets-403-error/)] -* Improved: Only display the latest update or error notice on the edit page, instead of allowing them to stack. -* Fixed: Potential type issue when sorting snippets. [[#](https://github.com/codesnippetspro/code-snippets/issues/166)] -* Fixed: Issue preventing asset revision numbers from updating correctly. (PRO) [[#](https://github.com/codesnippetspro/code-snippets/issues/166)] - -## 3.4.0 (17 May 2023) -* Added: Proper WordPress REST API support for retrieving and modifying snippets. -* Improved: Better compatibility with modern versions of PHP (7.0+). -* Improved: Converted Edit/Add New Snippet page to use React. +### Fixed +* Error when attempting to update network shared snippets after saving. [[#](https://wordpress.org/support/topic/activating-snippets-breaks-on-wordpress-6-3/)] + +## [3.4.2] (2023-07-05) + +### Fixed +* Issue causing export process to fail with fatal error. [[#](https://wordpress.org/support/topic/critical-error-on-exporting-snippets/)] +* Type issue on `the_posts` filter when no posts available. [[#](https://wordpress.org/support/topic/collision-with-plugin-xml-sitemap-google-news/)] + +## [3.4.1] (2023-06-29) + +### Added +* Added better debugging when calling REST API methods from the edit menu. + +### Changed +* Escape special characters when sending snippet code through AJAX to avoid false-positives from security modules. [[#](https://wordpress.org/support/topic/latest-3-4-0-ajax-bug-cannot-save-snippets-403-error/)] +* Only display the latest update or error notice on the edit page, instead of allowing them to stack. + +### Fixed +* Undefined array key error. [[#](https://wordpress.org/support/topic/after-updating-occasionally-getting-undefined-array-key-query/)] +* Potential type issue when loading Prism. [[#](https://wordpress.org/support/topic/code-snippets-fatal-error-breaking-xml-sitemaps/)] +* Potential type issue when sorting snippets. [[#](https://github.com/codesnippetspro/code-snippets/issues/166)] +* Issue preventing asset revision numbers from updating correctly. (PRO) [[#](https://github.com/codesnippetspro/code-snippets/issues/166)] + +## [3.4.0] (2023-05-17) + +### Added +* Proper WordPress REST API support for retrieving and modifying snippets. +* Added help links to content snippet options. + +### Changed +* Better compatibility with modern versions of PHP (7.0+). +* Converted Edit/Add New Snippet page to use React. * Converted action buttons to asynchronously use REST API endpoints through AJAX. * Load page components dynamically through React. * Added action notice queue system. * Replaced native alert dialog with proper React modal. -* Improved: Catch snippet execution errors to prevent site from crashing. -* Improved: Display recent snippet errors in admin dashboard instead. -* Improved: Updated editor block to use new REST API endpoints. (PRO) -* Improved: Change colour of upgrade notice in Pro plugin. (PRO) -* Improved: All available snippet data is included in export files. -* Improved: Only import specific fields from export file, even if additional fields specified. -* Fixed: Issue preventing editor colorpicker from loading correctly. (PRO) -* Improved: Added help links to content snippet options. -* Improved: Pass additional attributes specified in `[code_snippet]` content shortcode to shortcode content. -* Improved: Make shortcode attributes available as individual variables. -* Improved: Allow boolean attributes to be passed to code snippets shortcodes without specifying a value. -* Improved: Replace external links to Pro pricing page with an upgrade modal. -* Fixed: Issue preventing linting libraries from loading correctly in the code editor. - -## 3.3.0 (09 Mar 2023) -* Fixed: Do not enqueue CSS or JS snippet file if no snippets exist. (PRO) -* Improved: Added additional editor shortcuts to list in tooltip. -* Added: Filter for changing Snippets admin menu position. [See this help article for more information.](https://help.codesnippets.pro/article/61-how-can-i-change-the-location-of-the-snippets-admin-menu) -* Added: Ability to filter shortcode output. Thanks to contributions from [Jack Szwergold](https://github.com/JackSzwergold). -* Fixed: Bug causing all snippets to show in site health information instead of those active. -* Fixed: Unnecessary sanitization of file upload data causing import process to fail on Windows systems. - -## 3.2.2 (17 Nov 2022) -* Fixed: Plugin lacking a valid header error on activation. - -## 3.2.1 (05 Oct 2022) -* Fixed: Issue making survey reminder notice not dismissible. -* Added: `Ctrl`+`/` or `Cmd`+`/` as shortcut for commenting out code in the snippet editor. -* Added: Additional hooks to various snippet actions, thanks to contributions made by [ancient-spirit](https://github.com/ancient-spirit). -* Added: Fold markers, additional keyboard shortcuts and keymap options to snippet editor, -thanks to contributions made by [Amaral Krichman](https://github.com/karmaral). -* Improved: Removed duplicate tables exist query. ([#](https://wordpress.org/support/topic/duplicate-queries-21)). -* Improved: Enabled 'add paragraphs and formatting' option by default for newly inserted content snippets. -* Added: WP-CLI commands for retrieving, activating, deactivating, deleting, creating, updating, exporting and importing snippets. -* Fixed: Path to iron visible when updating the pro plugin. - -## 3.2.0 (22 Jul 2022) -* Fixed: Remove default value from SQL columns to improve compatibility with certain versions of MySQL. -* Fixed: Delay loading snippets in Gutenberg editor blocks. (PRO) -* Added: Option to show and hide line numbers in Gutenberg source code editor block. (PRO) -* Added: Support for highlighting HTML, CSS, JS and embedded code in the front-end PrismJS code highlighter. -* Added: Additional features to front-end PrismJS code highlighter, including automatic links and a copy button. -* Added: Support for multiple code styles in the source code Gutenberg editor block. (PRO) -* Added: Admin notice announcing release of Code Snippets Pro. -* Fixed: Inconsistencies with translations between different plugin versions. -* Fixed: Issue with Content Snippet shortcode information not displaying. -* Added: Button for copying shortcode text to clipboard. -* Improved: Include Code Snippets CSS and JS source code in distributed package. -* Improved: Don't delete data from plugin if deleting Code Snippets Free while Code Snippets Pro is active. -* Improved: Streamlined user interface and experience in Gutenberg editor blocks. (PRO) -* Added: Option to choose from 44 different themes for the Prism code highlighter in the source editor block and Elementor widget. (PRO) -* Improved: Compatibility of Elementor widgets with the latest version of Elementor. (PRO) -* Improved: Replace icon font menu icon with embedded SVG icon. - -## 3.1.2 (03 Jul 2022) +* Catch snippet execution errors to prevent site from crashing. +* Display recent snippet errors in admin dashboard instead. +* Updated editor block to use new REST API endpoints. (PRO) +* Change colour of upgrade notice in Pro plugin. (PRO) +* All available snippet data is included in export files. +* Only import specific fields from export file, even if additional fields specified. +* Pass additional attributes specified in `[code_snippet]` content shortcode to shortcode content. +* Make shortcode attributes available as individual variables. +* Allow boolean attributes to be passed to code snippets shortcodes without specifying a value. +* Replace external links to Pro pricing page with an upgrade modal. + +### Fixed +* Issue preventing editor colorpicker from loading correctly. (PRO) +* Issue preventing linting libraries from loading correctly in the code editor. + +## [3.3.0] (2023-03-09) + +### Added +* Added additional editor shortcuts to list in tooltip. +* Filter for changing Snippets admin menu position. [See this help article for more information.](https://help.codesnippets.pro/article/61-how-can-i-change-the-location-of-the-snippets-admin-menu) +* Ability to filter shortcode output. Thanks to contributions from [Jack Szwergold](https://github.com/JackSzwergold). + +### Fixed +* Do not enqueue CSS or JS snippet file if no snippets exist. (PRO) +* Bug causing all snippets to show in site health information instead of those active. +* Unnecessary sanitization of file upload data causing import process to fail on Windows systems. + +## [3.2.2] (2022-11-17) + +### Fixed +* Plugin lacking a valid header error on activation. + +## [3.2.1] (2022-10-05) + +### Added +* `Ctrl`+`/` or `Cmd`+`/` as shortcut for commenting out code in the snippet editor. +* Additional hooks to various snippet actions, thanks to contributions made by [ancient-spirit](https://github.com/ancient-spirit). +* Fold markers, additional keyboard shortcuts and keymap options to snippet editor, + thanks to contributions made by [Amaral Krichman](https://github.com/karmaral). +* WP-CLI commands for retrieving, activating, deactivating, deleting, creating, updating, exporting and importing snippets. + +### Changed +* Removed duplicate tables exist query. ([#](https://wordpress.org/support/topic/duplicate-queries-21)). +* Enabled 'add paragraphs and formatting' option by default for newly inserted content snippets. + +### Fixed +* Issue making survey reminder notice not dismissible. +* Path to iron visible when updating the pro plugin. + +## [3.2.0] (2022-07-22) + +### Added +* Option to show and hide line numbers in Gutenberg source code editor block. (PRO) +* Support for highlighting HTML, CSS, JS and embedded code in the front-end PrismJS code highlighter. +* Additional features to front-end PrismJS code highlighter, including automatic links and a copy button. +* Support for multiple code styles in the source code Gutenberg editor block. (PRO) +* Admin notice announcing release of Code Snippets Pro. +* Button for copying shortcode text to clipboard. +* Option to choose from 44 different themes for the Prism code highlighter in the source editor block and Elementor widget. (PRO) + +### Changed +* Include Code Snippets CSS and JS source code in distributed package. +* Don't delete data from plugin if deleting Code Snippets Free while Code Snippets Pro is active. +* Streamlined user interface and experience in Gutenberg editor blocks. (PRO) +* Compatibility of Elementor widgets with the latest version of Elementor. (PRO) +* Replace icon font menu icon with embedded SVG icon. + +### Removed +* Remove default value from SQL columns to improve compatibility with certain versions of MySQL. + +### Fixed +* Delay loading snippets in Gutenberg editor blocks. (PRO) +* Inconsistencies with translations between different plugin versions. +* Issue with Content Snippet shortcode information not displaying. + +## [3.1.2] (2022-07-03) + +### Changed * Updated external links and branding for Code Snippets Pro. -* Improved: Add link URLs to settings pages, as an alternative to in-page navigation. -* Fixed: Various fixes to block editor scripts. (PRO) -* Fixed: Improved visual style of Gutenberg editor blocks. (PRO) - -## 3.1.1 (13 Jun 2022) -* Fixed: Download snippets feature not including snippet content. -* Fixed: Alignment of 'opens externally' dashicon. -* Improved: Added additional parameters to `code_snippets/export/filename` filter. - -## 3.1.0 (17 May 2022) -* Fixed: Caching inconsistencies preventing snippets and settings from refreshing on sites with persistent object caching. -* Improved: Simplified database queries. -* Added: More comprehensive cache coverage, including for active snippets. -* Added: Icon to 'Go Pro' button indicating it opens an external tab. -* Improved: Allow display styles in snippet descriptions. - -## 3.0.1 (14 May 2022) -* Fixed: Incompatibility issue with earlier versions of PHP. - -## 3.0.0 (14 May 2022) - -### Added -* Added: HTML content snippets for displaying as shortcodes or including in the page head or footer area. -* Added: Notice reminding users to upgrade unsupported PHP versions. -* Added: Visual settings to add attributes to shortcodes. -* Added: Shortcode buttons to the post and page content editors. -* Added: Basic REST API endpoints. -* Added: Snippet type column to the snippets table. -* Added: Snippet type badges to Edit and Add New Snippet pages. -* Added: Setting to control whether the current line of the code editor is highlighted. -* Added: Display a warning when saving a snippet with missing title or code. -* Added: Add suffix to title of cloned snippets. - -### Changed -* Improved: Updated plugin code to use namespaces, preventing name collisions with other plugins. -* Improved: Added key for the 'active' and 'scope' database table columns to speed up queries. -* Improved: Redirect from edit menu if not editing a valid snippet. -* Improved: Moved activation switch into its own table column. -* Improved: Updated code documentation according to WordPress standards. -* Improved: Added snippet type labels to the tabs on the Snippets page. -* Improved: Split settings page into tabs. -* Improved: Use the version of CodeMirror included with WordPress where possible to inherit the additional built-in features. -* Improved: Added hover effect to priority settings in the snippets table to show that they are editable. -* Fixed: Snippets table layout on smaller screens. +* Add link URLs to settings pages, as an alternative to in-page navigation. +* Improved visual style of Gutenberg editor blocks. (PRO) + +### Fixed +* Various fixes to block editor scripts. (PRO) + +## [3.1.1] (2022-06-13) + +### Added +* Added additional parameters to `code_snippets/export/filename` filter. + +### Fixed +* Download snippets feature not including snippet content. +* Alignment of 'opens externally' dashicon. + +## [3.1.0] (2022-05-17) + +### Added +* More comprehensive cache coverage, including for active snippets. +* Icon to 'Go Pro' button indicating it opens an external tab. + +### Changed +* Simplified database queries. +* Allow display styles in snippet descriptions. + +### Fixed +* Caching inconsistencies preventing snippets and settings from refreshing on sites with persistent object caching. + +## [3.0.1] (2022-05-14) + +### Fixed +* Incompatibility issue with earlier versions of PHP. + +## [3.0.0] (2022-05-14) + +### Added +* HTML content snippets for displaying as shortcodes or including in the page head or footer area. +* Notice reminding users to upgrade unsupported PHP versions. +* Visual settings to add attributes to shortcodes. +* Shortcode buttons to the post and page content editors. +* Basic REST API endpoints. +* Snippet type column to the snippets table. +* Snippet type badges to Edit and Add New Snippet pages. +* Setting to control whether the current line of the code editor is highlighted. +* Display a warning when saving a snippet with missing title or code. +* Add suffix to title of cloned snippets. +* Added key for the 'active' and 'scope' database table columns to speed up queries. +* Added snippet type labels to the tabs on the Snippets page. +* Added hover effect to priority settings in the snippets table to show that they are editable. +* CSS style snippets for the site front-end and admin area. (PRO) +* JavaScript snippets for the site head and body area on the front-end. (PRO) +* Browser cache versioning for CSS and JavaScript snippets. (PRO) +* Support for exporting and downloading CSS and JavaScript snippets. (PRO) +* Support for highlighting code on the front-end. (PRO) +* Editor syntax highlighting for CSS, JavaScript and HTML snippets. (PRO) +* Button to preview full file when editing CSS or JavaScript snippets. (PRO) +* Option to minify CSS and JavaScript snippets. (PRO) +* Gutenberg editor block for displaying content snippets. (PRO) +* Gutenberg editor block for displaying snippet source code. (PRO) +* Elementor widget for displaying content snippets. (PRO) +* Elementor widget for displaying snippet source code. (PRO) + +### Changed +* Updated plugin code to use namespaces, preventing name collisions with other plugins. +* Redirect from edit menu if not editing a valid snippet. +* Moved activation switch into its own table column. +* Updated code documentation according to WordPress standards. +* Split settings page into tabs. +* Use the version of CodeMirror included with WordPress where possible to inherit the additional built-in features. ### Deprecated -* Removed: Deprecated functions and compatibility code for unsupported PHP versions. -* Removed: Option to disable snippet scopes. - -### New in Pro -* Added: CSS style snippets for the site front-end and admin area. -* Added: JavaScript snippets for the site head and body area on the front-end. -* Added: Browser cache versioning for CSS and JavaScript snippets. -* Added: Support for exporting and downloading CSS and JavaScript snippets. -* Added: Support for highlighting code on the front-end. -* Added: Editor syntax highlighting for CSS, JavaScript and HTML snippets. -* Added: Button to preview full file when editing CSS or JavaScript snippets. -* Added: Option to minify CSS and JavaScript snippets. -* Added: Gutenberg editor block for displaying content snippets. -* Added: Gutenberg editor block for displaying snippet source code. -* Added: Elementor widget for displaying content snippets. -* Added: Elementor widget for displaying snippet source code. - -## 2.14.6 (13 May 2022) -* Fixed: Issue with processing uploaded import files. -* Fixed: Issue with processing tag filters. - -## 2.14.5 (10 May 2022) -* Fixed: Incompatibility issue with older versions of PHP. - -## 2.14.4 (5 May 2022) -* Fixed: Prevent array key errors when loading the snippet table with unknown order values. - -## 2.14.3 (10 Dec 2021) -* Fixed: Potential security issue outputting snippets-safe-mode query variable value as-is. Thanks to Krzysztof ZajΔ…c for reporting. - -## 2.14.2 (09 Sep 2021) -* Fixed: Prevent network snippets table from being created on single-site installs. +* Deprecated functions and compatibility code for unsupported PHP versions. + +### Removed +* Option to disable snippet scopes. + +### Fixed +* Snippets table layout on smaller screens. + +## [2.14.6] (2022-05-13) + +### Fixed +* Issue with processing uploaded import files. +* Issue with processing tag filters. + +## [2.14.5] (2022-05-10) + +### Fixed +* Incompatibility issue with older versions of PHP. + +## [2.14.4] (2022-05-05) + +### Fixed +* Prevent array key errors when loading the snippet table with unknown order values. + +## [2.14.3] (2021-12-10) + +### Fixed +* Potential security issue outputting snippets-safe-mode query variable value as-is. Thanks to Krzysztof ZajΔ…c for reporting. + +## [2.14.2] (2021-09-09) + +### Added * Added translations: - - Spanish by [Ibidem Group](https://www.ibidemgroup.com) - - Urdu by [Samuel Badree](https://mobilemall.pk/) - - Greek by [Toni Bishop from Jrop](https://www.jrop.com/) -* Added: Support for `:class` syntax to the code validator. -* Added: PHP8 support to the code linter. -* Added: Color picker feature to the code editor. -* Added: Failsafe to prevent multiple versions of Code Snippets from running simultaneously. - -## 2.14.1 (10 Mar 2021) -* Added: Czech translation by [LukΓ‘Ε‘ TesaΕ™](https://github.com/atomicf4ll). -* Fixed: Code validator now supports `function_exists` and `class_exists` checks. -* Fixed: Code validator now supports anonymous functions. -* Fixed: Issue with saving the hidden columns setting. -* Fixed: Replaced the outdated tag-it library with [tagger](https://github.com/jcubic/tagger) for powering the snippet tags editor. -* Added: Code direction setting for RTL users. + * Spanish by [Ibidem Group](https://www.ibidemgroup.com) + * Urdu by [Samuel Badree](https://mobilemall.pk/) + * Greek by [Toni Bishop from Jrop](https://www.jrop.com/) +* Support for `:class` syntax to the code validator. +* PHP8 support to the code linter. +* Color picker feature to the code editor. +* Failsafe to prevent multiple versions of Code Snippets from running simultaneously. + +### Fixed +* Prevent network snippets table from being created on single-site installs. + +## [2.14.1] (2021-03-10) + +### Added +* Czech translation by [LukΓ‘Ε‘ TesaΕ™](https://github.com/atomicf4ll). +* Code direction setting for RTL users. +* Additional action hooks and search API thanks to [@Spreeuw](https://github.com/Spreeuw). + +### Changed * Updated CodeMirror to version 5.59.4. -* Added: Additional action hooks and search API thanks to [@Spreeuw](https://github.com/Spreeuw). -## 2.14.0 (26 Jan 2020) +### Fixed +* Code validator now supports `function_exists` and `class_exists` checks. +* Code validator now supports anonymous functions. +* Issue with saving the hidden columns setting. +* Replaced the outdated tag-it library with [tagger](https://github.com/jcubic/tagger) for powering the snippet tags editor. + +## [2.14.0] (2020-01-26) + +### Added +* Basic error checking for duplicate functions and classes. +* Additional API options for retrieving snippets. +* Store the time and date when each snippet was last modified. +* Basic error checking when activating snippets. + +### Changed * Updated CodeMirror to version 5.50.2. -* Added: Basic error checking for duplicate functions and classes. * Updated Italian translations to fix display issues – thanks to [Francesco Marino](https://360fun.net). -* Fixed: Ordering snippets in the table by name will now be case-insensitive. -* Added: Additional API options for retrieving snippets. -* Fixed: Code editor will now properly highlight embedded HTML, CSS and JavaScript code. * Changed the indicator color for inactive snippets from red to grey. + +### Fixed +* Ordering snippets in the table by name will now be case-insensitive. +* Code editor will now properly highlight embedded HTML, CSS and JavaScript code. * Fixed a bug preventing the editor theme from being set to default. -* Added: Store the time and date when each snippet was last modified. -* Added: Basic error checking when activating snippets. -* Fixed: Ensure that imported snippets are always inactive. -* Fixed: Check the referer on the import menu to prevent CSRF attacks. -Thanks to [Chloe with the Wordfence Threat Intelligence team](https://www.wordfence.com/blog/author/wfchloe/) for reporting. -* Fixed: Ensure that individual snippet action links use proper verification. - -## 2.13.3 (13 Mar 2019) -* Added: Hover effect to activation switches. -* Added: Additional save buttons above snippet editor. -* Added: List save keyboard shortcuts to the help tooltip. -* Added: Change "no items found" message when search filters match nothing. -* Fixed: Calling deprecated code in database upgrade process. -* Fixed: Include snippet priority in export files. -* Fixed: Use Unix newlines in code export file. +* Ensure that imported snippets are always inactive. +* Check the referer on the import menu to prevent CSRF attacks. + Thanks to [Chloe with the Wordfence Threat Intelligence team](https://www.wordfence.com/blog/author/wfchloe/) for reporting. +* Ensure that individual snippet action links use proper verification. + +## [2.13.3] (2019-03-13) + +### Added +* Hover effect to activation switches. +* Additional save buttons above snippet editor. +* List save keyboard shortcuts to the help tooltip. +* Change "no items found" message when search filters match nothing. + +### Changed * Updated CodeMirror to version 5.44.0. -* Fixed: Correctly register snippet tables with WordPress to prevent database repair errors. -[[#](https://wordpress.org/support/topic/database-corrupted-4/)] -* Fixed: CodeMirror indentation settings being applied incorrectly. -## 2.13.2 (25 Jan 2019) +### Fixed +* Calling deprecated code in database upgrade process. +* Include snippet priority in export files. +* Use Unix newlines in code export file. +* Correctly register snippet tables with WordPress to prevent database repair errors. + [[#](https://wordpress.org/support/topic/database-corrupted-4/)] +* CodeMirror indentation settings being applied incorrectly. + +## [2.13.2] (2019-01-25) + +### Removed * Removed potentially problematic cursor position saving feature. -## 2.13.1 (22 Jan 2019) -* Added: Add menu buttons to settings page for compact menu. -* Updated: French translation updated thanks to momo-fr. -* Fixed: Split code editor and tag editor scripts into their own files to prevent dependency errors. -* Fixed: Handling of single-use shared network snippets. -* Fixed: Minor translation template issues. -* Added: Help tooltop to snippet editor for keyboard shortcuts, thanks to Michael DeWitt. -* Improved: Added button for executing single-use snippets to snippets table. -* Added: Sample snippet for ordering snippets table by name by default. +## [2.13.1] (2019-01-22) + +### Added +* Add menu buttons to settings page for compact menu. +* Help tooltop to snippet editor for keyboard shortcuts, thanks to Michael DeWitt. +* Added button for executing single-use snippets to snippets table. +* Sample snippet for ordering snippets table by name by default. + +### Changed +* French translation updated thanks to momo-fr. * Updated CodeMirror to version 5.43.0. -## 2.13.0 (17 Dec 2018) -* Added: Search/replace functionality to the snippet editor. [See here for a list of keyboard shortcuts.](https://codemirror.net/demo/search.html) [[#](https://wordpress.org/support/topic/feature-request-codemirror-search-and-replace/)] +### Fixed +* Split code editor and tag editor scripts into their own files to prevent dependency errors. +* Handling of single-use shared network snippets. +* Minor translation template issues. + +## [2.13.0] (2018-12-17) + +### Added +* Search/replace functionality to the snippet editor. [See here for a list of keyboard shortcuts.](https://codemirror.net/demo/search.html) [[#](https://wordpress.org/support/topic/feature-request-codemirror-search-and-replace/)] +* Option to make admin menu more compact. +* Added additional styles to editor settings preview. +* PHP linter to code editor. + +### Changed * Updated CodeMirror to version 5.42.0. -* Added: Option to make admin menu more compact. -* Fixed: Problem clearing recently active snippet list. -* Improved: Integration between plugin and the CodeMirror library, to prevent collisions. -* Improved: Added additional styles to editor settings preview. -* Added: PHP linter to code editor. -* Improved: Use external scripts instead of inline scripts. -* Fixed: Missing functionality for 'Auto Close Brackets' and 'Highlight Selection Matches' settings. - -## 2.12.1 (15 Nov 2018) -* Improved: CodeMirror updated to version 5.41.0. -* Improved: Attempt to create database columns that might be missing after a table upgrade. -* Improved: Streamlined upgrade process. -* Fixed: Interface layout on sites using right-to-left languages. -* Improved: Made search box appear at top of page on mobile. [[#](https://wordpress.org/support/topic/small-modification-for-mobile-ux/)] +* Integration between plugin and the CodeMirror library, to prevent collisions. +* Use external scripts instead of inline scripts. + +### Fixed +* Problem clearing recently active snippet list. +* Missing functionality for 'Auto Close Brackets' and 'Highlight Selection Matches' settings. + +## [2.12.1] (2018-11-15) + +### Changed +* CodeMirror updated to version 5.41.0. +* Attempt to create database columns that might be missing after a table upgrade. +* Streamlined upgrade process. +* Made search box appear at top of page on mobile. [[#](https://wordpress.org/support/topic/small-modification-for-mobile-ux/)] * Updated screenshots. -## 2.12.0 (23 Sep 2018) +### Fixed +* Interface layout on sites using right-to-left languages. + +## [2.12.0] (2018-09-23) + +### Added +* Added Import button next to page title on manage page. +* Added coloured banner indicating whether a snippet is active when editing. + +### Changed +* Updated import page to improve usability. +* Updated CodeMirror to 5.40.0. + +### Removed * Removed option for including network-wide snippets in subsite lists on multisite. -* Fixed: Prevented hidden columns setting from reverting to default. -* Improved: Updated import page to improve usability. -* Improved: Added Import button next to page title on manage page. -* Improved: Added coloured banner indicating whether a snippet is active when editing. -* Update CodeMirror to 5.40.0. - -## 2.11.0 (24 Jul 2018) -* Added: Ability to assign a priority to snippets, to determine the order in which they are executed. -* Improvement: The editor cursor position will be preserved when saving a snippet. -* Added: Pressing Ctrl/Cmd + S while writing a snippet will save it. -* Added: Shadow opening PHP tag above the code editor. -* Improved: Updated the message shown when there are no snippets. -* Added: Install sample snippets when the plugin is installed. -* Improved: Show all available tags when selecting the tag field. -* Added: Filter hook for controlling the default list table view. -* Added: Action for cloning snippets. - -## 2.10.2 (21 Jul 2018) -* Added: Button to reset settings to their default values. -* Improved: Made uninstall cleanup optional through a plugin setting. -* Fixed: Applied formatting filters to snippet descriptions in the table. -* Improved: Ordered tags by name in the filter dropdown menu. -* Fixed: Incorrectly translated strings. -* Added: Belarusian translation by Hrank.com. -* Improved: Enabled sorting snippets table by tags. + +### Fixed +* Prevented hidden columns setting from reverting to default. + +## [2.11.0] (2018-07-24) + +### Added +* Ability to assign a priority to snippets, to determine the order in which they are executed. +* Pressing Ctrl/Cmd + S while writing a snippet will save it. +* Shadow opening PHP tag above the code editor. +* Install sample snippets when the plugin is installed. +* Filter hook for controlling the default list table view. +* Action for cloning snippets. + +### Changed +* The editor cursor position will be preserved when saving a snippet. +* Updated the message shown when there are no snippets. +* Show all available tags when selecting the tag field. + +## [2.10.2] (2018-07-21) + +### Added +* Button to reset settings to their default values. +* Belarusian translation by Hrank.com. + +### Changed +* Made uninstall cleanup optional through a plugin setting. +* Ordered tags by name in the filter dropdown menu. +* Enabled sorting snippets table by tags. * Updated CodeMirror to version 5.39.0. -## 2.10.1 (10 Feb 2018) -* Fixed: Prevent errors when trying to export no snippets. -* Fixed: Use wp_json_encode() to encode export data. -* Fixed: Check both the file extension and MIME type of uploaded import files. - -## 2.10.0 (18 Jan 2018) -* Improved: Added support for importing from multiple export files at once. -* Improved: Unbold the titles of inactive snippets for greater visual distinction. -* Added: New scope for single-use snippets. -* Improved: Don't show network snippets on subsites by default, and only to super admins. -* Improved: Export snippets to JSON instead of XML. -* Improved: More options for importing duplicate snippets. -* Improved: Use strings for representing scopes internally instead of numbers. -* Added: Allowed plugin settings to be unified on multisite through Network Settings option. -* Fixed: Issue with incorrectly treating network snippets as site-wide for code validation. -* Improved: Rename 'Export to PHP' to 'Download', and add button to edit snippet page. - -## 2.9.6 (14 Jan 2018) +### Fixed +* Applied formatting filters to snippet descriptions in the table. +* Incorrectly translated strings. + +## [2.10.1] (2018-02-10) + +### Fixed +* Prevent errors when trying to export no snippets. +* Use wp_json_encode() to encode export data. +* Check both the file extension and MIME type of uploaded import files. + +## [2.10.0] (2018-01-18) + +### Added +* Added support for importing from multiple export files at once. +* New scope for single-use snippets. +* Allowed plugin settings to be unified on multisite through Network Settings option. + +### Changed +* Unbold the titles of inactive snippets for greater visual distinction. +* Don't show network snippets on subsites by default, and only to super admins. +* Export snippets to JSON instead of XML. +* More options for importing duplicate snippets. +* Use strings for representing scopes internally instead of numbers. +* Rename 'Export to PHP' to 'Download', and add button to edit snippet page. + +### Fixed +* Issue with incorrectly treating network snippets as site-wide for code validation. + +## [2.9.6] (2018-01-14) + +### Added * Added Brazilian Portuguese translation by [Bruno Borges](http://brunoborges.info) -* Fixed: Use standard WordPress capabilities instead of custom capabilities to prevent lockouts. -* Fixed: Multisite issue with retrieving active shared snippets from the wrong table causing duplicate snippet execution. + +### Changed * Moved scope and other settings on single snippet page to below code area. -## 2.9.5 (13 Jan 2018) -* Fixed: Undefined function error when accessing the database on multisite. -* Fixed: Ensured all admin headings are hierarchical for accessibility. -* Made the "Activate By Default" setting enabled by default for new installs. +### Fixed +* Use standard WordPress capabilities instead of custom capabilities to prevent lockouts. +* Multisite issue with retrieving active shared snippets from the wrong table causing duplicate snippet execution. + +## [2.9.5] (2018-01-13) + +### Changed * Updated CodeMirror to version 5.33. +* Made the "Activate By Default" setting enabled by default for new installations. + +### Fixed +* Undefined function error when accessing the database on multisite. +* Ensured all admin headings are hierarchical for accessibility. -## 2.9.4 (19 Sep 2017) -* Fixed: Prevented PHP error from occurring when saving a snippet. +## [2.9.4] (2017-09-19) + +### Changed * Minor improvements to database creation function. -## 2.9.3 (11 Sep 2017) -* Fixed: Prevent snippets from being executed twice when saving due to invalid ID being passed to allow_execute_snippet filter. -* Fixed: Re-enabled output suppression when executing snippets. +### Fixed +* Prevented PHP error from occurring when saving a snippet. + +## [2.9.3] (2017-09-11) + +### Fixed +* Prevent snippets from being executed twice when saving due to invalid ID being passed to allow_execute_snippet filter. +* Re-enabled output suppression when executing snippets. + +## [2.9.2] (2017-09-08) -## 2.9.2 (08 Sep 2017) -* Fixed: Do not attempt to combine queries for fetching local and multisite snippets. +### Fixed +* Do not attempt to combine queries for fetching local and multisite snippets. + +## [2.9.1] (2017-09-07) + +### Fixed +* Prevent illegal mix of collations errors when fetching snippets from database tables with different collations. + [[#](https://wordpress.org/support/topic/issue-on-multisite-with-wpml/)] + +## [2.9.0] (2017-09-06) -## 2.9.1 (07 Sep 2017) -* Fixed: Prevent illegal mix of collations errors when fetching snippets from database tables with different collations. -[[#](https://wordpress.org/support/topic/issue-on-multisite-with-wpml/)] +### Changed +* Moved code to disable snippet execution into a filter hook. +* execute_active_snippets() function updated with improved efficiency. +* Renamed Snippet class to avoid name collisions with other plugins. +* Don't hide output when executing a snippet. + +### Fixed +* Prevented invalid properties from being set when saving a snippet. +* Use the correct protocol when saving a snippet. +* Active shared snippets not being updated correctly. -## 2.9.0 (06 Sep 2017) -* Fixed: Prevented invalid properties from being set when saving a snippet. -* Fixed: Use the correct protocol when saving a snippet. -* Improved: Moved code to disable snippet execution into a filter hook. -* Fixed: Active shared snippets not being updated correctly. -* Improved: execute_active_snippets() function updated with improved efficiency. -* Improved: Renamed Snippet class to avoid name collisions with other plugins. -* Improved: Don't hide output when executing a snippet. +## [2.8.7] (2017-05-18) -## 2.8.7 (18 May 2017) +### Added * Added French (Canada) translation by Domonic Desbiens. * Added fixes for Indonesian translation by @zmni. -## 2.8.6 (14 May 2017) -* Ensured that get_snippets() function retrieves snippets with the correct 'network' setting. Fixes snippet edit links in network admin. +## [2.8.6] (2017-05-14) + +### Fixed * Fixed snippet description field alias not mapping correctly, causing snippet descriptions to not be displayed in the table or when editing a snippet. +* Ensured that get_snippets() function retrieves snippets with the correct 'network' setting. Fixes snippet edit links in network admin. -## 2.8.5 (13 May 2017) -* Ensured HTML in snippet titles is escaped in snippets table. +## [2.8.5] (2017-05-13) + +### Added * Added Indonesian translation by Jordan Silaen from ChameleonJohn.com . +* Added setting to hide network snippets on subsites. + +### Security +* Ensured HTML in snippet titles is escaped in snippets table. * Disallowed undefined fields to be set on the Snippets class. * Prevented shared network snippets from being included twice in snippets table on multisite. -* Added setting to hide network snippets on subsites. -## 2.8.4 (29 April 2017) +## [2.8.4] (2017-04-29) + +### Fixed * Fixed all snippets being treated as network snippets on non-multisite sites. -## 2.8.3 (29 April 2017) +## [2.8.3] (2017-04-29) + +### Added +* Added more compete output escaping to prevent XSS errors. + +### Changed * Updated CodeMirror to version 5.25.0. * Show network active snippets as read-only on multisite subsites. -* Added more compete output escaping to prevent XSS errors. -## 2.8.2 (27 Feb 2017) +## [2.8.2] (2017-02-27) + +### Fixed * Fix bug introduced in 2.8.1 that broke code verification functionality by executing code twice. -## 2.8.1 (25 Feb 2017) +## [2.8.1] (2017-02-25) + +### Changed * Updated German translation. -* Fixed admin menu items not translating. +* Updated CodeMirror to version 5.24.0. + +### Removed * Removed possible conflict between Debug Bar Console plugin. (#52) + +### Fixed +* Fixed admin menu items not translating. * Corrected editor alignment on RTL sites. ([#](https://wordpress.org/support/topic/suggestion-css-fix-for-rtl-sites/)) * Fixed bulk actions running when Filter button is clicked. ([#](https://wordpress.org/support/topic/bug-with-filtering-action-buttons/)) -* Updated CodeMirror to version 5.24.0. -## 2.8.0 (14 Dec 2016) -* Fixed Italian translation errors. Props to @arsenalemusica. +## [2.8.0] (2016-12-14) + +### Changed * Renamed 'Manage' admin menu label to 'All Snippets' to keep in line with other admin menu labels. * Renamed placeholder on snippet name field to 'Enter title here'. -* Removed CodeMirror search functionality. +* Updated CodeMirror to version 5.21.0. * Moved 'Edit Snippet' admin menu above 'Add New' menu. * Made pressing Ctrl-Enter in the code editor save the snippet. -* Updated CodeMirror to version 5.21.0. -## 2.7.3 (24 Oct 2016) +### Removed +* Removed CodeMirror search functionality. + +### Fixed +* Fixed Italian translation errors. Props to @arsenalemusica. + +## [2.7.3] (2016-10-24) + +### Changed * Updated CodeMirror to version 5.10.0. + +### Fixed * Fixed a few strings not being translated. -## 2.7.2 (01 Oct 2016) +## [2.7.2] (2016-10-01) + +### Changed * Updated German translation by [Mario Siegmann](https://web-alltag.de). -## 2.7.1 (30 Sep 2016) +## [2.7.1] (2016-09-30) + +### Added * Added Dutch translation by Sander Spies. + +### Changed +* Updated CodeMirror to version 5.19.0. + +### Security * Ensured that the editor theme setting is properly validated. Thanks to [Netsparker](https://www.netsparker.com) for reporting. * Ensured that snippet tags are properly escaped. Thanks to [Netsparker](https://www.netsparker.com) for reporting. -* Updated CodeMirror to version 5.19.0. -## 2.7.0 (23 July 2016) +## [2.7.0] (2016-07-23) + +### Added +* Added query var to disable snippet execution. To use, add `?snippets-safe-mode=true` to the URL. + +### Changed +* Updated German translation by [Mario Siegmann](https://web-alltag.de). +* Updated CodeMirror to version 5.17.0. +* Increased default snippets per page so that all are usually shown. + +### Fixed * Fixed plugin translations being loaded. -* Increase default snippets per page so that all are usually shown. * Fixed description field not being imported. -* Updated German translation by [Mario Siegmann](https://web-alltag.de). * Fixed issue with CodeMirror rubyblue theme. [[#](https://wordpress.org/support/topic/a-problem-with-the-cursor-color-and-the-fix-that-worked-for-me)] -* Added query var to disable snippet execution. To use, add `?snippets-safe-mode=true` to the URL. * Fixed snippet fields not importing. -* Updated CodeMirror to version 5.17.0. * Fixed a minor XSS vulnerability discovered by Burak Kelebek. [[#](https://wordpress.org/support/topic/security-vulnerability-20)] -## 2.6.1 (10 Feb 2016) +## [2.6.1] (2016-02-10) + +### Changed * Updated German translation by [Mario Siegmann](https://web-alltag.de). -* Fixed error catching not working correctly. * Updated error catching to work with snippets including functions and classes. + +### Fixed +* Fixed error catching not working correctly. * Fixed editor autoresizing. -## 2.6.0 (31 Dec 2015) +## [2.6.0] (2015-12-31) + +### Added +* Added `[code_snippets]` shortcode for embedding snippet code in a post. +* Added front-end syntax highlighting for shortcode using [PrismJS](https://prismjs.com). + +### Changed +* Updated CodeMirror to version 5.10.0. + +### Removed * Reconfigured plugin to use classloader and converted a lot of functional code into OOP code. -* Updated CodeMirror to version 5.10.0. -* Added `[code_snippets]` shortcode for embedding snippet code in a post. + +### Fixed * Fixed broken snippet search feature. [[#](https://wordpress.org/support/topic/search-is-not-working-6)] -* Added front-end syntax highlighting for shortcode using [PrismJS](https://prismjs.com). -## 2.5.1 (11 Oct 2016) -* Fixed: Ensure errors are fatal before catching them during error checking. -* Fixed: Escape the snippet name on the edit page to ensure it displays correctly. -* Fixed: Exclude snippets with named functions from error checking so they do not run twice. +## [2.5.1] (2016-10-11) + +### Fixed +* Ensure errors are fatal before catching them during error checking. +* Escape the snippet name on the edit page to ensure it displays correctly. +* Exclude snippets with named functions from error checking so they do not run twice. + +## [2.5.0] (2015-10-08) -## 2.5.0 (8 Oct 2015) -* Added: Detect parse and fatal errors in code when saving a snippet, and display a user-friendly message. -* Fixed: Updated access of some methods in Code_Snippets_List_Table class to match updated WP_List_Table class. +### Added +* Detect parse and fatal errors in code when saving a snippet, and display a user-friendly message. + +### Changed +* Updated access of some methods in Code_Snippets_List_Table class to match updated WP_List_Table class. + +## [2.4.2] (2015-09-27) -## 2.4.2 (27 Sep 2015) +### Added * Added query variable to activate safe mode. +* Added settings to disable description and tag editors. + +### Changed +* Updated editor preview updating code to use vanilla JavaScript instead of jQuery. + +### Fixed * Fixed settings not saving. * Fixed snippet descriptions not displaying on manage menu. -* Added settings to disable description and tag editors. -* Fixed: Load CodeMirror after plugin styles to fix error with Zenburn theme. -* Fixed: Hide snippet scope icons when the scope selector is disabled. +* Load CodeMirror after plugin styles to fix error with Zenburn theme. +* Hide snippet scope icons when the scope selector is disabled. * Fixed description heading on edt snippet menu being hidden when visual editor disabled. -* Updated editor preview updating code to use vanilla JavaScript instead of jQuery. -* Fixed: Deactivate a shared network snippet on all subsites when it looses its sharing status. +* Deactivate a shared network snippet on all subsites when it looses its sharing status. + +## [2.4.1] (2015-09-17) -## 2.4.1 (17 Sep 2015) +### Fixed * Fixed CodeMirror themes not being detected on settings page [[#](https://wordpress.org/support/topic/updated-to-240-now-i-cant-switch-theme)] -## 2.4.0 (17 Sep 2015) +## [2.4.0] (2015-09-17) + +### Added * Added ability to share network snippets to individual sites on WordPress multisite. +* Added `code_snippets/after_execute_snippet` filter. +* Added class for individual snippets. + +### Changed * Improved code directory and class structure. -* Remove legacy code for pre-3.6 compatibility. * Improved code for printing admin messages. * Updated German translation (Joerg Knoerchen) -* Added `code_snippets/after_execute_snippet` filter. -* Added class for individual snippets. * Updated `get_snippets()` function to retrieve individual snippets. -* Removed scope statuses and added fixed tags to indicate scope. * Changed admin page headers to use `

` tags instead of `

` tags. * Updated CodeMirror to version 5.6. + +### Removed +* Remove legacy code for pre-3.6 compatibility. +* Removed scope statuses and added fixed tags to indicate scope. * Removed snippet settings page from network admin. -## 2.3.0 (20 May 2015) -* Removed nested functions. +## [2.3.0] (2015-05-20) + +### Added * Added icons for admin and front-end snippets to manage table. +* Added filter switch to prevent a snippet from executing. ([#25](https://github.com/codesnippetspro/code-snippets/issues/25)) + +### Changed * Improved settings retrieval by caching settings. * Updated Russian translation by [Alexey Chumakov](http://chumakov.ru/). -* Added filter switch to prevent a snippet from executing. ([#25](https://github.com/codesnippetspro/code-snippets/issues/25)) + +### Removed +* Removed nested functions. + +### Fixed * Fixed errors in string translation. * Fixed bug in import process. ([#32](https://github.com/codesnippetspro/code-snippets/issues/32)) -## 2.2.3 (13 May 2015) -* Fixed broken call to `export_snippet()` function. +## [2.2.3] (2015-05-13) + +### Added * Added support for importing and exporting snippet scope. -* Fixed duplicate primary key database error. + +### Changed * Improved database table structure. -## 2.2.2 (11 May 2015) -* Polyfilled array_replace_recursive() function for PHP 5.2. +### Fixed +* Fixed broken call to `export_snippet()` function. +* Fixed duplicate primary key database error. + +## [2.2.2] (2015-05-11) + +### Added +* Added statuses for snippet scopes on manage snippets table. + +### Changed * Updated references to old plugin site. -* Resolved JavaScript error on edit snippet pages. * Made minor updates to French translation file. -* Added statuses for snippet scopes on manage snippets table. -## 2.2.1 (10 May 2015) +### Fixed +* Resolved JavaScript error on edit snippet pages. +* Added polyfill for array_replace_recursive() function for PHP 5.2. + +## [2.2.1] (2015-05-10) + +### Fixed * Fixed the default values of new setting not being applied. * Fixed missing background of tags input. -## 2.2.0 (10 May 2015) +## [2.2.0] (2015-05-10) + +### Added * Introduced CodeSniffer testing on code. -* Fixed description heading disappearing when media buttons enabled. * Added snippet scope selector. + +### Changed * Minified all CSS and JS in plugin. * Made CodeMirror theme names more readable. + +### Fixed +* Fixed description heading disappearing when media buttons enabled. * Fixed bug causing translations to not be loaded. -## 2.1.0 (09 May 2015) +## [2.1.0] (2015-05-09) + +### Added * Added additional setting descriptions. * Added settings for code and description editor height. + +### Changed * Updated CodeMirror to version 5.2. -* Fixed not escaping the request URL when using query arg functions. * Improved efficiency of settings component. -## 2.0.3 (17 Mar 2015) +### Fixed +* Fixed not escaping the request URL when using query arg functions. + +## [2.0.3] (2015-03-17) + +### Changed * Updated German translation by [Joerg Knoerchen](https://www.sensorgrafie.de/). -## 2.0.2 (05 Mar 2015) -* Fix error in table creation code. +## [2.0.2] (2015-03-05) + +### Removed * Remove settings database option when plugin is uninstalled. -## 2.0.1 (25 Feb 2015) +### Fixed +* Fix error in table creation code. + +## [2.0.1] (2015-02-25) + +### Fixed * Fixed table creation code not running on upgrade. * Fixed snippets per page option not saving. -## 2.0 (24 Feb 2015) +## [2.0.0] (2015-02-24) -### Highlights. +### Highlights * Better import/export functionality. * New settings page with code editor settings. * Code rewritten for cleaner and more efficient code. * Lots of new translations. -### Added. +### Added * Added link to Code Snippets importer under Snippets admin menu. * Added settings component and admin page. * Added support for different CodeMirror themes. -* Integrated tags component into main plugin. Current users of the Code Snippets Tags plugin can safely uninstall it. * Added Auto Close Brackets CodeMirror addon (props to TronicLabs). * Added Croatian translation by Borisa Djuraskovic from [Web Hosting Hub](https://www.webhostinghub.com). * Added Highlight Selection Matches CodeMirror addon (props to TronicLabs). @@ -569,167 +934,346 @@ Thanks to [Chloe with the Wordfence Threat Intelligence team](https://www.wordfe * Added Russian translation by Alexander Samsonov. * Added Slovak translation by [JΓ‘n FajčÑk] from [WordPress Slovakia](https://wp.sk). * Added setting to always save and activate snippets by default. +* Added braces to single-line conditionals in line with [new coding standards](https://make.wordpress.org/core/2013/11/13/proposed-coding-standards-change-always-require-braces/). ### Changed -* Added braces to single-line conditionals in line with [new coding standards](https://make.wordpress.org/core/2013/11/13/proposed-coding-standards-change-always-require-braces/). -* Split up large classes into separate functions. * Improved plugin file structure. -* Replaced uninstall hook with single file method. * Updated CodeMirror library to version 5.0. +* Split up large classes into separate functions. +* Replaced uninstallation hook with single file method. * Rewritten import/export functionality to use DOMDocument. -* Merged Code_Snippets_Export_PHP class into Code_Snippets_Export class. -### Deprecated +### Removed * Removed old admin style support. * Removed backwards-compatible support. +* Removed duplicate MySQL primary key indexing. + +### Deprecated +* Integrated tags component into main plugin. Current users of the Code Snippets Tags plugin can safely uninstall it. +* Merged Code_Snippets_Export_PHP class into Code_Snippets_Export class. ### Fixed * Fixed incompatibility errors with PHP 5.2. * Fixed empty MO translation files. -* Removed duplicate MySQL primary key indexing. -## 1.9.1.1 (03 Jan 2014) -* Add capability check to site snippets importer. +## [1.9.1.1] (2014-01-03) -## 1.9.1 (02 Jan 2014) +### Fixed +* Added capability check to site snippets importer. + +## [1.9.1] (2014-01-02) + +### Changed * Use an icon font for menu icon instead of embedded SVG. * Use Sass (libsass) instead of Compass. -* Unminify CodeMirror scripts. +* Unminified CodeMirror scripts. + +### Fixed * Fixes for the WP 3.8 interface. * Fix 'enable snippets menu for site admins' multisite setting. -## 1.9 (11 Nov 2013) -* Add and remove network capabilities as super admins are added and removed. -* Updated MP6 icon implementation. -* Replaced buggy trim `` functionality with a much more reliable regex method. ([#](https://wordpress.org/support/topic/character-gets-cut)) +## [1.9.0] (2013-11-11) + +### Added * Added French translation thanks to translator [oWEB](http://office-web.net). -* Fixed snippet failing to save when code contains `%` character, props to [nikan06](https://wordpress.org/support/profile/nikan06). ([#](https://wordpress.org/support/topic/percent-sign-bug)) * Added 'Save & Deactivate' button to the edit snippet page. ([#](https://wordpress.org/support/topic/deactivate-button-in-edit-snippet-page)) -* Removed edit and install capabilities (now only uses the manage capability). -* Fixed HTML breaking in export files. ([#](https://wordpress.org/support/topic/import-problem-7)) -* Make the title of each snippet on the manage page a clickable link to edit the snippet ([#](https://wordpress.org/support/topic/deactivate-button-in-edit-snippet-page?replies=9#post-4682757)) * Added nonce to edit snippet page. -* Hide row actions on manage snippet page by default. -* Removed screenshots from plugin. -* Improved CodeMirror implementation. * Added a fallback MP6 icon. -* Use the proper WordPress database APIs all of the time. -* Rewritten export functionality. -* Fixed incorrect export filename. + +### Changed +* Updated MP6 icon implementation. +* Improved CodeMirror implementation. * Updated CodeMirror to version 3.19. -* Removed CodeMirror bundled with plugin. * Updated WordPress.org plugin banner. +* Add and remove network capabilities as super admins are added and removed. +* Replaced buggy trim `` functionality with a much more reliable regex method. ([#](https://wordpress.org/support/topic/character-gets-cut)) +* Make the title of each snippet on the manage page a clickable link to edit the snippet ([#](https://wordpress.org/support/topic/deactivate-button-in-edit-snippet-page?replies=9#post-4682757)) +* Hide row actions on manage snippet page by default. +* Use the proper WordPress database APIs consistently. +* Rewritten export functionality. + +### Removed +* Removed edit and install capabilities (now only uses the manage capability). +* Removed screenshots from plugin. +* Removed CodeMirror bundled with plugin. + +### Fixed +* Fixed snippet failing to save when code contains `%` character, props to [nikan06](https://wordpress.org/support/profile/nikan06). ([#](https://wordpress.org/support/topic/percent-sign-bug)) +* Fixed HTML breaking in export files. ([#](https://wordpress.org/support/topic/import-problem-7)) +* Fixed incorrect export filename. * Fixed CodeMirror incompatibility with the WP Editor plugin. * Fixed CodeMirror incompatibility with the Debug Bar Console plugin. -## 1.8.1.1 (18 Aug 2013) +## [1.8.1.1] (2013-08-18) + +## [1.8.1] (2013-07-29) -## 1.8.1 (29 July 2013) +### Changed +* Updated CodeMirror to 3.15. * Compiled all CodeMirror scripts into a single file. * Use Sass + Compass for CSS. * Use Grunt for build automation. * Minify CSS. + +### Fixed * Fixed code typo that was breaking export files. -* Updated CodeMirror to 3.15. -## 1.8 (09 Jul 2013) +## [1.8.0] (2013-07-09) + +### Added +* Added error message handling for import snippets page. + +### Changed +* Improved database table creation method: on a single-site install, the snippets table will always be created. On a multisite install, the network snippets table will always be created; the site-specific table will always be created for the main site; for sub-sites the snippets table will only be created on a visit to a snippets admin page. +* Updated to CodeMirror 3.14. * Allow no snippet name or code to be set. * Prevented an error on fresh multisite installations. * Refactored code to use best practices. -* Improved database table creation method: on a single-site install, the snippets table will always be created. On a multisite install, the network snippets table will always be created; the site-specific table will always be created for the main site; for sub-sites the snippets table will only be created on a visit to a snippets admin page. -* Updated to CodeMirror 3.14. + +### Deprecated * Changes to filter and action hook API. -* Added error message handling for import snippets page. -* Don't encode HTML entities in database. -## 1.7.1.2 (03 May 2013) +### Fixed +* Removed encoding of HTML entities in database. + +## [1.7.1.2] (2013-05-03) + +### Fixed * Correct path to admin menu icon. Fixes [#8](https://github.com/codesnippetspro/code-snippets/issues/8) -## 1.7.1.1 (29 Apr 2013) +## [1.7.1.1] (2013-04-29) + +### Fixed * Fixed a bug with custom capabilities and admin menus. -## 1.7.1 (22 Apr 2013) -* Fix a bug with snippet being set as deactivated when saved. -* Updated PHP Documentation completely. [[View online](https://bungeshea.github.io/code-snippets/api)] -* Only load admin functions when viewing dashboard. +## [1.7.1] (2013-04-22) + +### Added * Added German translation thanks to [David Decker](https://deckerweb.de) * Allow or deny site administrators access to snippet admin menus. Set your preference in the **Enable Administration Menus** setting under the *Settings > Network Settings* network admin menu. + +### Changed +* Updated PHP Documentation completely. [[View online](https://bungeshea.github.io/code-snippets/api)] +* Only load admin functions when viewing dashboard. * Improve database table creation and upgrade process. * Optimized to use less database queries. -## 1.7 (26 Mar 2013) -* Improved plugin API. -* Fixed a bug with saving snippets per page option ([#](https://wordpress.org/support/topic/plugin-code-snippets-snippets-per-page-does-not-work#post-3710991)) -* Updated CodeMirror to version 3.11. -* Allow plugin to be activated on individual sites on multisite ([#](https://wordpress.org/support/topic/dont-work-at-multisite)) -* Slimmed down the description visual editor. +### Fixed +* Fix a bug with snippet being set as deactivated when saved. + +## [1.7.0] (2013-03-26) + +### Added * Added icon for the new MP6 admin UI ([#](https://wordpress.org/support/topic/icon-disappears-with-mp6)) +* Allow plugin to be activated on individual sites on multisite ([#](https://wordpress.org/support/topic/dont-work-at-multisite)) * Strip PHP tags from the beginning and end of a snippet on save ([#](https://wordpress.org/support/topic/php-tags)) -* Changed to [MIT license](https://opensource.org/licenses/mit-license.php) -* Removed HTML, CSS and JavaScript CodeMirror modes that were messing things up. * Change label in admin menu when editing a snippet. + +### Changed +* Improved plugin API. +* Updated CodeMirror to version 3.11. +* Changed to [MIT license](https://opensource.org/licenses/mit-license.php) * Improved admin styling. +* Slimmed down the description visual editor. * Made everything leaner, faster, and better. -## 1.6.1 (29 Dec 2012) +### Removed +* Removed HTML, CSS and JavaScript CodeMirror modes that were messing things up. + +### Fixed +* Fixed a bug with saving snippets per page option ([#](https://wordpress.org/support/topic/plugin-code-snippets-snippets-per-page-does-not-work#post-3710991)) + +## [1.6.1] (2012-12-29) + +### Fixed * Fixed a bug with permissions not being applied on install ([#](https://wordpress.org/support/topic/permissions-problem-after-install)) * Fixed a bug in the uninstall method ([#](https://wordpress.org/support/topic/bug-in-delete-script)) -## 1.6 (22 Dec 2012) +## [1.6.0] (2012-12-22) + +### Added +* Current line of code editor is now highlighted. +* Highlight matches of selected text in code editor. + +### Changed +* Code improvements and optimization. * Updated code editor to use CodeMirror 3. * Improved compatibility with Clean Options plugin. -* Code improvements and optimization. * Changed namespace from `cs` to `code_snippets`. +* Improved updating process. * Move css and js under assets. * Organized CodeMirror scripts. -* Improved updating process. -* Current line of code editor is now highlighted. -* Highlight matches of selected text in code editor. -* Only create snippet tables when needed. * Store multisite only options in site options table. +* Only create snippet tables when needed. + +### Fixed * Fixed compatibility bugs with WordPress 3.5. -## 1.5 (18 Sep 2012) +## [1.5.0] (2012-09-18) + +### Added +* Added custom capabilities. +* Added 'Export to PHP' feature. ([#](https://wordpress.org/support/topic/plugin-code-snippets-suggestion-bulk-export-to-php)) +* Added i18n. + +### Changed * Updated CodeMirror to version 2.33. * Updated the 'Manage Snippets' page to use the WP_List_Table class. - * Added 'Screen Options' tab to 'Manage Snippets' page. - * Added search capability to 'Manage Snippets' page. - * Added views to easily filter activated, deactivated and recently activated snippets. - * Added ID column to 'Manage Snippets' page. - * Added sortable name and ID column on 'Manage Snippets' page ([#](https://wordpress.org/support/topic/plugin-code-snippets-suggestion-sort-by-snippet-name)) -* Added custom capabilities. + * Added 'Screen Options' tab to 'Manage Snippets' page. + * Added search capability to 'Manage Snippets' page. + * Added views to easily filter activated, deactivated and recently activated snippets. + * Added ID column to 'Manage Snippets' page. + * Added sortable name and ID column on 'Manage Snippets' page ([#](https://wordpress.org/support/topic/plugin-code-snippets-suggestion-sort-by-snippet-name)) * Improved API. -* Added 'Export to PHP' feature. ([#](https://wordpress.org/support/topic/plugin-code-snippets-suggestion-bulk-export-to-php)) * Lengthened snippet name field to 64 characters. ([#](https://wordpress.org/support/topic/plugin-code-snippets-snippet-title-limited-to-36-characters)) -* Added i18n. -## 1.4 (20 Aug 2012) +## [1.4.0] (2012-08-20) + +### Added * Added interface to Network Dashboard. + +### Changed * Updated uninstall to support multisite. * Replaced EditArea with [CodeMirror](https://codemirror.net). * Small improvements. -## 1.3.2 (17 Aug 2012) +## [1.3.2] (2012-08-17) + +### Fixed * Fixed a bug with version 1.3.1. -## 1.3.1 (17 Aug 2012) +## [1.3.1] (2012-08-17) + +### Changed * Changed plugin website URI. * Cleaned up some code. -## 1.3 (01 Aug 2012) +## [1.3.0] (2012-08-01) + +### Added * Added export option to 'Manage Snippets' page. * Added 'Import Snippets' page. -## 1.2 (29 July 2012) -* Minor improvements. +## [1.2.0] (2012-07-29) + +### Added * Added code highlighting. -* Removed 'Uninstall Plugin' page. + +### Changed +* Minor improvements. * Data will now be cleaned up when plugin is deleted through WordPress admin. -## 1.1 (24 June 2012) +### Removed +* Removed 'Uninstall Plugin' page. + +## [1.1.0] (2012-06-24) + +### Fixed * Fixed a permissions bug with `DISALLOW_FILE_EDIT` being set to true. ([#](https://wordpress.org/support/topic/plugin-code-snippets-cant-add-new)) * Fixed a bug with the page title reading 'Add New Snippet' on the 'Edit Snippets' page. * Fixed a bug not allowing the plugin to be Network Activated. ([#](https://wordpress.org/support/topic/plugin-code-snippets-network-activate-does-not-create-snippets-tables)) -## 1.0 (13 June 2012) +## [1.0.0] (2012-06-13) + +### Added * Stable version released. + +[brandonjp]: https://github.com/brandonjp + +[unreleased]: https://github.com/codesnippetspro/code-snippets/tree/core +[3.6.7]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.6.7 +[3.6.6.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.6.6.1 +[3.6.6]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.6.6 +[3.6.5]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.6.5 +[3.6.4]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.6.4 +[3.6.3]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.6.3 +[3.6.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.6.2 +[3.6.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.6.1 +[3.6.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.6.0 +[3.5.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.5.1 +[3.5.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.5.0 +[3.4.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.4.2 +[3.4.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.4.1 +[3.4.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.4.0 +[3.3.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.3.0 +[3.2.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.2.2 +[3.2.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.2.1 +[3.2.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.2.0 +[3.1.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.1.2 +[3.1.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.1.1 +[3.1.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.1.0 +[3.0.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.0.1 +[3.0.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v3.0.0 +[2.14.6]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.14.6 +[2.14.5]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.14.5 +[2.14.4]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.14.4 +[2.14.3]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.14.3 +[2.14.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.14.2 +[2.14.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.14.1 +[2.14.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.14.0 +[2.13.3]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.13.3 +[2.13.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.13.2 +[2.13.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.13.1 +[2.13.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.13.0 +[2.12.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.12.1 +[2.12.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.12.0 +[2.11.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.11.0 +[2.10.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.10.2 +[2.10.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.10.1 +[2.10.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.10.0 +[2.9.6]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.9.6 +[2.9.5]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.9.5 +[2.9.4]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.9.4 +[2.9.3]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.9.3 +[2.9.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.9.2 +[2.9.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.9.1 +[2.9.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.9.0 +[2.8.7]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.8.7 +[2.8.6]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.8.6 +[2.8.5]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.8.5 +[2.8.4]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.8.4 +[2.8.3]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.8.3 +[2.8.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.8.2 +[2.8.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.8.1 +[2.8.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.8.0 +[2.7.3]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.7.3 +[2.7.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.7.2 +[2.7.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.7.1 +[2.7.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.7.0 +[2.6.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.6.1 +[2.6.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.6.0 +[2.5.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.5.1 +[2.5.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.5.0 +[2.4.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.4.2 +[2.4.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.4.1 +[2.4.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.4.0 +[2.3.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.3.0 +[2.2.3]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.2.3 +[2.2.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.2.2 +[2.2.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.2.1 +[2.2.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.2.0 +[2.1.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.1.0 +[2.0.3]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.0.3 +[2.0.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.0.2 +[2.0.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.0.1 +[2.0.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v2.0.0 +[1.9.1.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.9.1.1 +[1.9.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.9.1 +[1.9.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.9.0 +[1.8.1.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.8.1.1 +[1.8.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.8.1 +[1.8.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.8.0 +[1.7.1.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.7.1.2 +[1.7.1.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.7.1.1 +[1.7.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.7.1 +[1.7.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.7.0 +[1.6.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.6.1 +[1.6.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.6.0 +[1.5.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.5.0 +[1.4.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.4.0 +[1.3.2]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.3.2 +[1.3.1]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.3.1 +[1.3.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.3.0 +[1.2.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.2.0 +[1.1.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.1.0 +[1.0.0]: https://github.com/codesnippetspro/code-snippets/releases/tag/v1.0.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8dbedace..796eef73 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,15 @@ # Contributing to Code Snippets -## Setting things up +## Project structure + +The base plugin folder is not the root of repository – instead, files to be loaded into WordPress as a plugin are +located in `src/`. You should copy or symlink this folder into your WordPress `wp-content/plugins` folder as +`code-snippets`. + +Keep in mind that you will need to follow the steps below to populate files under `src/dist/` and`src/vendor/`, which +are required for the plugin to function correctly. + +## Required software In order to build a copy of Code Snippets from the files in this repository, you will need to prepare a few tools locally, and be comfortable running commands from a terminal or command line interface. @@ -8,22 +17,24 @@ locally, and be comfortable running commands from a terminal or command line int The following tools will need to be installed. - [Composer](https://getcomposer.org/download/) v2 or later. -- [Node.js](https://nodejs.org/en/download/) v14.15 or later with -[npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) v7 or later. +- [Node.js](https://nodejs.org/en/download/) v20.16.0 or later with + [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) v10 or later. Once Node.js and npm are installed, run the following command from inside the plugin directory to install the required node packages: - npm install +```shell +npm install +``` Additionally, run the following command to install the required Composer packages and generate autoload files: - composer install +```shell +npm run bundle +``` -You will also need a system-level copy of [gulp](https://gulpjs.com/docs/en/getting-started/quick-start) in order to -run the build scripts: - - npm install --global gulp-cli +If you want to interface with Composer directly, you will need to run commands under the `src/` directory, as that is +where `composer.json`, `composer.lock`, and the `vendor/` directory are located. ## Building the plugin @@ -34,30 +45,29 @@ plugin can be loaded into WordPress. In order to get things built from the source files, the following command can be used: - gulp +```shell +npm run build +``` -This will run the default `build` gulp task, which: +This will run the basic Webpack configuration, which will: 1. Copies required vendor files from the `node_modules/` directory, such as CodeMirror and PrismJS theme files. -2. Transforms the SCSS source files into browser-ready minified CSS code, including right-to-left files where appropriate. +2. Transforms the SCSS source files into browser-ready minified CSS code, including right-to-left files where + appropriate. 3. Transforms the TypeScript source files into browser-ready minified JavaScript code, after checking with a linter. The generated files will be located together under the `dist/` directory, where they are loaded from by WordPress. -This task can also be run with `gulp build`. More information on the specific tasks available, such as only performing -a single step out of those listed above, can be found by inspecting [`gulpfile.babel.ts`](gulpfile.babel.ts) or running -the following command: - - gulp --tasks - ## Building while developing If you are actively editing the included TypeScript or SCSS sources and wish to see your changes reflected more quickly than running the entire build script, there is an alternative command available that will monitor the source files -for changes and run only the necessary tasks when changes are detected. This can be begun by running the following +for changes and run only the necessary tasks when changes are detected. This can be begun by running the following command: - gulp watch +```shell +npm run watch +``` ## Preparing for release @@ -68,7 +78,9 @@ In order to simplify things and reduce the file size of the distributed plugin p generating these distribution files separately from the plugin source. Running the following command will commence this process: - gulp bundle +```shell +npm run bundle +``` This command will regenerate all processed files and copy those to be distributed to the `bundle/` directory, where they can be copied directly into a Subversion repository or similar for distribution. diff --git a/assets/banner-1544x500.png b/assets/banner-1544x500.png new file mode 100644 index 00000000..f0b5d967 Binary files /dev/null and b/assets/banner-1544x500.png differ diff --git a/assets/banner-772x250.png b/assets/banner-772x250.png new file mode 100644 index 00000000..d4ef98da Binary files /dev/null and b/assets/banner-772x250.png differ diff --git a/assets/blueprints/blueprint.json b/assets/blueprints/blueprint.json new file mode 100644 index 00000000..e69c77d2 --- /dev/null +++ b/assets/blueprints/blueprint.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://playground.wordpress.net/blueprint-schema.json", + "landingPage": "/wp-admin/admin.php?page=snippets", + "preferredVersions": { + "php": "latest", + "wp": "latest" + }, + "phpExtensionBundles": [ + "kitchen-sink" + ], + "features": { + "networking": true + }, + "login": true +} diff --git a/assets/icon.svg b/assets/icon.svg index a93d1e4d..3681c416 100644 --- a/assets/icon.svg +++ b/assets/icon.svg @@ -1,91 +1,26 @@ - - - - image/svg+xml - - - - - - - - - - - - - - - - + xmlns="http://www.w3.org/2000/svg" + width="527.87659" + viewBox="0 0 527.87659 527.89307" + height="527.89307" + version="1.1" + style="fill:none"> + + + + + diff --git a/screenshots/screenshot-1.png b/assets/screenshot-1.png similarity index 100% rename from screenshots/screenshot-1.png rename to assets/screenshot-1.png diff --git a/screenshots/screenshot-2.png b/assets/screenshot-2.png similarity index 100% rename from screenshots/screenshot-2.png rename to assets/screenshot-2.png diff --git a/screenshots/screenshot-3.png b/assets/screenshot-3.png similarity index 100% rename from screenshots/screenshot-3.png rename to assets/screenshot-3.png diff --git a/screenshots/screenshot-4.png b/assets/screenshot-4.png similarity index 100% rename from screenshots/screenshot-4.png rename to assets/screenshot-4.png diff --git a/config/RtlCssPlugin.ts b/config/RtlCssPlugin.ts new file mode 100644 index 00000000..b6fbd940 --- /dev/null +++ b/config/RtlCssPlugin.ts @@ -0,0 +1,50 @@ +import path from 'path' +import rtlcss from 'rtlcss' +import type { Compiler } from 'webpack' +import type { ConfigureOptions } from 'rtlcss' + +export interface WebpackRTLPluginOptions { + entries: Set + rtlcssConfig: ConfigureOptions + transformFilename: (sourceFilename: string) => string +} + +export class RtlCssPlugin { + private readonly options: WebpackRTLPluginOptions + + private static readonly defaultOptions: WebpackRTLPluginOptions = { + entries: new Set(), + rtlcssConfig: {}, + transformFilename: sourceFilename => + `${path.parse(sourceFilename).name}-rtl.css` + } + + constructor(options: Partial) { + this.options = { ...RtlCssPlugin.defaultOptions, ...options } + } + + apply(compiler: Compiler) { + const { Compilation, sources: { ConcatSource } } = compiler.webpack + const rtlcssProcessor = rtlcss.configure(this.options.rtlcssConfig) + + compiler.hooks.compilation.tap(RtlCssPlugin.name, compilation => { + compilation.hooks.processAssets.tap({ + name: RtlCssPlugin.name, + stage: Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL + }, assets => { + for (const chunk of compilation.chunks) { + if (chunk.name && this.options.entries.has(chunk.name)) { + for (const sourceFilename of chunk.files) { + if ('.css' === path.extname(sourceFilename)) { + const rtlFilename = this.options.transformFilename(sourceFilename) + const ltrCss = assets[sourceFilename].source() + const rtlCss = rtlcssProcessor.process(ltrCss).css + compilation.emitAsset(rtlFilename, new ConcatSource(rtlCss), { sourceFilename }) + } + } + } + } + }) + }) + } +} diff --git a/config/modules/postcss-hexrgba.d.ts b/config/modules/postcss-hexrgba.d.ts new file mode 100644 index 00000000..15566acf --- /dev/null +++ b/config/modules/postcss-hexrgba.d.ts @@ -0,0 +1,4 @@ +declare module 'postcss-hexrgba' { + import type { Plugin } from 'postcss' + export default function (): Plugin +} diff --git a/config/webpack-css.ts b/config/webpack-css.ts new file mode 100644 index 00000000..6527cf88 --- /dev/null +++ b/config/webpack-css.ts @@ -0,0 +1,106 @@ +import path from 'path' +import libsass from 'sass' +import cssnano from 'cssnano' +import autoprefixer from 'autoprefixer' +import hexrgba from 'postcss-hexrgba' +import MiniCssExtractPlugin from 'mini-css-extract-plugin' +import RemoveEmptyScriptsPlugin from 'webpack-remove-empty-scripts' +import { glob } from 'glob' +import { RtlCssPlugin } from './RtlCssPlugin' +import type { Configuration, EntryObject } from 'webpack' +import type { Config as PostCssConfig } from 'postcss-load-config' + +const postcssOptions: PostCssConfig = { + plugins: [ + hexrgba(), + autoprefixer(), + cssnano({ + preset: ['default', { discardComments: { removeAll: true } }] + }) + ] +} + +const entriesFromFiles = (patterns: string | string[], entry: (filename: string) => string): EntryObject => + Object.fromEntries( + glob.sync(patterns) + .map(filename => [entry(filename), `./${filename}`]) + ) + +export const cssWebpackConfig: Configuration = { + entry: { + ...entriesFromFiles( + ['src/css/*.scss', '!src/css/**/_*.scss'], + filename => `${path.parse(filename).name}-css` + ), + ...entriesFromFiles( + 'node_modules/codemirror/theme/*.css', + filename => `codemirror-theme-${path.parse(filename).name}` + ) + }, + module: { + rules: [ + { + test: /\.scss$/, + exclude: /node_modules/, + use: [ + MiniCssExtractPlugin.loader, + { + loader: 'css-loader', + options: { + sourceMap: true, + importLoaders: 2 + } + }, + { + loader: 'postcss-loader', + options: { + postcssOptions + } + }, + { + loader: 'sass-loader', + options: { + implementation: libsass, + sourceMap: true + } + } + ] + }, + { + test: /\.css$/, + use: [ + MiniCssExtractPlugin.loader, + { + loader: 'css-loader', + options: { + sourceMap: false, + importLoaders: 1 + } + }, + { + loader: 'postcss-loader', + options: { + postcssOptions: { + plugins: [cssnano()] + } + } + } + ] + } + ] + }, + plugins: [ + new RemoveEmptyScriptsPlugin(), + new MiniCssExtractPlugin({ + filename: ({ chunk }) => + chunk?.name + ? `${chunk.name}.css` + .replace(/^codemirror-theme-/, 'editor-themes/') + .replace(/-css\.css$/, '.css') + : '[name].css' + }), + new RtlCssPlugin({ + entries: new Set(['manage-css', 'edit-css']) + }) + ] +} diff --git a/config/webpack-js.ts b/config/webpack-js.ts new file mode 100644 index 00000000..b8a0d1fb --- /dev/null +++ b/config/webpack-js.ts @@ -0,0 +1,78 @@ +import { join, resolve } from 'path' +import { DefinePlugin } from 'webpack' +import ESLintPlugin from 'eslint-webpack-plugin' +import RemoveEmptyScriptsPlugin from 'webpack-remove-empty-scripts' +import { toCamelCase } from '../src/js/utils/text' +import { dependencies } from '../package.json' +import type { Configuration } from 'webpack' + +const SOURCE_DIR = './src/js' +const DEST_DIR = './src/dist' + +const babelConfig = { + presets: [ + '@babel/preset-env', + '@wordpress/babel-preset-default' + ], + plugins: [ + ['prismjs', { + languages: ['php', 'php-extras'], + plugins: ['line-highlight', 'line-numbers'] + }] + ] +} + +export const jsWebpackConfig: Configuration = { + entry: { + edit: { import: `${SOURCE_DIR}/edit.tsx`, dependOn: 'editor' }, + editor: `${SOURCE_DIR}/editor.ts`, + manage: `${SOURCE_DIR}/manage.ts`, + mce: `${SOURCE_DIR}/mce.ts`, + prism: `${SOURCE_DIR}/prism.ts`, + settings: { import: `${SOURCE_DIR}/settings.ts`, dependOn: 'editor' } + }, + output: { + path: join(resolve(__dirname), '..', DEST_DIR), + filename: '[name].js', + clean: true + }, + externalsType: 'window', + externals: { + 'react': 'React', + 'react-dom': 'ReactDOM', + 'jquery': 'jQuery', + 'tinymce': 'tinymce', + 'codemirror': ['wp', 'CodeMirror'], + ...Object.fromEntries( + Object.keys(dependencies) + .filter(name => name.startsWith('@wordpress/')) + .map(packageName => [ + packageName, + ['wp', toCamelCase(packageName.replace('@wordpress/', ''))] + ]) + ) + }, + resolve: { + modules: [resolve(__dirname, '..', 'node_modules')], + extensions: ['.ts', '.tsx', '.js', '.jsx', '.json'] + }, + module: { + rules: [ + { + test: /\.[jt]sx?$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader', + options: babelConfig + } + } + ] + }, + plugins: [ + new DefinePlugin({ + 'process.arch': JSON.stringify('x64') + }), + new ESLintPlugin(), + new RemoveEmptyScriptsPlugin() + ] +} diff --git a/css/edit/_gpt.scss b/css/edit/_gpt.scss deleted file mode 100644 index ca9cdfb5..00000000 --- a/css/edit/_gpt.scss +++ /dev/null @@ -1,26 +0,0 @@ -.cloud-create-modal { - - .components-modal__content { - min-width: 550px; - } - - .action-buttons { - display: flex; - justify-content: flex-end; - } - - .components-button.is-secondary { - box-shadow: none; - } -} - -.generate-button { - float: right; - display: flex; - align-items: center; - - .dashicons-warning { - color: #b32d2e; - margin-right: 11px; - } -} diff --git a/css/prism.scss b/css/prism.scss deleted file mode 100644 index 6cc975cd..00000000 --- a/css/prism.scss +++ /dev/null @@ -1,17 +0,0 @@ -@import '../node_modules/prismjs/themes/prism.css'; -@import '../node_modules/prismjs/plugins/line-highlight/prism-line-highlight.css'; -@import '../node_modules/prismjs/plugins/line-numbers/prism-line-numbers.css'; -@import '../node_modules/prismjs/plugins/toolbar/prism-toolbar.css'; -@import '../node_modules/prismjs/plugins/inline-color/prism-inline-color.css'; -@import '../node_modules/prismjs/plugins/previewers/prism-previewers.css'; -@import '../node_modules/prismjs/plugins/autolinker/prism-autolinker.css'; - -:not(.is-style-prism-shades-of-purple) pre[class*=language-].line-numbers .line-highlight { - box-sizing: border-box; - padding: 0; - margin: 1em 0 0; -} - -.is-style-prism-coy-without-shadows pre[class*=language-] .line-highlight { - margin-top: 0; -} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100755 index 00000000..17c3abed --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,134 @@ +// @ts-check + +import globals from 'globals' +import eslintJs from '@eslint/js' +import eslintTs from 'typescript-eslint' +import stylistic from '@stylistic/eslint-plugin' +import importPlugin from 'eslint-plugin-import' +import reactPlugin from 'eslint-plugin-react' +import { FlatCompat } from '@eslint/eslintrc' + +const compat = new FlatCompat({ + baseDirectory: import.meta.dirname, + recommendedConfig: eslintJs.configs.recommended +}) + +export default eslintTs.config( + eslintJs.configs.recommended, + ...eslintTs.configs.strictTypeChecked, + ...eslintTs.configs.stylisticTypeChecked, + ...compat.extends('plugin:react-hooks/recommended'), + reactPlugin.configs.flat.recommended, + importPlugin.flatConfigs.recommended, + { + ignores: ['bundle/*', 'src/dist/*', 'src/vendor/*', 'svn/*', 'eslint.config.mjs'] + }, + { + languageOptions: { + ecmaVersion: 2018, + globals: { ...globals.browser }, + parserOptions: { + ecmaVersion: 2018, + ecmaFeatures: { jsx: true }, + tsconfigRootDir: import.meta.dirname, + projectService: { allowDefaultProject: ['eslint.config.mjs'] } + } + }, + plugins: { + '@stylistic': stylistic, + 'react': reactPlugin + }, + settings: { + 'react': { + version: 'detect' + }, + 'import/resolver': { + typescript: { + alwaysTryTypes: true, + project: './tsconfig.json', + } + } + }, + rules: { + '@stylistic/array-bracket-newline': ['error', 'consistent'], + '@stylistic/arrow-parens': ['error', 'as-needed'], + '@stylistic/comma-dangle': ['error', 'only-multiline'], + '@stylistic/dot-location': ['error', 'property'], + '@stylistic/function-call-argument-newline': ['error', 'consistent'], + '@stylistic/indent': ['error', 'tab', { SwitchCase: 1 }], + '@stylistic/jsx-quotes': ['error', 'prefer-double'], + '@stylistic/linebreak-style': ['error', 'unix'], + '@stylistic/max-len': ['warn', 140, { ignorePattern: 'd="([\\s\\S]*?)"' }], + '@stylistic/multiline-ternary': 'off', + '@stylistic/no-extra-parens': ['error', 'all'], + '@stylistic/no-mixed-spaces-and-tabs': ['error', 'smart-tabs'], + '@stylistic/no-tabs': ['error', { allowIndentationTabs: true }], + '@stylistic/object-property-newline': ['error', { allowAllPropertiesOnSameLine: true }], + '@stylistic/operator-linebreak': ['error', 'before'], + '@stylistic/padded-blocks': ['error', 'never'], + '@stylistic/quote-props': ['error', 'consistent-as-needed'], + '@stylistic/quotes': ['error', 'single', { avoidEscape: true }], + '@stylistic/semi': ['error', 'never'], + '@typescript-eslint/await-thenable': 'error', + '@typescript-eslint/ban-ts-comment': 'error', + '@typescript-eslint/consistent-type-assertions': ['error', { + assertionStyle: 'angle-bracket', + objectLiteralTypeAssertions: 'never' + }], + '@typescript-eslint/consistent-type-imports': 'error', + '@typescript-eslint/consistent-type-exports': 'error', + '@typescript-eslint/no-confusing-void-expression': ['error', { ignoreArrowShorthand: true }], + '@typescript-eslint/no-for-in-array': 'error', + '@typescript-eslint/no-import-type-side-effects': 'error', + '@typescript-eslint/no-inferrable-types': ['error', { ignoreProperties: true, ignoreParameters: false }], + '@typescript-eslint/no-unused-vars': ['error', { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + caughtErrorsIgnorePattern: '^_', + ignoreRestSiblings: true + }], + '@typescript-eslint/prefer-includes': 'error', + '@typescript-eslint/prefer-string-starts-ends-with': 'error', + '@typescript-eslint/restrict-template-expressions': ['error', { allowNumber: true }], + 'capitalized-comments': ['warn', 'always', { + ignorePattern: 'translators:', + ignoreInlineComments: true, + ignoreConsecutiveComments: true + }], + 'curly': 'error', + 'dot-notation': 'error', + 'eqeqeq': ['error', 'always'], + 'func-style': ['error', 'expression'], + 'import/export': 'error', + 'import/named': 'error', + 'import/no-duplicates': 'warn', + 'import/no-namespace': 'error', + 'import/no-unresolved': 'error', + 'import/no-useless-path-segments': 'warn', + 'import/order': ['error', { + 'groups': ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object', 'type'], + 'newlines-between': 'never', + 'alphabetize': { orderImportKind: 'asc' } + }], + 'max-lines-per-function': ['warn', { skipBlankLines: true, skipComments: true }], + 'no-invalid-this': 'error', + 'no-magic-numbers': ['error', { ignore: [-1, 0, 1] }], + 'no-plusplus': ['error', { allowForLoopAfterthoughts: true }], + 'no-ternary': 'off', + 'one-var': ['error', 'never'], + 'prefer-named-capture-group': 'error', + 'prefer-template': 'error', + 'sort-imports': ['error', { ignoreDeclarationSort: true }], + 'yoda': ['error', 'always'] + } + }, + { + files: ['**/*.tsx'], + rules: { + '@typescript-eslint/consistent-type-assertions': ['error', { + assertionStyle: 'as', + objectLiteralTypeAssertions: 'never' + }], + } + } +) diff --git a/gulpfile.babel.ts b/gulpfile.babel.ts deleted file mode 100644 index b48f66b0..00000000 --- a/gulpfile.babel.ts +++ /dev/null @@ -1,172 +0,0 @@ -import { src, dest, series, parallel, watch as watchFiles, TaskFunction } from 'gulp' -import replace from 'gulp-replace' -import * as path from 'path' -import { exec } from 'child_process' -import { promises as fs } from 'fs' -import { webpack } from 'webpack' -import del from 'del' -import * as sourcemaps from 'gulp-sourcemaps' -import rename from 'gulp-rename' -import postcss from 'gulp-postcss' -import sass from 'gulp-sass' -import libsass from 'sass' -import cssnano from 'cssnano' -import autoprefixer from 'autoprefixer' -import zip from 'gulp-zip' -import rtlcss from 'gulp-rtlcss' -import cssimport from 'postcss-easy-import' -import hexrgba from 'postcss-hexrgba' -import eslint from 'gulp-eslint-new' -import codesniffer from 'gulp-phpcs' -import removeSourceMaps from 'gulp-remove-sourcemaps' -import * as pkg from './package.json' -import { config as webpackConfig } from './webpack.config' - -const SRC_FILES = { - php: ['*.php', 'php/**/*.php'], - js: ['js/**/*.ts', 'js/**/*.tsx', 'js/**/*.js', 'js/**/*.jsx'], - css: { - all: ['css/**/*.scss'], - source: ['css/*.scss', '!css/**/_*.scss'], - directional: ['edit.css', 'manage.css'] - } -} - -const DEST_DIR = 'dist/' -const BUNDLE_DIR = 'bundle/' - -const BUNDLE_FILES = [ - 'assets/**/*', - 'css/**/*', - 'js/**/*', - 'dist/**/*', - '!dist/**/*.map', - 'php/**/*', - 'vendor/**/*', - 'code-snippets.php', - 'uninstall.php', - 'readme.txt', - 'license.txt' -] - -const transformCss = () => - src(SRC_FILES.css.source) - .pipe(sourcemaps.init()) - .pipe(sass(libsass)().on('error', sass(libsass).logError)) - .pipe(postcss([ - cssimport({ - prefix: '_', - extensions: ['.scss', '.css'] - }), - hexrgba(), - autoprefixer(), - cssnano({ - preset: ['default', { discardComments: { removeAll: true } }] - }) - ])) - .pipe(sourcemaps.write('.')) - .pipe(dest(DEST_DIR)) - -const createRtlCss: TaskFunction = () => - src(SRC_FILES.css.directional.map(file => path.join(DEST_DIR, file))) - .pipe(rename({ suffix: '-rtl' })) - .pipe(sourcemaps.init()) - .pipe(rtlcss()) - .pipe(sourcemaps.write('.')) - .pipe(dest(DEST_DIR)) - -export const css: TaskFunction = series(transformCss, createRtlCss) - -export const lintJs: TaskFunction = () => - src(SRC_FILES.js) - .pipe(eslint()) - .pipe(eslint.format()) - .pipe(eslint.failAfterError()) - -const transformJs: TaskFunction = done => { - webpack({ - ...webpackConfig, - mode: 'development', - devtool: 'eval' - }, done) -} - -export const js: TaskFunction = series(lintJs, transformJs) - -export const phpcs: TaskFunction = () => - src(SRC_FILES.php) - .pipe(codesniffer({ bin: 'vendor/bin/phpcs', showSniffCode: true })) - .pipe(codesniffer.reporter('log')) - -const copyCodeMirrorThemes: TaskFunction = () => - src('node_modules/codemirror/theme/*.css') - .pipe(postcss([cssnano()])) - .pipe(dest(`${DEST_DIR}/editor-themes`)) - -export const vendor: TaskFunction = copyCodeMirrorThemes - -export const clean: TaskFunction = () => del(DEST_DIR) - -export const test = parallel(lintJs, phpcs) - -export const build = series(clean, parallel(vendor, css, js)) - -export default build - -export const version: TaskFunction = parallel( - () => src('./code-snippets.php') - .pipe(replace(/(?Version:\s+|@version\s+)\d+\.\d+[\w-.]+$/mg, `$1${pkg.version}`)) - .pipe(replace(/(?'CODE_SNIPPETS_VERSION',\s+)'[\w-.]+'/, `$1'${pkg.version}'`)) - .pipe(dest('.')), - () => src('./readme.txt') - .pipe(replace(/(?Stable tag:\s+|@version\s+)\d+\.\d+[\w-.]+$/mg, `$1${pkg.version}`)) - .pipe(dest('.')) -) - -export const bundle: TaskFunction = (() => { - const cleanupBefore: TaskFunction = () => - del([BUNDLE_DIR, pkg.name, `${pkg.name}.*.zip`]) - - const composerProduction: TaskFunction = done => - exec('composer install --no-dev', error => { - if (error) throw error - done() - }) - - const composer: TaskFunction = done => - exec('composer install', error => { - if (error) throw error - done() - }) - - const webpackProduction: TaskFunction = done => { - webpack({ ...webpackConfig, mode: 'production' }, done) - } - - const copyFiles: TaskFunction = () => - src(BUNDLE_FILES, { base: '.' }) - .pipe(removeSourceMaps()) - .pipe(dest(pkg.name)) - - const archive: TaskFunction = () => - src(`${pkg.name}/**/*`, { base: '.' }) - .pipe(zip(`${pkg.name}.${pkg.version}.zip`)) - .pipe(dest('.')) - - const cleanupAfter: TaskFunction = done => - fs.rename(pkg.name, BUNDLE_DIR).then(() => done()) - - return series( - parallel(build, cleanupBefore), - parallel(composerProduction, webpackProduction), - copyFiles, - archive, - parallel(composer, cleanupAfter) - ) -})() - -export const watch: TaskFunction = series(build, done => { - watchFiles(SRC_FILES.css.all, series(css)) - watchFiles(SRC_FILES.js, series(js)) - done() -}) diff --git a/js/Edit/SnippetEditor/SnippetEditorToolbar.tsx b/js/Edit/SnippetEditor/SnippetEditorToolbar.tsx deleted file mode 100644 index 85cb25e1..00000000 --- a/js/Edit/SnippetEditor/SnippetEditorToolbar.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import React from 'react' -import { Spinner } from '@wordpress/components' -import { __, isRTL } from '@wordpress/i18n' -import { Button } from '../../common/Button' -import { isNetworkAdmin } from '../../utils/general' -import { useSnippetForm } from '../SnippetForm/context' - -const InlineActivateButton: React.FC = () => { - const { snippet, isWorking, submitAndActivateSnippet, submitAndDeactivateSnippet } = useSnippetForm() - - if (snippet.shared_network && isNetworkAdmin()) { - return null - } - - if ('single-use' === snippet.scope) { - return ( - - ) - } - - return snippet.active ? - : - -} - -const InlineActionButtons: React.FC = () => { - const { isWorking, submitSnippet } = useSnippetForm() - - return ( - <> - {isWorking ? : ''} - - - - - - ) -} - -const RTLControl: React.FC = () => { - const { codeEditorInstance } = useSnippetForm() - - return ( - <> - - - - - ) -} - -export const SnippetEditorToolbar: React.FC = () => -
- {window.CODE_SNIPPETS_EDIT?.extraSaveButtons ? : null} - {isRTL() ? : null} -
diff --git a/js/Edit/buttons/SubmitButton.tsx b/js/Edit/buttons/SubmitButton.tsx deleted file mode 100644 index f722195c..00000000 --- a/js/Edit/buttons/SubmitButton.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import React, { useState } from 'react' -import { __ } from '@wordpress/i18n' -import { Button, ButtonProps } from '../../common/Button' -import { ConfirmDialog } from '../../common/ConfirmDialog' -import { Snippet } from '../../types/Snippet' -import { isNetworkAdmin } from '../../utils/general' -import { useSnippetForm } from '../SnippetForm/context' - -const SaveChangesButton: React.FC = ({ ...props }) => - - -interface ActivateButtonProps { - snippet: Snippet - disabled: boolean - onActivate: VoidFunction - onDeactivate: VoidFunction - primaryActivate: boolean -} - -const ActivateButton: React.FC = ({ - snippet, - disabled, - onActivate, - onDeactivate, - primaryActivate -}) => - <> - {'single-use' === snippet.scope ? - : - - !snippet.shared_network || !isNetworkAdmin() ? - snippet.active ? - : - : ''} - - -const validateSnippet = (snippet: Snippet): undefined | string => { - const missingCode = '' === snippet.code.trim() - const missingTitle = '' === snippet.name.trim() - - switch (true) { - case missingCode && missingTitle: - return __('This snippet has no code or title.', 'code-snippets') - - case missingCode: - return __('This snippet has no snippet code.', 'code-snippets') - - case missingTitle: - return __('This snippet has no title.', 'code-snippets') - - default: - return undefined - } -} - -export const SubmitButton: React.FC = () => { - const { snippet, isWorking, submitSnippet, submitAndActivateSnippet, submitAndDeactivateSnippet } = useSnippetForm() - const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false) - const [submitAction, setSubmitAction] = useState() - - const validationWarning = validateSnippet(snippet) - const activateByDefault = !!window.CODE_SNIPPETS_EDIT?.activateByDefault && - !snippet.active && 'single-use' !== snippet.scope && - (!snippet.shared_network || !isNetworkAdmin()) - - const onSubmit = (submitAction: VoidFunction) => { - if (validationWarning) { - setIsConfirmDialogOpen(true) - setSubmitAction(() => submitAction) - } else { - submitAction() - } - } - - const closeDialog = () => { - setIsConfirmDialogOpen(false) - setSubmitAction(undefined) - } - - const saveChangesButtonProps: ButtonProps = { - disabled: isWorking, - onClick: () => onSubmit(submitSnippet) - } - - return <> - {activateByDefault ? null : } - - onSubmit(submitAndActivateSnippet)} - onDeactivate={() => onSubmit(submitAndDeactivateSnippet)} - /> - - {activateByDefault ? : null} - - { - submitAction?.() - closeDialog() - }} - > -

{`${validationWarning} ${__('Continue?', 'code-snippets')}`}

-
- -} diff --git a/js/Edit/index.tsx b/js/Edit/index.tsx deleted file mode 100644 index 2bce8309..00000000 --- a/js/Edit/index.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom' -import { SnippetForm } from './SnippetForm/SnippetForm' - -const container = document.getElementById('edit-snippet-form-container') -ReactDOM.render(, container) diff --git a/js/editor.ts b/js/editor.ts deleted file mode 100644 index f0d2b954..00000000 --- a/js/editor.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { defineMode, getMode, EditorConfiguration, ModeSpec } from 'codemirror' -import './php-lint' - -type ModeSpecOptions = { - startOpen: boolean -} - -/** Define a new mode which starts the phpmixed mode in php mode instead of html mode */ -defineMode('php-snippet', (config: EditorConfiguration) => - getMode(config, > { - name: 'application/x-httpd-php', - startOpen: true - }) -) diff --git a/js/manage/index.ts b/js/manage/index.ts deleted file mode 100644 index 023f4fc5..00000000 --- a/js/manage/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { handleSnippetActivationSwitches } from './activation' -import { handleSnippetPriorityChanges } from './priority' -import { handleShowCloudPreview } from './cloud' - -handleSnippetActivationSwitches() -handleSnippetPriorityChanges() -handleShowCloudPreview() diff --git a/js/php-lint.ts b/js/php-lint.ts deleted file mode 100644 index 12637f0d..00000000 --- a/js/php-lint.ts +++ /dev/null @@ -1,152 +0,0 @@ -/** - * Based on work distributed under the BSD 3-Clause License (https://rawgit.com/glayzzle/codemirror-linter/master/LICENSE) - */ - -import Parser, { Block, Location, Node } from 'php-parser' -import * as CodeMirror from 'codemirror' - -type Annotation = { message: string, severity: string, from: CodeMirror.Position, to: CodeMirror.Position } - -interface Identifier extends Node { - name: string -} - -interface Declaration extends Node { - name: Identifier | string -} - -class Linter { - private readonly code: string - - private readonly function_names: Set - - private readonly class_names: Set - - public readonly annotations: Annotation[] - - /** - * Constructor. - * @param code - */ - constructor(code: string) { - this.code = code - this.annotations = [] - - this.function_names = new Set() - this.class_names = new Set() - } - - /** - * Lint the provided code. - */ - lint() { - const parser = new Parser({ - parser: { - suppressErrors: true, - // @ts-expect-error types file has not been updated to support version key. - version: 800 - }, - ast: { - withPositions: true - } - }) - - try { - const ast = parser.parseEval(this.code) - - // Process any errors caught by the parser. - if (ast.errors && 0 < ast.errors.length) { - for (const error of ast.errors) { - this.annotate(error.message as string, error.loc) - } - } - - // Visit each node to perform additional checks. - this.visit(ast) - - } catch (error) { - // eslint-disable-next-line no-console - console.error(error) - } - } - - /** - * Visit nodes recursively. - * @param node - */ - visit(node: Node) { - - if (node.kind) { - this.validate(node) - } - - if ('children' in node) { - const block = node as Block - for (const child of block.children) { - this.visit(child) - } - } - } - - /** - * Check whether a given identifier has already been defined, creating an annotation if so. - * @param identifier - * @param registry - * @param label - */ - checkDuplicateIdentifier(identifier: Identifier, registry: Set, label: string) { - if (registry.has(identifier.name)) { - this.annotate(`Cannot redeclare ${label} ${identifier.name}()`, identifier.loc) - } else { - registry.add(identifier.name) - } - } - - /** - * Perform additional validations on nodes. - * @param node - */ - validate(node: Node) { - const decl = node as Declaration - const ident = decl.name as Identifier - - if (!('name' in decl && 'name' in ident) || 'identifier' !== ident.kind) { - return - } - - if ('function' === node.kind) { - this.checkDuplicateIdentifier(ident, this.function_names, 'function') - - } else if ('class' === node.kind) { - this.checkDuplicateIdentifier(ident, this.class_names, 'class') - } - } - - /** - * Create a lint annotation. - * @param message - * @param location - * @param severity - */ - annotate(message: string, location: Location, severity = 'error') { - if (!location.start || !location.end) return - - const [start, end] = location.end.offset < location.start.offset ? - [location.end, location.start] : - [location.start, location.end] - - this.annotations.push({ - message, - severity, - from: CodeMirror.Pos(start.line as number - 1, start.column as number), - to: CodeMirror.Pos(end.line as number - 1, end.column as number) - }) - } -} - -CodeMirror.registerHelper('lint', 'php', (text: string) => { - const linter = new Linter(text) - linter.lint() - - return linter.annotations -}) diff --git a/js/settings/index.ts b/js/settings/index.ts deleted file mode 100644 index e5da4792..00000000 --- a/js/settings/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { handleSettingsTabs } from './tabs' -import { handleEditorPreviewUpdates } from './editor-preview' - -handleSettingsTabs() -handleEditorPreviewUpdates() diff --git a/js/types/ExportSnippets.ts b/js/types/ExportSnippets.ts deleted file mode 100644 index 07b958d7..00000000 --- a/js/types/ExportSnippets.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Snippet } from './Snippet' - -export interface ExportSnippets { - generator: string - date_created: string - snippets: Array -} diff --git a/js/types/Notice.ts b/js/types/Notice.ts deleted file mode 100644 index 4252ce5f..00000000 --- a/js/types/Notice.ts +++ /dev/null @@ -1 +0,0 @@ -export type Notice = ['error' | 'updated', string] diff --git a/js/types/modules/gulp.ts b/js/types/modules/gulp.ts deleted file mode 100644 index e4b4f64c..00000000 --- a/js/types/modules/gulp.ts +++ /dev/null @@ -1,48 +0,0 @@ -declare module 'gulp-rtlcss' { - import { Transform } from 'stream' - import { ConfigOptions } from 'rtlcss' - export default function (config?: ConfigOptions): Transform -} - -declare module 'gulp-remove-sourcemaps' { - import { Transform } from 'stream' - export default function (): Transform -} - -declare module 'postcss-easy-import' { - import { Plugin } from 'postcss' - export default function (opts: { - prefix: string | boolean - extensions: string | string[] - }): Plugin -} - -declare module 'postcss-hexrgba' { - import { Plugin } from 'postcss' - export default function (): Plugin -} - -declare module 'gulp-phpcs' { - import { Transform } from 'stream' - const phpcs: { - (options?: { - bin?: string - severity?: number - warningSeverity?: number - errorSeverity?: number - standard?: string - encoding?: string - report?: string - showSniffCode?: boolean - sniffs?: string[] - ignore?: string[] - cwd?: string - colors?: boolean - }): Transform - reporter(name: 'fail' | 'log' | 'file', options?: { - failOnFirst?: boolean - path?: string - }): Transform - } - export default phpcs -} diff --git a/js/utils/api/wp.ts b/js/utils/api/wp.ts deleted file mode 100644 index 9645eaa9..00000000 --- a/js/utils/api/wp.ts +++ /dev/null @@ -1,18 +0,0 @@ -import axios, { AxiosResponse } from 'axios' -import { trimLeadingChar, trimTrailingChar } from '../general' - -const REST_BASE = window.CODE_SNIPPETS?.restAPI.base ?? '' - -const getRestUrl = (endpoint: string): string => - `${trimTrailingChar(REST_BASE, '/')}/${trimLeadingChar(endpoint, '/')}` - -const GET_CACHE: Record = {} - -export const getCached = (endpoint: string, refresh = false): Promise> => - !refresh && GET_CACHE[endpoint] ? - Promise.resolve(GET_CACHE[endpoint]) : - axios.get(getRestUrl(endpoint)) - .then(response => { - GET_CACHE[endpoint] = response - return response - }) diff --git a/js/utils/general.ts b/js/utils/general.ts deleted file mode 100644 index 63a59b11..00000000 --- a/js/utils/general.ts +++ /dev/null @@ -1,11 +0,0 @@ -export const isNetworkAdmin = (): boolean => - window.pagenow.endsWith('-network') - -export const isMacOS = () => - window.navigator.userAgent.match(/mac/i) - -export const trimLeadingChar = (text: string, character: string): string => - character === text.charAt(0) ? text.slice(1) : text - -export const trimTrailingChar = (text: string, character: string): string => - character === text.charAt(text.length - 1) ? text.slice(0, -1) : text diff --git a/package-lock.json b/package-lock.json index a4cff4ab..ba0cbd27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,107 +1,91 @@ { "name": "code-snippets", - "version": "3.6.4-beta.1", + "version": "3.6.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "code-snippets", - "version": "3.6.4-beta.1", + "version": "3.6.8", "license": "GPL-2.0-or-later", "dependencies": { - "@codemirror/fold": "^0.19.3", - "@jcubic/tagger": "^0.4.5", - "@wordpress/api-fetch": "^6.33.0", - "@wordpress/block-editor": "^12.3.0", - "@wordpress/blocks": "^12.12.0", - "@wordpress/components": "^25.1.0", - "@wordpress/data": "^9.5.0", - "@wordpress/dom-ready": "^3.36.0", - "@wordpress/i18n": "^4.36.0", - "@wordpress/icons": "^9.26.0", - "@wordpress/server-side-render": "^4.12.0", - "axios": "^1.4.0", + "@codemirror/fold": "^0.19.4", + "@wordpress/api-fetch": "^7.17.0", + "@wordpress/block-editor": "^14.12.0", + "@wordpress/blocks": "^14.6.0", + "@wordpress/components": "^29.3.0", + "@wordpress/data": "^10.17.0", + "@wordpress/dom-ready": "^4.17.0", + "@wordpress/i18n": "^5.17.0", + "@wordpress/icons": "^10.17.0", + "@wordpress/server-side-render": "^5.17.0", + "axios": "^1.7.9", + "classnames": "^2.5.1", "codemirror": "^5.29", "codemirror-colorpicker": "^1.9.80", - "php-parser": "github:glayzzle/php-parser#php8", + "php-parser": "^3.2.2", "prismjs": "^1.29.0", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-select": "^5.7.3" + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-select": "^5.10.0" }, "devDependencies": { - "@babel/core": "^7.22.5", - "@babel/preset-env": "^7.22.5", - "@babel/preset-react": "^7.22.5", - "@babel/preset-typescript": "^7.22.5", - "@babel/register": "^7.22.5", - "@types/archiver": "^5.3.2", - "@types/codemirror": "^5.60.8", - "@types/gulp": "^4.0.13", - "@types/gulp-postcss": "^8.0.3", - "@types/gulp-rename": "^2.0.2", - "@types/gulp-sass": "^5.0.1", - "@types/gulp-sourcemaps": "0.0.36", - "@types/gulp-zip": "^4.0.2", - "@types/jquery": "^3.5.16", - "@types/node": "^20.3.2", - "@types/prismjs": "^1.26.0", - "@types/rtlcss": "^3.5.1", - "@types/tinymce": "^4.6.5", - "@types/vinyl": "^2.0.7", - "@types/web": "^0.0.102", - "@types/webpack": "^5", - "@types/wordpress__editor": "^13.6.2", - "@typescript-eslint/eslint-plugin": "^5.60.1", - "@typescript-eslint/parser": "^5.60.1", - "@wordpress/babel-preset-default": "^7.20.0", - "@wordpress/eslint-plugin": "^14.8.0", - "ajv": "^8.12.0", - "autoprefixer": "^10.4.14", - "babel-loader": "^9.1.2", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.20.0", + "@stylistic/eslint-plugin": "^3.1.0", + "@tsconfig/node18": "^18.2.4", + "@types/archiver": "^6.0.3", + "@types/codemirror": "^5.60.15", + "@types/jquery": "^3.5.32", + "@types/node": "^22.13.1", + "@types/prismjs": "^1.26.5", + "@types/react": "^18.3.1", + "@types/react-dom": "^18.3.1", + "@types/rtlcss": "^3.5.4", + "@types/tinymce": "^4.6.9", + "@types/web": "^0.0.202", + "@types/wordpress__editor": "^14.12.0", + "@typescript-eslint/eslint-plugin": "^8.24.0", + "@typescript-eslint/parser": "^8.24.0", + "@wordpress/babel-preset-default": "^8.17.0", + "archiver": "^7.0.1", + "autoprefixer": "^10.4.20", + "babel-loader": "^9.2.1", "babel-plugin-prismjs": "^2.1.0", - "classnames": "^2.3.2", - "cssnano": "^6.0.1", - "del": "^6.1.1", - "eslint": "^8.43.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", - "gulp": "^4.0.2", - "gulp-clean": "^0.4.0", - "gulp-eslint-new": "^1.8.1", - "gulp-flatmap": "^1.0.2", - "gulp-phpcs": "^3.1.0", - "gulp-postcss": "^9.0.1", - "gulp-remove-sourcemaps": "^1.0.5", - "gulp-rename": "^2.0.0", - "gulp-replace": "^1.1.4", - "gulp-rtlcss": "^2.0.0", - "gulp-sass": "^5.1.0", - "gulp-sourcemaps": "^3.0.0", - "gulp-zip": "^5.1.0", - "postcss": "^8.4.24", - "postcss-easy-import": "^4.0.0", + "css-loader": "^7.1.2", + "cssnano": "^7.0.6", + "eslint": "^9.20.1", + "eslint-import-resolver-typescript": "^3.7.0", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-react": "^7.37.4", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-webpack-plugin": "^4.2.0", + "glob": "^11.0.1", + "globals": "^15.14.0", + "mini-css-extract-plugin": "^2.9.2", + "postcss": "^8.5.2", "postcss-hexrgba": "^2.1.0", - "postcss-import": "^15.1.0", - "postcss-prefix-selector": "^1.16.0", - "sass": "^1.63.6", - "typescript": "^5.1.6", - "webpack": "^5.88.1" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "postcss-load-config": "^6.0.1", + "postcss-loader": "^8.1.1", + "rtlcss": "^4.3.0", + "sass": "^1.84.0", + "sass-loader": "^16.0.4", + "style-loader": "^4.0.0", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.7.3", + "typescript-eslint": "^8.24.0", + "webpack": "^5.97.1", + "webpack-cli": "^6.0.1", + "webpack-merge": "^6.0.1", + "webpack-remove-empty-scripts": "^1.0.4" } }, "node_modules/@ampproject/remapping": { "version": "2.2.1", - "dev": true, - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "devOptional": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -110,44 +94,90 @@ "node": ">=6.0.0" } }, + "node_modules/@ariakit/core": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@ariakit/core/-/core-0.4.14.tgz", + "integrity": "sha512-hpzZvyYzGhP09S9jW1XGsU/FD5K3BKsH1eG/QJ8rfgEeUdPS7BvHPt5lHbOeJ2cMrRzBEvsEzLi1ivfDifHsVA==", + "license": "MIT" + }, + "node_modules/@ariakit/react": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/@ariakit/react/-/react-0.4.15.tgz", + "integrity": "sha512-0V2LkNPFrGRT+SEIiObx/LQjR6v3rR+mKEDUu/3tq7jfCZ+7+6Q6EMR1rFaK+XMkaRY1RWUcj/rRDWAUWnsDww==", + "license": "MIT", + "dependencies": { + "@ariakit/react-core": "0.4.15" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ariakit" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@ariakit/react-core": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/@ariakit/react-core/-/react-core-0.4.15.tgz", + "integrity": "sha512-Up8+U97nAPJdyUh9E8BCEhJYTA+eVztWpHoo1R9zZfHd4cnBWAg5RHxEmMH+MamlvuRxBQA71hFKY/735fDg+A==", + "license": "MIT", + "dependencies": { + "@ariakit/core": "0.4.14", + "@floating-ui/dom": "^1.0.0", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/@babel/code-frame": { - "version": "7.22.5", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "license": "MIT", "dependencies": { - "@babel/highlight": "^7.22.5" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.22.5", - "dev": true, + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", + "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.5", - "dev": true, + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", + "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", + "devOptional": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -157,99 +187,80 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/eslint-parser": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.11.0", - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, "node_modules/@babel/generator": { - "version": "7.22.5", - "dev": true, + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.26.2", + "@babel/types": "^7.26.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", + "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.5", - "dev": true, + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.3", + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "semver": "^6.3.0" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -259,13 +270,15 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", + "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.0" + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.1.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -275,104 +288,84 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.0", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "resolve": "^1.14.2" }, "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.5", - "dev": true, + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", "dev": true, "license": "MIT", "engines": { @@ -380,14 +373,15 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -397,132 +391,164 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", + "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "dev": true, + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.5", - "dev": true, + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.22.5", + "node_modules/@babel/parser": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/parser": { - "version": "7.22.5", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", "dev": true, "license": "MIT", - "bin": { - "parser": "bin/babel-parser.js" + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.5", + "version": "7.25.9", + "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.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -532,13 +558,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -547,27 +575,31 @@ "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "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==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, "engines": { - "node": ">=4" + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -575,6 +607,8 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "license": "MIT", "dependencies": { @@ -586,6 +620,8 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "license": "MIT", "dependencies": { @@ -597,6 +633,8 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "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": { @@ -611,6 +649,8 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -622,6 +662,8 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -632,11 +674,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -646,11 +690,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -661,6 +707,8 @@ }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "license": "MIT", "dependencies": { @@ -672,6 +720,8 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "license": "MIT", "dependencies": { @@ -682,11 +732,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -697,6 +749,8 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "license": "MIT", "dependencies": { @@ -708,6 +762,8 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -719,6 +775,8 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "license": "MIT", "dependencies": { @@ -730,6 +788,8 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "license": "MIT", "dependencies": { @@ -741,6 +801,8 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "license": "MIT", "dependencies": { @@ -752,6 +814,8 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "license": "MIT", "dependencies": { @@ -763,6 +827,8 @@ }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "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": { @@ -777,6 +843,8 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "license": "MIT", "dependencies": { @@ -790,11 +858,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -805,6 +875,8 @@ }, "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "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==", "dev": true, "license": "MIT", "dependencies": { @@ -819,11 +891,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -833,14 +907,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -850,13 +925,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -866,11 +943,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", + "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -880,11 +959,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -894,12 +975,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -909,13 +992,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.5", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -925,18 +1009,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", "globals": "^11.1.0" }, "engines": { @@ -946,13 +1029,25 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-classes/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -962,11 +1057,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -976,12 +1073,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -991,11 +1090,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1004,13 +1105,31 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1020,12 +1139,14 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", + "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1035,12 +1156,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1050,11 +1172,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1064,13 +1189,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1080,12 +1207,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1095,11 +1223,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1109,12 +1239,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1124,11 +1255,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1138,12 +1271,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1153,13 +1288,15 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", + "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-simple-access": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1169,14 +1306,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1186,12 +1325,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1201,12 +1342,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1216,11 +1359,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1230,12 +1375,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", + "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1245,12 +1391,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1260,15 +1407,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.5" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1278,12 +1425,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1293,12 +1442,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1308,13 +1458,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1324,11 +1475,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1338,12 +1491,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1353,14 +1508,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1370,25 +1526,13 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1398,44 +1542,17 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.22.5", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz", + "integrity": "sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/plugin-syntax-jsx": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1445,12 +1562,14 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.1" + "@babel/helper-plugin-utils": "^7.25.9", + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" @@ -1460,11 +1579,13 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1474,16 +1595,18 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.22.5", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.7.tgz", + "integrity": "sha512-Y9p487tyTzB0yDYQOtWnC+9HGOuogtP3/wNpun1xJXEEvI6vip59BSBTsHnekZLqxmPcgsrAKt46HAAb//xGhg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.3", - "babel-plugin-polyfill-corejs3": "^0.8.1", - "babel-plugin-polyfill-regenerator": "^0.5.0", - "semver": "^6.3.0" + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1493,11 +1616,13 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1507,12 +1632,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1522,11 +1649,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1536,11 +1665,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1550,11 +1681,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1564,14 +1697,17 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz", + "integrity": "sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.22.5" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1581,11 +1717,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1595,12 +1733,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1610,12 +1750,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1625,12 +1767,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1640,24 +1784,29 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.5", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.7.tgz", + "integrity": "sha512-Gibz4OUdyNqqLj+7OAvBZxOD7CklCtMA5/j0JgUEwOnaRULsPDXmic2iKxL2DX2vQduPR5wH2hjZas/Vr/Oc0g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/compat-data": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.7", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7", "@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.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-assertions": "^7.25.7", + "@babel/plugin-syntax-import-attributes": "^7.25.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", @@ -1669,61 +1818,61 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.5", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.5", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.5", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.5", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.5", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.5", - "@babel/plugin-transform-for-of": "^7.22.5", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.5", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-modules-systemjs": "^7.22.5", - "@babel/plugin-transform-modules-umd": "^7.22.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", - "@babel/plugin-transform-numeric-separator": "^7.22.5", - "@babel/plugin-transform-object-rest-spread": "^7.22.5", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5", - "@babel/plugin-transform-parameters": "^7.22.5", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.5", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.5", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.5", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.3", - "babel-plugin-polyfill-corejs3": "^0.8.1", - "babel-plugin-polyfill-regenerator": "^0.5.0", - "core-js-compat": "^3.30.2", - "semver": "^6.3.0" + "@babel/plugin-transform-arrow-functions": "^7.25.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.7", + "@babel/plugin-transform-async-to-generator": "^7.25.7", + "@babel/plugin-transform-block-scoped-functions": "^7.25.7", + "@babel/plugin-transform-block-scoping": "^7.25.7", + "@babel/plugin-transform-class-properties": "^7.25.7", + "@babel/plugin-transform-class-static-block": "^7.25.7", + "@babel/plugin-transform-classes": "^7.25.7", + "@babel/plugin-transform-computed-properties": "^7.25.7", + "@babel/plugin-transform-destructuring": "^7.25.7", + "@babel/plugin-transform-dotall-regex": "^7.25.7", + "@babel/plugin-transform-duplicate-keys": "^7.25.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7", + "@babel/plugin-transform-dynamic-import": "^7.25.7", + "@babel/plugin-transform-exponentiation-operator": "^7.25.7", + "@babel/plugin-transform-export-namespace-from": "^7.25.7", + "@babel/plugin-transform-for-of": "^7.25.7", + "@babel/plugin-transform-function-name": "^7.25.7", + "@babel/plugin-transform-json-strings": "^7.25.7", + "@babel/plugin-transform-literals": "^7.25.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.7", + "@babel/plugin-transform-member-expression-literals": "^7.25.7", + "@babel/plugin-transform-modules-amd": "^7.25.7", + "@babel/plugin-transform-modules-commonjs": "^7.25.7", + "@babel/plugin-transform-modules-systemjs": "^7.25.7", + "@babel/plugin-transform-modules-umd": "^7.25.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7", + "@babel/plugin-transform-new-target": "^7.25.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.7", + "@babel/plugin-transform-numeric-separator": "^7.25.7", + "@babel/plugin-transform-object-rest-spread": "^7.25.7", + "@babel/plugin-transform-object-super": "^7.25.7", + "@babel/plugin-transform-optional-catch-binding": "^7.25.7", + "@babel/plugin-transform-optional-chaining": "^7.25.7", + "@babel/plugin-transform-parameters": "^7.25.7", + "@babel/plugin-transform-private-methods": "^7.25.7", + "@babel/plugin-transform-private-property-in-object": "^7.25.7", + "@babel/plugin-transform-property-literals": "^7.25.7", + "@babel/plugin-transform-regenerator": "^7.25.7", + "@babel/plugin-transform-reserved-words": "^7.25.7", + "@babel/plugin-transform-shorthand-properties": "^7.25.7", + "@babel/plugin-transform-spread": "^7.25.7", + "@babel/plugin-transform-sticky-regex": "^7.25.7", + "@babel/plugin-transform-template-literals": "^7.25.7", + "@babel/plugin-transform-typeof-symbol": "^7.25.7", + "@babel/plugin-transform-unicode-escapes": "^7.25.7", + "@babel/plugin-transform-unicode-property-regex": "^7.25.7", + "@babel/plugin-transform-unicode-regex": "^7.25.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.38.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1733,67 +1882,32 @@ } }, "node_modules/@babel/preset-modules": { - "version": "0.1.5", + "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==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-react": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-transform-react-display-name": "^7.22.5", - "@babel/plugin-transform-react-jsx": "^7.22.5", - "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/preset-typescript": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-typescript": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/register": { - "version": "7.22.5", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.25.7.tgz", + "integrity": "sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw==", "dev": true, "license": "MIT", "dependencies": { - "clone-deep": "^4.0.1", - "find-cache-dir": "^2.0.0", - "make-dir": "^2.1.0", - "pirates": "^4.0.5", - "source-map-support": "^0.5.16" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "@babel/plugin-syntax-jsx": "^7.25.7", + "@babel/plugin-transform-modules-commonjs": "^7.25.7", + "@babel/plugin-transform-typescript": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1802,61 +1916,66 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "dev": true, - "license": "MIT" - }, "node_modules/@babel/runtime": { - "version": "7.22.5", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", + "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", "license": "MIT", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.22.5", - "dev": true, + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.5", - "dev": true, + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/types": { - "version": "7.22.5", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1864,7 +1983,9 @@ }, "node_modules/@codemirror/fold": { "version": "0.19.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@codemirror/fold/-/fold-0.19.4.tgz", + "integrity": "sha512-0SNSkRSOa6gymD6GauHa3sxiysjPhUC0SRVyTlvL52o0gz9GHdc8kNqNQskm3fBtGGOiSriGwF/kAsajRiGhVw==", + "deprecated": "As of 0.20.0, this package has been merged into @codemirror/language", "dependencies": { "@codemirror/gutter": "^0.19.0", "@codemirror/language": "^0.19.0", @@ -1875,7 +1996,9 @@ }, "node_modules/@codemirror/gutter": { "version": "0.19.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@codemirror/gutter/-/gutter-0.19.9.tgz", + "integrity": "sha512-PFrtmilahin1g6uL27aG5tM/rqR9DZzZYZsIrCXA5Uc2OFTFqx4owuhoU9hqfYxHp5ovfvBwQ+txFzqS4vog6Q==", + "deprecated": "As of 0.20.0, this package has been merged into @codemirror/view", "dependencies": { "@codemirror/rangeset": "^0.19.0", "@codemirror/state": "^0.19.0", @@ -1884,7 +2007,8 @@ }, "node_modules/@codemirror/language": { "version": "0.19.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-0.19.10.tgz", + "integrity": "sha512-yA0DZ3RYn2CqAAGW62VrU8c4YxscMQn45y/I9sjBlqB1e2OTQLg4CCkMBuMSLXk4xaqjlsgazeOQWaJQOKfV8Q==", "dependencies": { "@codemirror/state": "^0.19.0", "@codemirror/text": "^0.19.0", @@ -1895,25 +2019,31 @@ }, "node_modules/@codemirror/rangeset": { "version": "0.19.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.9.tgz", + "integrity": "sha512-V8YUuOvK+ew87Xem+71nKcqu1SXd5QROMRLMS/ljT5/3MCxtgrRie1Cvild0G/Z2f1fpWxzX78V0U4jjXBorBQ==", + "deprecated": "As of 0.20.0, this package has been merged into @codemirror/state", "dependencies": { "@codemirror/state": "^0.19.0" } }, "node_modules/@codemirror/state": { "version": "0.19.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-0.19.9.tgz", + "integrity": "sha512-psOzDolKTZkx4CgUqhBQ8T8gBc0xN5z4gzed109aF6x7D7umpDRoimacI/O6d9UGuyl4eYuDCZmDFr2Rq7aGOw==", "dependencies": { "@codemirror/text": "^0.19.0" } }, "node_modules/@codemirror/text": { "version": "0.19.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz", + "integrity": "sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA==", + "deprecated": "As of 0.20.0, this package has been merged into @codemirror/state" }, "node_modules/@codemirror/view": { "version": "0.19.48", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-0.19.48.tgz", + "integrity": "sha512-0eg7D2Nz4S8/caetCTz61rK0tkHI17V/d15Jy0kLOT8dTLGGNJUponDnW28h2B6bERmPlVHKh8MJIr5OCp1nGw==", "dependencies": { "@codemirror/rangeset": "^0.19.5", "@codemirror/state": "^0.19.3", @@ -1922,9 +2052,44 @@ "w3c-keyname": "^2.2.4" } }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.17.0" + } + }, "node_modules/@emotion/babel-plugin": { "version": "11.11.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", @@ -1939,9 +2104,15 @@ "stylis": "4.2.0" } }, + "node_modules/@emotion/babel-plugin/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==" + }, "node_modules/@emotion/cache": { "version": "11.11.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", "dependencies": { "@emotion/memoize": "^0.8.1", "@emotion/sheet": "^1.2.2", @@ -1952,7 +2123,8 @@ }, "node_modules/@emotion/css": { "version": "11.11.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.11.2.tgz", + "integrity": "sha512-VJxe1ucoMYMS7DkiMdC2T7PWNbrEI0a39YRiyDvK2qq4lXwjRbVP/z4lpG+odCsRzadlR+1ywwrTzhdm5HNdew==", "dependencies": { "@emotion/babel-plugin": "^11.11.0", "@emotion/cache": "^11.11.0", @@ -1963,22 +2135,26 @@ }, "node_modules/@emotion/hash": { "version": "0.9.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" }, "node_modules/@emotion/is-prop-valid": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", "dependencies": { "@emotion/memoize": "^0.8.1" } }, "node_modules/@emotion/memoize": { "version": "0.8.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" }, "node_modules/@emotion/react": { "version": "11.11.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.11.0", @@ -2000,7 +2176,8 @@ }, "node_modules/@emotion/serialize": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", "dependencies": { "@emotion/hash": "^0.9.1", "@emotion/memoize": "^0.8.1", @@ -2011,11 +2188,13 @@ }, "node_modules/@emotion/sheet": { "version": "1.2.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" }, "node_modules/@emotion/styled": { "version": "11.11.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.11.0", @@ -2036,40 +2215,32 @@ }, "node_modules/@emotion/unitless": { "version": "0.8.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", "peerDependencies": { "react": ">=16.8.0" } }, "node_modules/@emotion/utils": { "version": "1.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" }, "node_modules/@emotion/weak-memoize": { "version": "0.3.1", - "license": "MIT" - }, - "node_modules/@es-joy/jsdoccomment": { - "version": "0.36.1", - "dev": true, - "license": "MIT", - "dependencies": { - "comment-parser": "1.3.1", - "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "~3.1.0" - }, - "engines": { - "node": "^14 || ^16 || ^17 || ^18 || ^19" - } + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, "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" }, @@ -2081,22 +2252,54 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "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/core": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", + "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", + "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": "2.0.3", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", - "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", @@ -2104,7 +2307,7 @@ "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" @@ -2112,8 +2315,9 @@ }, "node_modules/@eslint/eslintrc/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2126,14 +2330,13 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2141,31 +2344,78 @@ }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/@eslint/js": { - "version": "8.43.0", + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", + "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", "dev": true, "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "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, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.10.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "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/@floating-ui/core": { - "version": "1.3.1", - "license": "MIT" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } }, "node_modules/@floating-ui/dom": { - "version": "1.4.2", - "license": "MIT", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", "dependencies": { - "@floating-ui/core": "^1.3.1" + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" } }, "node_modules/@floating-ui/react-dom": { - "version": "1.0.0", - "license": "MIT", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", "dependencies": { "@floating-ui/dom": "^1.0.0" }, @@ -2174,207 +2424,269 @@ "react-dom": ">=16.8.0" } }, - "node_modules/@gulp-sourcemaps/identity-map": { - "version": "2.0.1", + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^6.4.1", - "normalize-path": "^3.0.0", - "postcss": "^7.0.16", - "source-map": "^0.6.0", - "through2": "^3.0.1" - }, + "license": "Apache-2.0", "engines": { - "node": ">= 0.10" + "node": ">=18.18.0" } }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/acorn": { - "version": "6.4.2", + "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, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=0.4.0" + "node": ">=18.18.0" } }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/picocolors": { - "version": "0.2.1", + "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, - "license": "ISC" + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/postcss": { - "version": "7.0.39", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, + "license": "Apache-2.0", "engines": { - "node": ">=6.0.0" + "node": ">=12.22" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/source-map": { - "version": "0.6.1", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true, - "license": "BSD-3-Clause", + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/through2": { - "version": "3.0.2", + "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": "MIT", "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" + "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/@gulp-sourcemaps/map-sources": { - "version": "1.0.0", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "license": "MIT", - "dependencies": { - "normalize-path": "^2.0.1", - "through2": "^2.0.3" + "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, "engines": { - "node": ">= 0.10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@gulp-sourcemaps/map-sources/node_modules/normalize-path": { - "version": "2.1.1", + "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": { - "remove-trailing-separator": "^1.0.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", + "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": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=10.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.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": "Apache-2.0", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=12.22" + "node": ">=12" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", + "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, - "license": "BSD-3-Clause" - }, - "node_modules/@jcubic/tagger": { - "version": "0.4.5", - "license": "MIT" + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", + "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==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "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.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "dev": true, - "license": "MIT", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "dev": true, - "license": "MIT", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "dev": true, - "license": "MIT", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "devOptional": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "dev": true, - "license": "MIT", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "dev": true, - "license": "MIT" - }, "node_modules/@lezer/common": { "version": "0.15.12", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz", + "integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==" }, "node_modules/@lezer/lr": { "version": "0.15.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz", + "integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==", "dependencies": { "@lezer/common": "^0.15.0" } }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-scope": "5.1.1" - } - }, "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" @@ -2385,16 +2697,18 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2403,86 +2717,349 @@ "node": ">= 8" } }, - "node_modules/@popperjs/core": { - "version": "2.11.8", + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" + "engines": { + "node": ">=12.4.0" } }, - "node_modules/@radix-ui/primitive": { - "version": "1.0.1", + "node_modules/@parcel/watcher": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", + "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", + "dev": true, + "hasInstallScript": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/runtime": "^7.13.10" - } - }, - "node_modules/@radix-ui/react-arrow": { - "version": "1.0.3", + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.0", + "@parcel/watcher-darwin-arm64": "2.5.0", + "@parcel/watcher-darwin-x64": "2.5.0", + "@parcel/watcher-freebsd-x64": "2.5.0", + "@parcel/watcher-linux-arm-glibc": "2.5.0", + "@parcel/watcher-linux-arm-musl": "2.5.0", + "@parcel/watcher-linux-arm64-glibc": "2.5.0", + "@parcel/watcher-linux-arm64-musl": "2.5.0", + "@parcel/watcher-linux-x64-glibc": "2.5.0", + "@parcel/watcher-linux-x64-musl": "2.5.0", + "@parcel/watcher-win32-arm64": "2.5.0", + "@parcel/watcher-win32-ia32": "2.5.0", + "@parcel/watcher-win32-x64": "2.5.0" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", + "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", + "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@radix-ui/react-collection": { - "version": "1.0.3", + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", + "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", + "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@radix-ui/react-compose-refs": { + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", + "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", + "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", + "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", + "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", + "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", + "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", + "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", + "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", + "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@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, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@radix-ui/primitive": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } } }, - "node_modules/@radix-ui/react-context": { + "node_modules/@radix-ui/react-compose-refs": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" @@ -2497,8 +3074,10 @@ } } }, - "node_modules/@radix-ui/react-direction": { + "node_modules/@radix-ui/react-context": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" @@ -2513,16 +3092,27 @@ } } }, - "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.0.4", + "node_modules/@radix-ui/react-dialog": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz", + "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/primitive": "1.0.1", "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-escape-keydown": "1.0.3" + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" }, "peerDependencies": { "@types/react": "*", @@ -2539,18 +3129,18 @@ } } }, - "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.0.5", + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", + "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/primitive": "1.0.1", "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-menu": "2.0.5", "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-controllable-state": "1.0.1" + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" }, "peerDependencies": { "@types/react": "*", @@ -2569,6 +3159,8 @@ }, "node_modules/@radix-ui/react-focus-guards": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" @@ -2584,7 +3176,9 @@ } }, "node_modules/@radix-ui/react-focus-scope": { - "version": "1.0.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", + "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -2609,6 +3203,8 @@ }, "node_modules/@radix-ui/react-id": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -2624,89 +3220,10 @@ } } }, - "node_modules/@radix-ui/react-menu": { - "version": "2.0.5", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.4", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.3", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-popper": "1.1.2", - "@radix-ui/react-portal": "1.0.3", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-roving-focus": "1.0.4", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-callback-ref": "1.0.1", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.5" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-popper": { - "version": "1.1.2", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-use-rect": "1.0.1", - "@radix-ui/react-use-size": "1.0.1", - "@radix-ui/rect": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-popper/node_modules/@floating-ui/react-dom": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "@floating-ui/dom": "^1.3.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@radix-ui/react-portal": { - "version": "1.0.3", + "node_modules/@radix-ui/react-portal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", + "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -2729,6 +3246,8 @@ }, "node_modules/@radix-ui/react-presence": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", + "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -2752,6 +3271,8 @@ }, "node_modules/@radix-ui/react-primitive": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -2772,38 +3293,10 @@ } } }, - "node_modules/@radix-ui/react-roving-focus": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-controllable-state": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, "node_modules/@radix-ui/react-slot": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -2821,6 +3314,8 @@ }, "node_modules/@radix-ui/react-use-callback-ref": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" @@ -2837,6 +3332,8 @@ }, "node_modules/@radix-ui/react-use-controllable-state": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -2854,6 +3351,8 @@ }, "node_modules/@radix-ui/react-use-escape-keydown": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -2871,6 +3370,8 @@ }, "node_modules/@radix-ui/react-use-layout-effect": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" @@ -2885,50 +3386,10 @@ } } }, - "node_modules/@radix-ui/react-use-rect": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/rect": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-size": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/rect": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - } - }, "node_modules/@react-spring/animated": { "version": "9.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.3.tgz", + "integrity": "sha512-5CWeNJt9pNgyvuSzQH+uy2pvTg8Y4/OisoscZIR8/ZNLIOI+CatFBhGZpDGTF/OzdNFsAoGk3wiUYTwoJ0YIvw==", "dependencies": { "@react-spring/shared": "~9.7.3", "@react-spring/types": "~9.7.3" @@ -2939,7 +3400,8 @@ }, "node_modules/@react-spring/core": { "version": "9.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.3.tgz", + "integrity": "sha512-IqFdPVf3ZOC1Cx7+M0cXf4odNLxDC+n7IN3MDcVCTIOSBfqEcBebSv+vlY5AhM0zw05PDbjKrNmBpzv/AqpjnQ==", "dependencies": { "@react-spring/animated": "~9.7.3", "@react-spring/shared": "~9.7.3", @@ -2955,7 +3417,8 @@ }, "node_modules/@react-spring/shared": { "version": "9.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.3.tgz", + "integrity": "sha512-NEopD+9S5xYyQ0pGtioacLhL2luflh6HACSSDUZOwLHoxA5eku1UPuqcJqjwSD6luKjjLfiLOspxo43FUHKKSA==", "dependencies": { "@react-spring/types": "~9.7.3" }, @@ -2965,11 +3428,13 @@ }, "node_modules/@react-spring/types": { "version": "9.7.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.3.tgz", + "integrity": "sha512-Kpx/fQ/ZFX31OtlqVEFfgaD1ACzul4NksrvIgYfIFq9JpDHFwQkMVZ10tbo0FU/grje4rcL4EIrjekl3kYwgWw==" }, "node_modules/@react-spring/web": { "version": "9.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.3.tgz", + "integrity": "sha512-BXt6BpS9aJL/QdVqEIX9YoUy8CE6TJrU0mNCqSoxdXlIeNcEBWOfIyE6B14ENNsyQKS3wOWkiJfco0tCr/9tUg==", "dependencies": { "@react-spring/animated": "~9.7.3", "@react-spring/core": "~9.7.3", @@ -2981,9 +3446,104 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@tannin/compile": { + "node_modules/@remote-ui/rpc": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@remote-ui/rpc/-/rpc-1.4.5.tgz", + "integrity": "sha512-Cr+06niG/vmE4A9YsmaKngRuuVSWKMY42NMwtZfy+gctRWGu6Wj9BWuMJg5CEp+JTkRBPToqT5rqnrg1G/Wvow==", + "license": "MIT" + }, + "node_modules/@rtsao/scc": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@shopify/web-worker": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@shopify/web-worker/-/web-worker-6.4.0.tgz", + "integrity": "sha512-RvY1mgRyAqawFiYBvsBkek2pVK4GVpV9mmhWFCZXwx01usxXd2HMhKNTFeRYhSp29uoUcfBlKZAwCwQzt826tg==", + "license": "MIT", + "dependencies": { + "@remote-ui/rpc": "^1.2.5" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": "^5.38.0", + "webpack-virtual-modules": "^0.4.3 || ^0.5.0 || ^0.6.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "webpack": { + "optional": true + }, + "webpack-virtual-modules": { + "optional": true + } + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@stylistic/eslint-plugin": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-3.1.0.tgz", + "integrity": "sha512-pA6VOrOqk0+S8toJYhQGv2MWpQQR0QpeUo9AhNkC49Y26nxBQ/nH1rta9bUU1rPw2fJ1zZEMV5oCX5AazT7J2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^8.13.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@tannin/compile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@tannin/compile/-/compile-1.1.0.tgz", + "integrity": "sha512-n8m9eNDfoNZoxdvWiTfW/hSPhehzLJ3zW7f8E7oT6mCROoMNWCB4TYtv041+2FMAxweiE0j7i1jubQU4MEC/Gg==", "dependencies": { "@tannin/evaluate": "^1.2.0", "@tannin/postfix": "^1.1.0" @@ -2991,29 +3551,70 @@ }, "node_modules/@tannin/evaluate": { "version": "1.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@tannin/evaluate/-/evaluate-1.2.0.tgz", + "integrity": "sha512-3ioXvNowbO/wSrxsDG5DKIMxC81P0QrQTYai8zFNY+umuoHWRPbQ/TuuDEOju9E+jQDXmj6yI5GyejNuh8I+eg==" }, "node_modules/@tannin/plural-forms": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@tannin/plural-forms/-/plural-forms-1.1.0.tgz", + "integrity": "sha512-xl9R2mDZO/qiHam1AgMnAES6IKIg7OBhcXqy6eDsRCdXuxAFPcjrej9HMjyCLE0DJ/8cHf0i5OQTstuBRhpbHw==", "dependencies": { "@tannin/compile": "^1.1.0" } }, "node_modules/@tannin/postfix": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@tannin/postfix/-/postfix-1.1.0.tgz", + "integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw==" }, "node_modules/@trysound/sax": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true, "license": "ISC", "engines": { "node": ">=10.13.0" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node18": { + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.4.tgz", + "integrity": "sha512-5xxU8vVs9/FNcvm3gE07fPbn9tl6tqGGWA9tSlwsUEkBxtRnTsNmwrV8gasZ9F/EobaSv9+nu8AxUKccw77JpQ==", + "dev": true + }, "node_modules/@types/archiver": { - "version": "5.3.2", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-6.0.3.tgz", + "integrity": "sha512-a6wUll6k3zX6qs5KlxIggs1P1JcYJaTCx2gnlr+f0S1yd2DoaEwoIK10HmBaLnZwWneBz+JBm0dwcZu0zECBcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3021,16 +3622,19 @@ } }, "node_modules/@types/codemirror": { - "version": "5.60.8", + "version": "5.60.15", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz", + "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==", "dev": true, - "license": "MIT", "dependencies": { "@types/tern": "*" } }, "node_modules/@types/eslint": { - "version": "8.40.2", - "dev": true, + "version": "8.56.11", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.11.tgz", + "integrity": "sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q==", + "devOptional": true, "license": "MIT", "dependencies": { "@types/estree": "*", @@ -3038,8 +3642,10 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "dev": true, + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "devOptional": true, "license": "MIT", "dependencies": { "@types/eslint": "*", @@ -3047,2471 +3653,2808 @@ } }, "node_modules/@types/estree": { - "version": "1.0.1", - "dev": true, + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "devOptional": true, "license": "MIT" }, - "node_modules/@types/expect": { - "version": "1.20.4", + "node_modules/@types/gradient-parser": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@types/gradient-parser/-/gradient-parser-0.1.3.tgz", + "integrity": "sha512-XDbrTSBlQV9nxE1GiDL3FaOPy4G/KaJkhDutBX48Kg8CYZMBARyyDFGCWfWJn4pobmInmwud1xxH7VJMAr0CKQ==" + }, + "node_modules/@types/highlight-words-core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/highlight-words-core/-/highlight-words-core-1.2.1.tgz", + "integrity": "sha512-9VZUA5omXBfn+hDxFjUDu1FOJTBM3LmvqfDey+Z6Aa8B8/JmF5SMj6FBrjfgJ/Q3YXOZd3qyTDfJyMZSs/wCUA==" + }, + "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/glob-stream": { - "version": "8.0.0", + "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/node": "*", - "@types/picomatch": "*", - "@types/streamx": "*" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/@types/gulp": { - "version": "4.0.13", + "node_modules/@types/istanbul-reports": { + "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/undertaker": ">=1.2.6", - "@types/vinyl-fs": "*", - "chokidar": "^3.3.1" + "@types/istanbul-lib-report": "*" } }, - "node_modules/@types/gulp-postcss": { - "version": "8.0.3", + "node_modules/@types/jquery": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.32.tgz", + "integrity": "sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/vinyl": "*" + "@types/sizzle": "*" } }, - "node_modules/@types/gulp-rename": { - "version": "2.0.2", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "devOptional": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, + "license": "MIT" + }, + "node_modules/@types/mousetrap": { + "version": "1.6.14", + "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.14.tgz", + "integrity": "sha512-aY69yje/bZllr99dbIcQwB365YDH/9myLodpxQ8cQZhGfavICi389aRvwa5LUoW+gTpcZKHjVI/sc0dDjUqVuw==" + }, + "node_modules/@types/node": { + "version": "22.13.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz", + "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==", + "devOptional": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/vinyl": "*" + "undici-types": "~6.20.0" } }, - "node_modules/@types/gulp-sass": { - "version": "5.0.1", + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + }, + "node_modules/@types/prismjs": { + "version": "1.26.5", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz", + "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==", "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.10", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.10.tgz", + "integrity": "sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A==" + }, + "node_modules/@types/react": { + "version": "18.3.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", + "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/node-sass": "*" + "@types/prop-types": "*", + "csstype": "^3.0.2" } }, - "node_modules/@types/gulp-sourcemaps": { - "version": "0.0.36", - "dev": true, + "node_modules/@types/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/vinyl": "*" + "@types/react": "*" } }, - "node_modules/@types/gulp-zip": { - "version": "4.0.2", - "dev": true, - "license": "MIT", + "node_modules/@types/react-transition-group": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.9.tgz", + "integrity": "sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==", "dependencies": { - "@types/node": "*" + "@types/react": "*" } }, - "node_modules/@types/jquery": { - "version": "3.5.16", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/sizzle": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.12", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mousetrap": { - "version": "1.6.11", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "20.3.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node-sass": { - "version": "4.11.3", + "node_modules/@types/readdir-glob": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.5.tgz", + "integrity": "sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "license": "MIT" - }, - "node_modules/@types/picomatch": { - "version": "2.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/prismjs": { - "version": "1.26.0", + "node_modules/@types/rtlcss": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@types/rtlcss/-/rtlcss-3.5.4.tgz", + "integrity": "sha512-MgGlOoTwu0SjpqBqVr9vwwezysD+ZoM0q6eS3ULAYuoKDYBlJMVz73Du/paSER9AOxv/UepGfcAzeO5otP72aQ==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "18.2.14", - "license": "MIT", "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "postcss": "^8.2.x" } }, - "node_modules/@types/react-dom": { - "version": "18.2.6", + "node_modules/@types/simple-peer": { + "version": "9.11.8", + "resolved": "https://registry.npmjs.org/@types/simple-peer/-/simple-peer-9.11.8.tgz", + "integrity": "sha512-rvqefdp2rvIA6wiomMgKWd2UZNPe6LM2EV5AuY3CPQJF+8TbdrL5TjYdMf0VAjGczzlkH4l1NjDkihwbj3Xodw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/react": "*" + "@types/node": "*" } }, - "node_modules/@types/react-transition-group": { - "version": "4.4.6", - "license": "MIT", - "dependencies": { - "@types/react": "*" - } + "node_modules/@types/sizzle": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.6.tgz", + "integrity": "sha512-m04Om5Gz6kbjUwAQ7XJJQ30OdEFsSmAVsvn4NYwcTRyMVpKKa1aPuESw1n2CxS5fYkOQv3nHgDKeNa8e76fUkw==", + "dev": true }, - "node_modules/@types/readdir-glob": { - "version": "1.1.1", + "node_modules/@types/tern": { + "version": "0.23.7", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.7.tgz", + "integrity": "sha512-0YS9XCZ0LAhlP11HV9SqncUYyz9Ggsgc7Om/AmchKvoeFyj0qPaJmX6rJ93mJVExizWDzUMb49gAtVpI1uHd8Q==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "*" + "@types/estree": "*" } }, - "node_modules/@types/rtlcss": { - "version": "3.5.1", + "node_modules/@types/tinymce": { + "version": "4.6.9", + "resolved": "https://registry.npmjs.org/@types/tinymce/-/tinymce-4.6.9.tgz", + "integrity": "sha512-pDxBUlV4v1jgJ97SlnVOSyf3KUy3OQ3s5Ddpfh1L9M5lXlBmX7TJ2OLSozx1WBxp91acHvYPWDwz2U/kMM1oxQ==", "dev": true, - "license": "MIT", "dependencies": { - "postcss": "^8.2.x" + "@types/jquery": "*" } }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "license": "MIT" - }, - "node_modules/@types/semver": { - "version": "7.5.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/sizzle": { - "version": "2.3.3", + "node_modules/@types/web": { + "version": "0.0.202", + "resolved": "https://registry.npmjs.org/@types/web/-/web-0.0.202.tgz", + "integrity": "sha512-2iO+wBir5OBnMlB9Z7aD/0SUZjR2mhiCLtPvGPboTqwBC4O3Yv6Vjwn5eMxGMXtRAm01OV9yUBi9C8pJa02TIA==", "dev": true, - "license": "MIT" + "license": "Apache-2.0" }, - "node_modules/@types/streamx": { - "version": "2.9.1", + "node_modules/@types/wordpress__editor": { + "version": "14.12.0", + "resolved": "https://registry.npmjs.org/@types/wordpress__editor/-/wordpress__editor-14.12.0.tgz", + "integrity": "sha512-aGEaDpFz+FsiIIyM7P+X2F/cWSQK+kpnCsjQ0rw41Kbf7jSQp9BJzKinXQHU4gD0w7oMZCYgk0rGYhXR3sSCwA==", + "deprecated": "This is a stub types definition. @wordpress/editor provides its own type definitions, so you do not need this installed.", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "@wordpress/editor": "*" } }, - "node_modules/@types/tern": { - "version": "0.23.4", + "node_modules/@types/yargs": { + "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/estree": "*" + "@types/yargs-parser": "*" } }, - "node_modules/@types/tinycolor2": { - "version": "1.4.3", + "node_modules/@types/yargs-parser": { + "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/@types/tinymce": { - "version": "4.6.5", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz", + "integrity": "sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/jquery": "*" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/type-utils": "8.24.0", + "@typescript-eslint/utils": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@types/undertaker": { - "version": "1.2.8", + "node_modules/@typescript-eslint/parser": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.0.tgz", + "integrity": "sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/undertaker-registry": "*", - "async-done": "~1.3.2" + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/typescript-estree": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@types/undertaker-registry": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/vinyl": { - "version": "2.0.7", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz", + "integrity": "sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==", "dev": true, "license": "MIT", "dependencies": { - "@types/expect": "^1.20.4", - "@types/node": "*" + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/vinyl-fs": { - "version": "3.0.2", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz", + "integrity": "sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==", "dev": true, "license": "MIT", "dependencies": { - "@types/glob-stream": "*", - "@types/node": "*", - "@types/vinyl": "*" + "@typescript-eslint/typescript-estree": "8.24.0", + "@typescript-eslint/utils": "8.24.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@types/web": { - "version": "0.0.102", + "node_modules/@typescript-eslint/types": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.0.tgz", + "integrity": "sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==", "dev": true, - "license": "Apache-2.0" + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } }, - "node_modules/@types/webpack": { - "version": "5.28.1", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz", + "integrity": "sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "tapable": "^2.2.0", - "webpack": "^5" + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@types/wordpress__block-editor": { - "version": "11.5.1", + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { - "@types/react": "*", - "@types/wordpress__blocks": "*", - "@types/wordpress__components": "*", - "@types/wordpress__keycodes": "*", - "@wordpress/data": "^8.5.0", - "@wordpress/element": "^5.0.0", - "react-autosize-textarea": "^7.1.0" + "balanced-match": "^1.0.0" } }, - "node_modules/@types/wordpress__block-editor/node_modules/@wordpress/data": { - "version": "8.6.0", + "node_modules/@typescript-eslint/typescript-estree/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": "GPL-2.0-or-later", + "license": "ISC", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/compose": "^6.6.0", - "@wordpress/deprecated": "^3.29.0", - "@wordpress/element": "^5.6.0", - "@wordpress/is-shallow-equal": "^4.29.0", - "@wordpress/priority-queue": "^2.29.0", - "@wordpress/private-apis": "^0.11.0", - "@wordpress/redux-routine": "^4.29.0", - "deepmerge": "^4.3.0", - "equivalent-key-map": "^0.2.2", - "is-plain-object": "^5.0.0", - "is-promise": "^4.0.0", - "redux": "^4.1.2", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, - "peerDependencies": { - "react": "^18.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@types/wordpress__block-editor/node_modules/@wordpress/private-apis": { - "version": "0.11.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "license": "GPL-2.0-or-later", - "dependencies": { - "@babel/runtime": "^7.16.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/@types/wordpress__blocks": { - "version": "12.5.0", + "node_modules/@typescript-eslint/utils": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.0.tgz", + "integrity": "sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/react": "*", - "@types/wordpress__components": "*", - "@types/wordpress__shortcode": "*", - "@wordpress/data": "^8.5.0", - "@wordpress/element": "^5.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/typescript-estree": "8.24.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@types/wordpress__blocks/node_modules/@wordpress/data": { - "version": "8.6.0", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz", + "integrity": "sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==", "dev": true, - "license": "GPL-2.0-or-later", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/compose": "^6.6.0", - "@wordpress/deprecated": "^3.29.0", - "@wordpress/element": "^5.6.0", - "@wordpress/is-shallow-equal": "^4.29.0", - "@wordpress/priority-queue": "^2.29.0", - "@wordpress/private-apis": "^0.11.0", - "@wordpress/redux-routine": "^4.29.0", - "deepmerge": "^4.3.0", - "equivalent-key-map": "^0.2.2", - "is-plain-object": "^5.0.0", - "is-promise": "^4.0.0", - "redux": "^4.1.2", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" + "@typescript-eslint/types": "8.24.0", + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "react": "^18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/wordpress__blocks/node_modules/@wordpress/private-apis": { - "version": "0.11.0", + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "license": "GPL-2.0-or-later", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@use-gesture/core": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz", + "integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==" + }, + "node_modules/@use-gesture/react": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.3.1.tgz", + "integrity": "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==", "dependencies": { - "@babel/runtime": "^7.16.0" + "@use-gesture/core": "10.3.1" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "react": ">= 16.8.0" } }, - "node_modules/@types/wordpress__components": { - "version": "23.0.1", - "dev": true, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "@types/react": "*", - "@types/tinycolor2": "*", - "@types/wordpress__components": "*", - "@types/wordpress__notices": "*", - "@types/wordpress__rich-text": "*", - "@wordpress/element": "^5.0.0", - "downshift": "^6.0.15", - "re-resizable": "^6.4.0" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, - "node_modules/@types/wordpress__editor": { - "version": "13.6.2", - "dev": true, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "devOptional": true, "license": "MIT", "dependencies": { - "@types/react": "*", - "@types/wordpress__block-editor": "*", - "@types/wordpress__blocks": "*", - "@types/wordpress__components": "*", - "@types/wordpress__media-utils": "*", - "@wordpress/core-data": "^6.0.0", - "@wordpress/data": "^9.0.0", - "@wordpress/element": "^5.0.0" + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" } }, - "node_modules/@types/wordpress__keycodes": { - "version": "2.3.1", - "dev": true, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "devOptional": true, "license": "MIT" }, - "node_modules/@types/wordpress__media-utils": { - "version": "4.14.1", - "dev": true, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@types/wordpress__block-editor": "*", - "@wordpress/core-data": "^5.0.0", - "@wordpress/element": "^5.0.0" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, - "node_modules/@types/wordpress__media-utils/node_modules/@types/react": { - "version": "17.0.62", - "dev": true, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/@types/wordpress__media-utils/node_modules/@types/react-dom": { - "version": "17.0.20", - "dev": true, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "@types/react": "^17" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, - "node_modules/@types/wordpress__media-utils/node_modules/@wordpress/blocks": { - "version": "11.21.0", - "dev": true, - "license": "GPL-2.0-or-later", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "devOptional": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/autop": "^3.22.0", - "@wordpress/blob": "^3.22.0", - "@wordpress/block-serialization-default-parser": "^4.22.0", - "@wordpress/compose": "^5.20.0", - "@wordpress/data": "^7.6.0", - "@wordpress/deprecated": "^3.22.0", - "@wordpress/dom": "^3.22.0", - "@wordpress/element": "^4.20.0", - "@wordpress/hooks": "^3.22.0", - "@wordpress/html-entities": "^3.22.0", - "@wordpress/i18n": "^4.22.0", - "@wordpress/is-shallow-equal": "^4.22.0", - "@wordpress/shortcode": "^3.22.0", - "change-case": "^4.1.2", - "colord": "^2.7.0", - "hpq": "^1.3.0", - "is-plain-object": "^5.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "rememo": "^4.0.0", - "remove-accents": "^0.4.2", - "showdown": "^1.9.1", - "simple-html-tokenizer": "^0.5.7", - "uuid": "^8.3.0" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", + "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12.0" }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", + "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18.12.0" }, "peerDependencies": { - "react": "^17.0.0" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" } }, - "node_modules/@types/wordpress__media-utils/node_modules/@wordpress/blocks/node_modules/@wordpress/element": { - "version": "4.20.0", + "node_modules/@webpack-cli/serve": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", + "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@wordpress/a11y": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-4.17.0.tgz", + "integrity": "sha512-TCQ/PGC0Me3yzPUrmY2FpECl7GUcUcx6kVGUugmlMxNwxeZRYUOEMxsHGm07iKV5l7zbi3y5c/i5bbYwJfXA4g==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@types/react": "^17.0.37", - "@types/react-dom": "^17.0.11", - "@wordpress/escape-html": "^2.22.0", - "change-case": "^4.1.2", - "is-plain-object": "^5.0.0", - "react": "^17.0.2", - "react-dom": "^17.0.2" + "@babel/runtime": "7.25.7", + "@wordpress/dom-ready": "^4.17.0", + "@wordpress/i18n": "^5.17.0" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@types/wordpress__media-utils/node_modules/@wordpress/compose": { - "version": "5.20.0", - "dev": true, + "node_modules/@wordpress/api-fetch": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-7.17.0.tgz", + "integrity": "sha512-L3iT/K41R6KResTy/7EOsTD+KKO20U3B4lPz/jQMRNgFdq4MOxtalEMjrRoj1mG+qiYGYdvGmpSgOzSx9o3eRg==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.22.0", - "@wordpress/dom": "^3.22.0", - "@wordpress/element": "^4.20.0", - "@wordpress/is-shallow-equal": "^4.22.0", - "@wordpress/keycodes": "^3.22.0", - "@wordpress/priority-queue": "^2.22.0", - "change-case": "^4.1.2", - "clipboard": "^2.0.8", - "mousetrap": "^1.6.5", - "use-memo-one": "^1.1.1" + "@babel/runtime": "7.25.7", + "@wordpress/i18n": "^5.17.0", + "@wordpress/url": "^4.17.0" }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "react": "^17.0.0" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@types/wordpress__media-utils/node_modules/@wordpress/compose/node_modules/@wordpress/element": { - "version": "4.20.0", - "dev": true, + "node_modules/@wordpress/autop": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-4.17.0.tgz", + "integrity": "sha512-6O9Eo/S02OHIa4GflfcWHANHpuy5/SifaWiprWYTrhIt6L6DyVxr1AErSWfDXIrkNNVXuhhykYDHAtApKqpqsQ==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@types/react": "^17.0.37", - "@types/react-dom": "^17.0.11", - "@wordpress/escape-html": "^2.22.0", - "change-case": "^4.1.2", - "is-plain-object": "^5.0.0", - "react": "^17.0.2", - "react-dom": "^17.0.2" + "@babel/runtime": "7.25.7" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@types/wordpress__media-utils/node_modules/@wordpress/core-data": { - "version": "5.5.0", + "node_modules/@wordpress/babel-preset-default": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-8.17.0.tgz", + "integrity": "sha512-+ivwvBI92u6abFf0DlwHem8fH5HujKy5e8a0cwDBOJivEzIJLPKYSYLlnLZL9I0QIstB+KdcJBARuWuR0l58Sw==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.19.0", - "@wordpress/blocks": "^11.21.0", - "@wordpress/compose": "^5.20.0", - "@wordpress/data": "^7.6.0", - "@wordpress/deprecated": "^3.22.0", - "@wordpress/element": "^4.20.0", - "@wordpress/html-entities": "^3.22.0", - "@wordpress/i18n": "^4.22.0", - "@wordpress/is-shallow-equal": "^4.22.0", - "@wordpress/url": "^3.23.0", - "change-case": "^4.1.2", - "equivalent-key-map": "^0.2.2", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "rememo": "^4.0.0", - "uuid": "^8.3.0" + "@babel/core": "7.25.7", + "@babel/plugin-transform-react-jsx": "7.25.7", + "@babel/plugin-transform-runtime": "7.25.7", + "@babel/preset-env": "7.25.7", + "@babel/preset-typescript": "7.25.7", + "@babel/runtime": "7.25.7", + "@wordpress/browserslist-config": "^6.17.0", + "@wordpress/warning": "^3.17.0", + "browserslist": "^4.21.10", + "core-js": "^3.31.0", + "react": "^18.3.0" }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "react": "^17.0.0" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@types/wordpress__media-utils/node_modules/@wordpress/core-data/node_modules/@wordpress/element": { - "version": "4.20.0", - "dev": true, + "node_modules/@wordpress/blob": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-4.17.0.tgz", + "integrity": "sha512-qH0Q48clM+UTdTMWUsCyyAuy4J+koNGLz4oXyJZCrUvUQ31Hpj6VwQulM2lSXYQyzOWJEKf3deHM47Uz1JYhhg==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@types/react": "^17.0.37", - "@types/react-dom": "^17.0.11", - "@wordpress/escape-html": "^2.22.0", - "change-case": "^4.1.2", - "is-plain-object": "^5.0.0", - "react": "^17.0.2", - "react-dom": "^17.0.2" + "@babel/runtime": "7.25.7" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@types/wordpress__media-utils/node_modules/@wordpress/data": { - "version": "7.6.0", - "dev": true, + "node_modules/@wordpress/block-editor": { + "version": "14.12.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-14.12.0.tgz", + "integrity": "sha512-i8tUlPiRgLqUFVnAHDjS7MNHZMFDYMkm5gR2xsNryzhsvoAndUYJiktftbXNaQVki/EMoDf1zHicHZ2g2AQy5Q==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/compose": "^5.20.0", - "@wordpress/deprecated": "^3.22.0", - "@wordpress/element": "^4.20.0", - "@wordpress/is-shallow-equal": "^4.22.0", - "@wordpress/priority-queue": "^2.22.0", - "@wordpress/redux-routine": "^4.22.0", - "equivalent-key-map": "^0.2.2", - "is-plain-object": "^5.0.0", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "redux": "^4.1.2", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" + "@babel/runtime": "7.25.7", + "@emotion/react": "^11.7.1", + "@emotion/styled": "^11.6.0", + "@react-spring/web": "^9.4.5", + "@wordpress/a11y": "^4.17.0", + "@wordpress/api-fetch": "^7.17.0", + "@wordpress/blob": "^4.17.0", + "@wordpress/block-serialization-default-parser": "^5.17.0", + "@wordpress/blocks": "^14.6.0", + "@wordpress/commands": "^1.17.0", + "@wordpress/components": "^29.3.0", + "@wordpress/compose": "^7.17.0", + "@wordpress/data": "^10.17.0", + "@wordpress/date": "^5.17.0", + "@wordpress/deprecated": "^4.17.0", + "@wordpress/dom": "^4.17.0", + "@wordpress/element": "^6.17.0", + "@wordpress/escape-html": "^3.17.0", + "@wordpress/hooks": "^4.17.0", + "@wordpress/html-entities": "^4.17.0", + "@wordpress/i18n": "^5.17.0", + "@wordpress/icons": "^10.17.0", + "@wordpress/is-shallow-equal": "^5.17.0", + "@wordpress/keyboard-shortcuts": "^5.17.0", + "@wordpress/keycodes": "^4.17.0", + "@wordpress/notices": "^5.17.0", + "@wordpress/preferences": "^4.17.0", + "@wordpress/priority-queue": "^3.17.0", + "@wordpress/private-apis": "^1.17.0", + "@wordpress/rich-text": "^7.17.0", + "@wordpress/style-engine": "^2.17.0", + "@wordpress/token-list": "^3.17.0", + "@wordpress/upload-media": "^0.2.0", + "@wordpress/url": "^4.17.0", + "@wordpress/warning": "^3.17.0", + "@wordpress/wordcount": "^4.17.0", + "change-case": "^4.1.2", + "clsx": "^2.1.1", + "colord": "^2.7.0", + "deepmerge": "^4.3.0", + "diff": "^4.0.2", + "fast-deep-equal": "^3.1.3", + "memize": "^2.1.0", + "parsel-js": "^1.1.2", + "postcss": "^8.4.21", + "postcss-prefix-selector": "^1.16.0", + "postcss-urlrebase": "^1.4.0", + "react-autosize-textarea": "^7.1.0", + "react-easy-crop": "^5.0.6", + "remove-accents": "^0.5.0" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { - "react": "^17.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@types/wordpress__media-utils/node_modules/@wordpress/data/node_modules/@wordpress/element": { - "version": "4.20.0", - "dev": true, + "node_modules/@wordpress/block-serialization-default-parser": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-5.17.0.tgz", + "integrity": "sha512-4oVgm6f/kRqersuTH1SS85x89P4foPAo2xwjoXvHdjy1Rp0UQ86uxyKn0j0A6k7uQEXc5BJeUevk/Z1AT1Z9bQ==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "7.25.7" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/blocks": { + "version": "14.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-14.6.0.tgz", + "integrity": "sha512-9FkjXHRTXIaOU7BJfoeRUe1snh+5H8rypOTJoDpiMCoXMfGKyBVpacRMzbltQiK7SrzmHbzst4EuxHoK7a/TVw==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@types/react": "^17.0.37", - "@types/react-dom": "^17.0.11", - "@wordpress/escape-html": "^2.22.0", + "@babel/runtime": "7.25.7", + "@wordpress/autop": "^4.17.0", + "@wordpress/blob": "^4.17.0", + "@wordpress/block-serialization-default-parser": "^5.17.0", + "@wordpress/data": "^10.17.0", + "@wordpress/deprecated": "^4.17.0", + "@wordpress/dom": "^4.17.0", + "@wordpress/element": "^6.17.0", + "@wordpress/hooks": "^4.17.0", + "@wordpress/html-entities": "^4.17.0", + "@wordpress/i18n": "^5.17.0", + "@wordpress/is-shallow-equal": "^5.17.0", + "@wordpress/private-apis": "^1.17.0", + "@wordpress/rich-text": "^7.17.0", + "@wordpress/shortcode": "^4.17.0", + "@wordpress/warning": "^3.17.0", "change-case": "^4.1.2", + "colord": "^2.7.0", + "fast-deep-equal": "^3.1.3", + "hpq": "^1.3.0", "is-plain-object": "^5.0.0", - "react": "^17.0.2", - "react-dom": "^17.0.2" + "memize": "^2.1.0", + "react-is": "^18.3.0", + "remove-accents": "^0.5.0", + "showdown": "^1.9.1", + "simple-html-tokenizer": "^0.5.7", + "uuid": "^9.0.1" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0" } }, - "node_modules/@types/wordpress__media-utils/node_modules/memize": { - "version": "1.1.0", - "dev": true, - "license": "MIT" + "node_modules/@wordpress/blocks/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, - "node_modules/@types/wordpress__notices": { - "version": "3.27.0", + "node_modules/@wordpress/browserslist-config": { + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-6.17.0.tgz", + "integrity": "sha512-cjMclWLwfam5O03gOHWjD8veeLVnfmC93V9LX1aPt/ZT9aE0cmEZUxBa3VzkDM7NvuZFj7SjSvJr+vuar9Np1A==", "dev": true, - "license": "MIT", + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/commands": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/commands/-/commands-1.17.0.tgz", + "integrity": "sha512-oZLv9pi0iiIO7DXRijK9gze5+iktoUyfDVipAmbmxAVEqptfWuPP3BRSkZxf+ccoIWpz0EhNKShsbQM86FwVbg==", + "license": "GPL-2.0-or-later", "dependencies": { - "@types/react": "*", - "@wordpress/data": "^8.5.0" + "@babel/runtime": "7.25.7", + "@wordpress/components": "^29.3.0", + "@wordpress/data": "^10.17.0", + "@wordpress/element": "^6.17.0", + "@wordpress/i18n": "^5.17.0", + "@wordpress/icons": "^10.17.0", + "@wordpress/keyboard-shortcuts": "^5.17.0", + "@wordpress/private-apis": "^1.17.0", + "clsx": "^2.1.1", + "cmdk": "^1.0.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@types/wordpress__notices/node_modules/@wordpress/data": { - "version": "8.6.0", - "dev": true, + "node_modules/@wordpress/components": { + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-29.3.0.tgz", + "integrity": "sha512-9lQIXsbgFeGY1QXEhNHQ6mq+6sS1TGGdZdaGSoQoP682WWgdjshnyq/0yhGULY9ReDKnZF2mHJ/J3FvleyYMcg==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/compose": "^6.6.0", - "@wordpress/deprecated": "^3.29.0", - "@wordpress/element": "^5.6.0", - "@wordpress/is-shallow-equal": "^4.29.0", - "@wordpress/priority-queue": "^2.29.0", - "@wordpress/private-apis": "^0.11.0", - "@wordpress/redux-routine": "^4.29.0", + "@ariakit/react": "^0.4.15", + "@babel/runtime": "7.25.7", + "@emotion/cache": "^11.7.1", + "@emotion/css": "^11.7.1", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.0.2", + "@emotion/styled": "^11.6.0", + "@emotion/utils": "^1.0.0", + "@floating-ui/react-dom": "^2.0.8", + "@types/gradient-parser": "0.1.3", + "@types/highlight-words-core": "1.2.1", + "@use-gesture/react": "^10.3.1", + "@wordpress/a11y": "^4.17.0", + "@wordpress/compose": "^7.17.0", + "@wordpress/date": "^5.17.0", + "@wordpress/deprecated": "^4.17.0", + "@wordpress/dom": "^4.17.0", + "@wordpress/element": "^6.17.0", + "@wordpress/escape-html": "^3.17.0", + "@wordpress/hooks": "^4.17.0", + "@wordpress/html-entities": "^4.17.0", + "@wordpress/i18n": "^5.17.0", + "@wordpress/icons": "^10.17.0", + "@wordpress/is-shallow-equal": "^5.17.0", + "@wordpress/keycodes": "^4.17.0", + "@wordpress/primitives": "^4.17.0", + "@wordpress/private-apis": "^1.17.0", + "@wordpress/rich-text": "^7.17.0", + "@wordpress/warning": "^3.17.0", + "change-case": "^4.1.2", + "clsx": "^2.1.1", + "colord": "^2.7.0", + "date-fns": "^3.6.0", "deepmerge": "^4.3.0", - "equivalent-key-map": "^0.2.2", + "fast-deep-equal": "^3.1.3", + "framer-motion": "^11.1.9", + "gradient-parser": "^0.1.5", + "highlight-words-core": "^1.2.2", "is-plain-object": "^5.0.0", - "is-promise": "^4.0.0", - "redux": "^4.1.2", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" + "memize": "^2.1.0", + "path-to-regexp": "^6.2.1", + "re-resizable": "^6.4.0", + "react-colorful": "^5.3.1", + "remove-accents": "^0.5.0", + "uuid": "^9.0.1" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { - "react": "^18.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@types/wordpress__notices/node_modules/@wordpress/private-apis": { - "version": "0.11.0", - "dev": true, + "node_modules/@wordpress/compose": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-7.17.0.tgz", + "integrity": "sha512-jn5uCw08HHLfOpIDp0pKBDZh1oZiMwjiK3c3IZdZo6eoWZjpOr3ecsMa4RBl/4HbqnUoeFDD6Lj83IEKPuzHQg==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0" + "@babel/runtime": "7.25.7", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^4.17.0", + "@wordpress/dom": "^4.17.0", + "@wordpress/element": "^6.17.0", + "@wordpress/is-shallow-equal": "^5.17.0", + "@wordpress/keycodes": "^4.17.0", + "@wordpress/priority-queue": "^3.17.0", + "@wordpress/undo-manager": "^1.17.0", + "change-case": "^4.1.2", + "clipboard": "^2.0.11", + "mousetrap": "^1.6.5", + "use-memo-one": "^1.1.1" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0" } }, - "node_modules/@types/wordpress__rich-text": { - "version": "6.4.0", + "node_modules/@wordpress/core-data": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-7.13.0.tgz", + "integrity": "sha512-DHApWtZ4Q7IvICxx2k2m8+Skt9nhahfTyc4v6a1QchruyDA+y5DavW0iBOWz9yuV5/kcu5duB4E5SKkDR9nGWQ==", "dev": true, - "license": "MIT", + "license": "GPL-2.0-or-later", "dependencies": { - "@types/react": "*", - "@types/wordpress__rich-text": "*", - "@wordpress/data": "^8.5.0" + "@babel/runtime": "7.25.7", + "@wordpress/api-fetch": "*", + "@wordpress/block-editor": "*", + "@wordpress/blocks": "*", + "@wordpress/compose": "*", + "@wordpress/data": "*", + "@wordpress/deprecated": "*", + "@wordpress/element": "*", + "@wordpress/html-entities": "*", + "@wordpress/i18n": "*", + "@wordpress/is-shallow-equal": "*", + "@wordpress/private-apis": "*", + "@wordpress/rich-text": "*", + "@wordpress/sync": "*", + "@wordpress/undo-manager": "*", + "@wordpress/url": "*", + "@wordpress/warning": "*", + "change-case": "^4.1.2", + "equivalent-key-map": "^0.2.2", + "fast-deep-equal": "^3.1.3", + "memize": "^2.1.0", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@types/wordpress__rich-text/node_modules/@wordpress/data": { - "version": "8.6.0", - "dev": true, + "node_modules/@wordpress/data": { + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-10.17.0.tgz", + "integrity": "sha512-NezfpsRH3BIV2i10wFohsGfOQ+pp9TvSHFuVK/AlQmnAogoMpFOxAumXCI7rvDoH1X4rEPiX2ggRnxP2+Z6jwQ==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/compose": "^6.6.0", - "@wordpress/deprecated": "^3.29.0", - "@wordpress/element": "^5.6.0", - "@wordpress/is-shallow-equal": "^4.29.0", - "@wordpress/priority-queue": "^2.29.0", - "@wordpress/private-apis": "^0.11.0", - "@wordpress/redux-routine": "^4.29.0", + "@babel/runtime": "7.25.7", + "@wordpress/compose": "^7.17.0", + "@wordpress/deprecated": "^4.17.0", + "@wordpress/element": "^6.17.0", + "@wordpress/is-shallow-equal": "^5.17.0", + "@wordpress/priority-queue": "^3.17.0", + "@wordpress/private-apis": "^1.17.0", + "@wordpress/redux-routine": "^5.17.0", "deepmerge": "^4.3.0", "equivalent-key-map": "^0.2.2", "is-plain-object": "^5.0.0", "is-promise": "^4.0.0", - "redux": "^4.1.2", - "turbo-combine-reducers": "^1.0.2", + "redux": "^5.0.1", + "rememo": "^4.0.2", "use-memo-one": "^1.1.1" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { "react": "^18.0.0" } }, - "node_modules/@types/wordpress__rich-text/node_modules/@wordpress/private-apis": { - "version": "0.11.0", + "node_modules/@wordpress/dataviews": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@wordpress/dataviews/-/dataviews-4.9.0.tgz", + "integrity": "sha512-ucAQx1dwlHU8WyhNSfl/OEc8hFNwIy2/XkNAjduelrMqbNiOOue5mfKjO43zqKT/ZFVvju/gUU7gnTX1A98tCA==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0" + "@ariakit/react": "^0.4.10", + "@babel/runtime": "7.25.7", + "@wordpress/components": "*", + "@wordpress/compose": "*", + "@wordpress/data": "*", + "@wordpress/element": "*", + "@wordpress/i18n": "*", + "@wordpress/icons": "*", + "@wordpress/primitives": "*", + "@wordpress/private-apis": "*", + "@wordpress/warning": "*", + "clsx": "^2.1.1", + "remove-accents": "^0.5.0" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0" } }, - "node_modules/@types/wordpress__shortcode": { - "version": "2.3.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.60.1", - "dev": true, - "license": "MIT", + "node_modules/@wordpress/date": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-5.17.0.tgz", + "integrity": "sha512-vFi+h+YpiicfDHtp1SKkFmgQR0PI9I76Dqoi7lBP95BPTGC/adQ3u2ee5wGd5uVUlR+ca+TfR6siC4Igau73oA==", + "license": "GPL-2.0-or-later", "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/type-utils": "5.60.1", - "@typescript-eslint/utils": "5.60.1", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@babel/runtime": "7.25.7", + "@wordpress/deprecated": "^4.17.0", + "moment": "^2.29.4", + "moment-timezone": "^0.5.40" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", + "node_modules/@wordpress/deprecated": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-4.17.0.tgz", + "integrity": "sha512-7IlFpQ6tNkUbOuuxm6kBCR2R6C9Etlzojgh0ykJ/OmwgRMrosH/m6/zAmaA15oRYpd6dvO7ozJN+ArPz7LSOiQ==", + "license": "GPL-2.0-or-later", "dependencies": { - "yallist": "^4.0.0" + "@babel/runtime": "7.25.7", + "@wordpress/hooks": "^4.17.0" }, "engines": { - "node": ">=10" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.3", - "dev": true, - "license": "ISC", + "node_modules/@wordpress/dom": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-4.17.0.tgz", + "integrity": "sha512-raAeub1L/a2yHd9rwCGs67yDSUsafcpERi9rJCeHiaBE/+h7gZn7Li+Pya+DMk7tGxoIHNpPuGVTAyVhQbjWdQ==", + "license": "GPL-2.0-or-later", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@babel/runtime": "7.25.7", + "@wordpress/deprecated": "^4.17.0" }, "engines": { - "node": ">=10" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" + "node_modules/@wordpress/dom-ready": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-4.17.0.tgz", + "integrity": "sha512-u/ocyrPV4MJIKxM1OJg+Q6yOBD0pIYi1jcXE1HVYnc/9Mte0IFlfovYRJj6oGUc7u4dM6AVE2BUCQMJgmG406Q==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "7.25.7" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } }, - "node_modules/@typescript-eslint/parser": { - "version": "5.60.1", + "node_modules/@wordpress/editor": { + "version": "14.13.0", + "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-14.13.0.tgz", + "integrity": "sha512-cZl9UTv4lPPFFStcsaDA/J8GNDGWq6rqZQAUiwppVSkn8+Fz5+EYDECPiZ4dWa11JJmXR6gvHHsH0681fPlZaQ==", "dev": true, - "license": "BSD-2-Clause", + "license": "GPL-2.0-or-later", "dependencies": { - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/typescript-estree": "5.60.1", - "debug": "^4.3.4" + "@babel/runtime": "7.25.7", + "@wordpress/a11y": "*", + "@wordpress/api-fetch": "*", + "@wordpress/blob": "*", + "@wordpress/block-editor": "*", + "@wordpress/blocks": "*", + "@wordpress/commands": "*", + "@wordpress/components": "*", + "@wordpress/compose": "*", + "@wordpress/core-data": "*", + "@wordpress/data": "*", + "@wordpress/dataviews": "*", + "@wordpress/date": "*", + "@wordpress/deprecated": "*", + "@wordpress/dom": "*", + "@wordpress/element": "*", + "@wordpress/fields": "*", + "@wordpress/hooks": "*", + "@wordpress/html-entities": "*", + "@wordpress/i18n": "*", + "@wordpress/icons": "*", + "@wordpress/interface": "*", + "@wordpress/keyboard-shortcuts": "*", + "@wordpress/keycodes": "*", + "@wordpress/media-utils": "*", + "@wordpress/notices": "*", + "@wordpress/patterns": "*", + "@wordpress/plugins": "*", + "@wordpress/preferences": "*", + "@wordpress/private-apis": "*", + "@wordpress/reusable-blocks": "*", + "@wordpress/rich-text": "*", + "@wordpress/server-side-render": "*", + "@wordpress/url": "*", + "@wordpress/warning": "*", + "@wordpress/wordcount": "*", + "change-case": "^4.1.2", + "client-zip": "^2.4.5", + "clsx": "^2.1.1", + "date-fns": "^3.6.0", + "deepmerge": "^4.3.0", + "fast-deep-equal": "^3.1.3", + "is-plain-object": "^5.0.0", + "memize": "^2.1.0", + "react-autosize-textarea": "^7.1.0", + "remove-accents": "^0.5.0", + "uuid": "^9.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.60.1", - "dev": true, - "license": "MIT", + "node_modules/@wordpress/element": { + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.17.0.tgz", + "integrity": "sha512-mRLFDPmZiI3+POi/iUGoof/9fQi4YTJ/RAuIUipr7yG7l4SwOoQy4eSJy6QTyqtJxZ+/7qA+b/+Ek15UzFst5Q==", + "license": "GPL-2.0-or-later", "dependencies": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1" + "@babel/runtime": "7.25.7", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", + "@wordpress/escape-html": "^3.17.0", + "change-case": "^4.1.2", + "is-plain-object": "^5.0.0", + "react": "^18.3.0", + "react-dom": "^18.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.60.1", - "dev": true, - "license": "MIT", + "node_modules/@wordpress/escape-html": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.17.0.tgz", + "integrity": "sha512-yOfJwgmrtIXQDwX6zTC0L7ymYBXz3K3hlW0nDdtYy+bCw5z0gbrEOnBotOD6YdXlejAgnaAH+K1VSf0xxG5uGA==", + "license": "GPL-2.0-or-later", "dependencies": { - "@typescript-eslint/typescript-estree": "5.60.1", - "@typescript-eslint/utils": "5.60.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" + "@babel/runtime": "7.25.7" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.60.1", + "node_modules/@wordpress/fields": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/fields/-/fields-0.5.0.tgz", + "integrity": "sha512-lEVJ8h6X3uAkR4CpsbNyOJwf1wxM3v1ctmcumO16Sjtby9ZOMBT3RCx4huQk+oOUa55+dPJYKvSwyEiMUiICQw==", "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "7.25.7", + "@wordpress/api-fetch": "*", + "@wordpress/blob": "*", + "@wordpress/blocks": "*", + "@wordpress/components": "*", + "@wordpress/compose": "*", + "@wordpress/core-data": "*", + "@wordpress/data": "*", + "@wordpress/dataviews": "*", + "@wordpress/date": "*", + "@wordpress/element": "*", + "@wordpress/hooks": "*", + "@wordpress/html-entities": "*", + "@wordpress/i18n": "*", + "@wordpress/icons": "*", + "@wordpress/media-utils": "*", + "@wordpress/notices": "*", + "@wordpress/patterns": "*", + "@wordpress/primitives": "*", + "@wordpress/private-apis": "*", + "@wordpress/router": "*", + "@wordpress/url": "*", + "@wordpress/warning": "*", + "change-case": "4.1.2", + "client-zip": "^2.4.5", + "clsx": "2.1.1", + "remove-accents": "^0.5.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "react": "^18.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.60.1", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/@wordpress/hooks": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.17.0.tgz", + "integrity": "sha512-LGOHGuwCXCevuzaFpM2sgyPZxf3H7tWaSKzlvDzx2kmwiWIrFug/yebywv4Cxsl82I5DfZkDpxXRpqTxXrC0Nw==", + "license": "GPL-2.0-or-later", "dependencies": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@babel/runtime": "7.25.7" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", + "node_modules/@wordpress/html-entities": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-4.17.0.tgz", + "integrity": "sha512-8cVD8KTxsKLHA9r6Lt3fkQoNBUQ6zMWdgaK1VNRYRJgTfx8C6FlNBjvHrIIgS0nJ43k9iAmAObGQiL3GkGVI1g==", + "license": "GPL-2.0-or-later", "dependencies": { - "yallist": "^4.0.0" + "@babel/runtime": "7.25.7" }, "engines": { - "node": ">=10" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.3", - "dev": true, - "license": "ISC", + "node_modules/@wordpress/i18n": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-5.17.0.tgz", + "integrity": "sha512-aAsYls8sTTSEimsvjxBl9mCYbZYD3BddHVpuHgbBxzC+2SZE+JYJ+IpcwEghC712qo0jEkG8Vdzhqae1PL6vCQ==", + "license": "GPL-2.0-or-later", "dependencies": { - "lru-cache": "^6.0.0" + "@babel/runtime": "7.25.7", + "@wordpress/hooks": "^4.17.0", + "gettext-parser": "^1.3.1", + "memize": "^2.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.0" }, "bin": { - "semver": "bin/semver.js" + "pot-to-php": "tools/pot-to-php.js" }, "engines": { - "node": ">=10" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.60.1", - "dev": true, - "license": "MIT", + "node_modules/@wordpress/icons": { + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-10.17.0.tgz", + "integrity": "sha512-qzWFrMfa5HZdGxGq7I+s9bmUJqZrFfx6ow/slY1USKJqp1uRHRekAbq6UrOrJscs8rSUQiV/aNNPDgSfqBEM6A==", + "license": "GPL-2.0-or-later", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/typescript-estree": "5.60.1", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@babel/runtime": "7.25.7", + "@wordpress/element": "^6.17.0", + "@wordpress/primitives": "^4.17.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/@wordpress/interface": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-8.2.0.tgz", + "integrity": "sha512-bhPGnP7SCRO1JUQOGkplC+ow4I7tS8g2VzF7JsjMe2ctWp5UEYhGPPdGF+nooD1cWHwnGXC+QJIAnPjvUFwhRQ==", "dev": true, - "license": "ISC", + "license": "GPL-2.0-or-later", "dependencies": { - "yallist": "^4.0.0" + "@babel/runtime": "7.25.7", + "@wordpress/a11y": "*", + "@wordpress/components": "*", + "@wordpress/compose": "*", + "@wordpress/data": "*", + "@wordpress/deprecated": "*", + "@wordpress/element": "*", + "@wordpress/i18n": "*", + "@wordpress/icons": "*", + "@wordpress/plugins": "*", + "@wordpress/preferences": "*", + "@wordpress/viewport": "*", + "clsx": "^2.1.1" }, "engines": { - "node": ">=10" + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.5.3", - "dev": true, - "license": "ISC", + "node_modules/@wordpress/is-shallow-equal": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-5.17.0.tgz", + "integrity": "sha512-PRykD6MgDkptKsKwETjNHiQUVtaegXkREX6UetN1iL6u+2la4XC/naDHByq7TL+Cg4snyR+PlNdw45Y4dgMf5w==", + "license": "GPL-2.0-or-later", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@babel/runtime": "7.25.7" }, "engines": { - "node": ">=10" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@typescript-eslint/utils/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.60.1", - "dev": true, - "license": "MIT", + "node_modules/@wordpress/keyboard-shortcuts": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-5.17.0.tgz", + "integrity": "sha512-XQbtiTSq6rsP/5KYMMDCmZegABlqcq7IpLtymrbeQNSPjyAP4aflU0rCcNWaXhBbdWWDRmaU9u/X1/fI5wGxUQ==", + "license": "GPL-2.0-or-later", "dependencies": { - "@typescript-eslint/types": "5.60.1", - "eslint-visitor-keys": "^3.3.0" + "@babel/runtime": "7.25.7", + "@wordpress/data": "^10.17.0", + "@wordpress/element": "^6.17.0", + "@wordpress/keycodes": "^4.17.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@use-gesture/core": { - "version": "10.2.27", - "license": "MIT" - }, - "node_modules/@use-gesture/react": { - "version": "10.2.27", - "license": "MIT", - "dependencies": { - "@use-gesture/core": "10.2.27" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { - "react": ">= 16.8.0" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "react": "^18.0.0" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "dev": true, - "license": "MIT", + "node_modules/@wordpress/keycodes": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.17.0.tgz", + "integrity": "sha512-6aZ28uoCmzjXONpRVtDPjevkw834fhIRBnn2KQdzENMnPiQCNbiG71mPNxkTw1yRHRRT5ptHvOe49ztWm9KMcA==", + "license": "GPL-2.0-or-later", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@babel/runtime": "7.25.7", + "@wordpress/i18n": "^5.17.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", + "node_modules/@wordpress/media-utils": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-5.13.0.tgz", + "integrity": "sha512-usuJiwJ01P2384swjZqpzJxsBGSIz1tApgIGKGtdXjl01VLrMZuBMAWAIJ4DwnqrLKM3Rtr+r+VWuO6A2w/ZmQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@wordpress/a11y": { - "version": "3.36.0", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/dom-ready": "^3.36.0", - "@wordpress/i18n": "^4.36.0" + "@babel/runtime": "7.25.7", + "@wordpress/api-fetch": "*", + "@wordpress/blob": "*", + "@wordpress/element": "*", + "@wordpress/i18n": "*", + "@wordpress/private-apis": "*" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@wordpress/api-fetch": { - "version": "6.33.0", + "node_modules/@wordpress/notices": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-5.17.0.tgz", + "integrity": "sha512-1qsRcxE2dnvIJO9IQHnK9D/U/RgRmccDhbNrBxcgOqEVHTFwDambuxte4JXOmJZVr+uqh8Z3ggr+4H6zCjs/9Q==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/i18n": "^4.36.0", - "@wordpress/url": "^3.37.0" + "@babel/runtime": "7.25.7", + "@wordpress/a11y": "^4.17.0", + "@wordpress/data": "^10.17.0" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0" } }, - "node_modules/@wordpress/autop": { - "version": "3.36.0", + "node_modules/@wordpress/patterns": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@wordpress/patterns/-/patterns-2.13.0.tgz", + "integrity": "sha512-IbEDL7F2eJpxh2zhYzg0+milgkaGTbSyoe3H6vAfiAV5+GGeGCGyaeGXynAgfWN4NEU6fpoIXig+ZhiPK90RUQ==", + "dev": true, "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0" + "@babel/runtime": "7.25.7", + "@wordpress/a11y": "*", + "@wordpress/block-editor": "*", + "@wordpress/blocks": "*", + "@wordpress/components": "*", + "@wordpress/compose": "*", + "@wordpress/core-data": "*", + "@wordpress/data": "*", + "@wordpress/element": "*", + "@wordpress/html-entities": "*", + "@wordpress/i18n": "*", + "@wordpress/icons": "*", + "@wordpress/notices": "*", + "@wordpress/private-apis": "*", + "@wordpress/url": "*" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@wordpress/babel-plugin-import-jsx-pragma": { - "version": "4.19.0", + "node_modules/@wordpress/plugins": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-7.13.0.tgz", + "integrity": "sha512-92hVes7TgF51RGd+KC3P0ur3hFz6GW4kfeS6FhhJeRhTOvMljAPsmyfwOgWH9AGVJtZhEcLba5ENuBtZ6yprzg==", "dev": true, "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "7.25.7", + "@wordpress/components": "*", + "@wordpress/compose": "*", + "@wordpress/deprecated": "*", + "@wordpress/element": "*", + "@wordpress/hooks": "*", + "@wordpress/icons": "*", + "@wordpress/is-shallow-equal": "*", + "memize": "^2.0.1" + }, "engines": { - "node": ">=14" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { - "@babel/core": "^7.12.9" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@wordpress/babel-preset-default": { - "version": "7.20.0", - "dev": true, + "node_modules/@wordpress/preferences": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/preferences/-/preferences-4.17.0.tgz", + "integrity": "sha512-jNyHhuar2RflBJ9JqGs0ZQXnU86URCQXlR4syXzZdVU75Sm1fPByqKDtR9/F/bWnPxLlU1uP89SKv54kGpSM4Q==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/core": "^7.16.0", - "@babel/plugin-transform-react-jsx": "^7.16.0", - "@babel/plugin-transform-runtime": "^7.16.0", - "@babel/preset-env": "^7.16.0", - "@babel/preset-typescript": "^7.16.0", - "@babel/runtime": "^7.16.0", - "@wordpress/babel-plugin-import-jsx-pragma": "^4.19.0", - "@wordpress/browserslist-config": "^5.19.0", - "@wordpress/element": "^5.13.0", - "@wordpress/warning": "^2.36.0", - "browserslist": "^4.17.6", - "core-js": "^3.19.1" + "@babel/runtime": "7.25.7", + "@wordpress/a11y": "^4.17.0", + "@wordpress/components": "^29.3.0", + "@wordpress/compose": "^7.17.0", + "@wordpress/data": "^10.17.0", + "@wordpress/deprecated": "^4.17.0", + "@wordpress/element": "^6.17.0", + "@wordpress/i18n": "^5.17.0", + "@wordpress/icons": "^10.17.0", + "@wordpress/private-apis": "^1.17.0", + "clsx": "^2.1.1" }, "engines": { - "node": ">=14" + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@wordpress/blob": { - "version": "3.36.0", + "node_modules/@wordpress/primitives": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-4.17.0.tgz", + "integrity": "sha512-O1dysI/Y9xv5uUMllH2VIxuBDCOVUX8WmouE9KKr11Yv4gkHzxzaU2M5rFtu7RbUCv6jtkvjidy2cuZuNpEIHQ==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0" + "@babel/runtime": "7.25.7", + "@wordpress/element": "^6.17.0", + "clsx": "^2.1.1" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0" } }, - "node_modules/@wordpress/block-editor": { - "version": "12.3.0", + "node_modules/@wordpress/priority-queue": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-3.17.0.tgz", + "integrity": "sha512-WzQHNx6wjgbxhuaKErjIRLSL9E9La8slsAXRTQPmkgvKqa11Rh4RYl2FLUh8tABK3xo5HzaHCplkZSm2q5wlbg==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@react-spring/web": "^9.4.5", - "@wordpress/a11y": "^3.35.0", - "@wordpress/api-fetch": "^6.32.0", - "@wordpress/blob": "^3.35.0", - "@wordpress/blocks": "^12.12.0", - "@wordpress/components": "^25.1.0", - "@wordpress/compose": "^6.12.0", - "@wordpress/data": "^9.5.0", - "@wordpress/date": "^4.35.0", - "@wordpress/deprecated": "^3.35.0", - "@wordpress/dom": "^3.35.0", - "@wordpress/element": "^5.12.0", - "@wordpress/escape-html": "^2.35.0", - "@wordpress/hooks": "^3.35.0", - "@wordpress/html-entities": "^3.35.0", - "@wordpress/i18n": "^4.35.0", - "@wordpress/icons": "^9.26.0", - "@wordpress/is-shallow-equal": "^4.35.0", - "@wordpress/keyboard-shortcuts": "^4.12.0", - "@wordpress/keycodes": "^3.35.0", - "@wordpress/notices": "^4.3.0", - "@wordpress/preferences": "^3.12.0", - "@wordpress/private-apis": "^0.17.0", - "@wordpress/rich-text": "^6.12.0", - "@wordpress/shortcode": "^3.35.0", - "@wordpress/style-engine": "^1.18.0", - "@wordpress/token-list": "^2.35.0", - "@wordpress/url": "^3.36.0", - "@wordpress/warning": "^2.35.0", - "@wordpress/wordcount": "^3.35.0", - "change-case": "^4.1.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "deepmerge": "^4.3.0", - "diff": "^4.0.2", - "dom-scroll-into-view": "^1.2.1", - "fast-deep-equal": "^3.1.3", - "inherits": "^2.0.3", - "lodash": "^4.17.21", - "react-autosize-textarea": "^7.1.0", - "react-easy-crop": "^4.5.1", - "rememo": "^4.0.2", - "remove-accents": "^0.4.2", - "traverse": "^0.6.6" + "@babel/runtime": "7.25.7", + "requestidlecallback": "^0.3.0" }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@wordpress/block-serialization-default-parser": { - "version": "4.36.0", + "node_modules/@wordpress/private-apis": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.17.0.tgz", + "integrity": "sha512-9NGPyuUvtJD0OjWJ/Cn+6Qhjb8hXhiJH4i80W7MFVHRgUZLc/Tu5BOg2+OnXMRSePbgYivo1NLEukqdXqse5IA==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0" + "@babel/runtime": "7.25.7" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@wordpress/blocks": { - "version": "12.12.0", + "node_modules/@wordpress/redux-routine": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-5.17.0.tgz", + "integrity": "sha512-RBUNOp+wSweymRB0+fThv1HKUf1c8GVMUT/Xv0kqtrRsGFD70ciwnnfVXnPY0V6po9Uzj5Bb4+2qO/l/e2IwXw==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/autop": "^3.35.0", - "@wordpress/blob": "^3.35.0", - "@wordpress/block-serialization-default-parser": "^4.35.0", - "@wordpress/compose": "^6.12.0", - "@wordpress/data": "^9.5.0", - "@wordpress/deprecated": "^3.35.0", - "@wordpress/dom": "^3.35.0", - "@wordpress/element": "^5.12.0", - "@wordpress/hooks": "^3.35.0", - "@wordpress/html-entities": "^3.35.0", - "@wordpress/i18n": "^4.35.0", - "@wordpress/is-shallow-equal": "^4.35.0", - "@wordpress/private-apis": "^0.17.0", - "@wordpress/shortcode": "^3.35.0", - "change-case": "^4.1.2", - "colord": "^2.7.0", - "fast-deep-equal": "^3.1.3", - "hpq": "^1.3.0", + "@babel/runtime": "7.25.7", "is-plain-object": "^5.0.0", - "lodash": "^4.17.21", - "memize": "^2.1.0", - "rememo": "^4.0.2", - "remove-accents": "^0.4.2", - "showdown": "^1.9.1", - "simple-html-tokenizer": "^0.5.7", - "uuid": "^8.3.0" + "is-promise": "^4.0.0", + "rungen": "^0.3.2" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { - "react": "^18.0.0" + "redux": ">=4" } }, - "node_modules/@wordpress/browserslist-config": { - "version": "5.19.0", + "node_modules/@wordpress/reusable-blocks": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@wordpress/reusable-blocks/-/reusable-blocks-5.13.0.tgz", + "integrity": "sha512-BduetqgQ6NS71T38bK3md1IxFAzfQrhNnKb7URWGDwTNPV+vDbxcXv6f319Ur7nZGKHS9vxjIrB61pVv2cDRYQ==", "dev": true, "license": "GPL-2.0-or-later", - "engines": { - "node": ">=14" - } - }, - "node_modules/@wordpress/components": { - "version": "25.1.0", - "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@emotion/cache": "^11.7.1", - "@emotion/css": "^11.7.1", - "@emotion/react": "^11.7.1", - "@emotion/serialize": "^1.0.2", - "@emotion/styled": "^11.6.0", - "@emotion/utils": "^1.0.0", - "@floating-ui/react-dom": "1.0.0", - "@radix-ui/react-dropdown-menu": "^2.0.4", - "@use-gesture/react": "^10.2.24", - "@wordpress/a11y": "^3.35.0", - "@wordpress/compose": "^6.12.0", - "@wordpress/date": "^4.35.0", - "@wordpress/deprecated": "^3.35.0", - "@wordpress/dom": "^3.35.0", - "@wordpress/element": "^5.12.0", - "@wordpress/escape-html": "^2.35.0", - "@wordpress/hooks": "^3.35.0", - "@wordpress/html-entities": "^3.35.0", - "@wordpress/i18n": "^4.35.0", - "@wordpress/icons": "^9.26.0", - "@wordpress/is-shallow-equal": "^4.35.0", - "@wordpress/keycodes": "^3.35.0", - "@wordpress/primitives": "^3.33.0", - "@wordpress/private-apis": "^0.17.0", - "@wordpress/rich-text": "^6.12.0", - "@wordpress/warning": "^2.35.0", - "change-case": "^4.1.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "date-fns": "^2.28.0", - "deepmerge": "^4.3.0", - "dom-scroll-into-view": "^1.2.1", - "downshift": "^6.0.15", - "fast-deep-equal": "^3.1.3", - "framer-motion": "^10.11.6", - "gradient-parser": "^0.1.5", - "highlight-words-core": "^1.2.2", - "is-plain-object": "^5.0.0", - "memize": "^2.1.0", - "path-to-regexp": "^6.2.1", - "re-resizable": "^6.4.0", - "react-colorful": "^5.3.1", - "reakit": "^1.3.11", - "remove-accents": "^0.4.2", - "use-lilius": "^2.0.1", - "uuid": "^8.3.0", - "valtio": "1.7.0" + "@babel/runtime": "7.25.7", + "@wordpress/block-editor": "*", + "@wordpress/blocks": "*", + "@wordpress/components": "*", + "@wordpress/core-data": "*", + "@wordpress/data": "*", + "@wordpress/element": "*", + "@wordpress/i18n": "*", + "@wordpress/icons": "*", + "@wordpress/notices": "*", + "@wordpress/private-apis": "*", + "@wordpress/url": "*" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, - "node_modules/@wordpress/compose": { - "version": "6.12.0", + "node_modules/@wordpress/rich-text": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-7.17.0.tgz", + "integrity": "sha512-HEmApVDjConxYe3cP8P+Zs0xLJZPMhfWal38MQmFelQtCNk+kT0IBg5SkFAcWYY+c4gzhK+dMKawc72uWDfm8w==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.35.0", - "@wordpress/dom": "^3.35.0", - "@wordpress/element": "^5.12.0", - "@wordpress/is-shallow-equal": "^4.35.0", - "@wordpress/keycodes": "^3.35.0", - "@wordpress/priority-queue": "^2.35.0", - "change-case": "^4.1.2", - "clipboard": "^2.0.8", - "mousetrap": "^1.6.5", - "use-memo-one": "^1.1.1" + "@babel/runtime": "7.25.7", + "@wordpress/a11y": "^4.17.0", + "@wordpress/compose": "^7.17.0", + "@wordpress/data": "^10.17.0", + "@wordpress/deprecated": "^4.17.0", + "@wordpress/element": "^6.17.0", + "@wordpress/escape-html": "^3.17.0", + "@wordpress/i18n": "^5.17.0", + "@wordpress/keycodes": "^4.17.0", + "memize": "^2.1.0" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { "react": "^18.0.0" } }, - "node_modules/@wordpress/core-data": { - "version": "6.12.0", + "node_modules/@wordpress/router": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@wordpress/router/-/router-1.13.0.tgz", + "integrity": "sha512-Zf0TYT3njucepIEEjwp7gVTD/FAuXM+TByBwqFQ2OEIksJ3VYUJ8EpVFnnLnFiHNGPfyu/NYdJo9QyO8oedvXw==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.32.0", - "@wordpress/blocks": "^12.12.0", - "@wordpress/compose": "^6.12.0", - "@wordpress/data": "^9.5.0", - "@wordpress/deprecated": "^3.35.0", - "@wordpress/element": "^5.12.0", - "@wordpress/html-entities": "^3.35.0", - "@wordpress/i18n": "^4.35.0", - "@wordpress/is-shallow-equal": "^4.35.0", - "@wordpress/url": "^3.36.0", - "change-case": "^4.1.2", - "equivalent-key-map": "^0.2.2", - "fast-deep-equal": "^3.1.3", - "memize": "^2.1.0", - "rememo": "^4.0.2", - "uuid": "^8.3.0" + "@babel/runtime": "7.25.7", + "@wordpress/element": "*", + "@wordpress/private-apis": "*", + "@wordpress/url": "*", + "history": "^5.3.0" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { "react": "^18.0.0" } }, - "node_modules/@wordpress/data": { - "version": "9.5.0", + "node_modules/@wordpress/server-side-render": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-5.17.0.tgz", + "integrity": "sha512-xJWABbtCZmkO6+Xa1DS3Mq+f2ZKH540aj5xeN7M1W1meAFdcZlEAbQI+Kn1PuXI9VpHIh5K+JOybHD06TI4hZQ==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/compose": "^6.12.0", - "@wordpress/deprecated": "^3.35.0", - "@wordpress/element": "^5.12.0", - "@wordpress/is-shallow-equal": "^4.35.0", - "@wordpress/priority-queue": "^2.35.0", - "@wordpress/private-apis": "^0.17.0", - "@wordpress/redux-routine": "^4.35.0", - "deepmerge": "^4.3.0", - "equivalent-key-map": "^0.2.2", - "is-plain-object": "^5.0.0", - "is-promise": "^4.0.0", - "redux": "^4.1.2", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" + "@babel/runtime": "7.25.7", + "@wordpress/api-fetch": "^7.17.0", + "@wordpress/blocks": "^14.6.0", + "@wordpress/components": "^29.3.0", + "@wordpress/compose": "^7.17.0", + "@wordpress/data": "^10.17.0", + "@wordpress/deprecated": "^4.17.0", + "@wordpress/element": "^6.17.0", + "@wordpress/i18n": "^5.17.0", + "@wordpress/url": "^4.17.0", + "fast-deep-equal": "^3.1.3" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { - "react": "^18.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@wordpress/date": { - "version": "4.36.0", + "node_modules/@wordpress/shortcode": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-4.17.0.tgz", + "integrity": "sha512-sNPUmeeK/dxK5z8BWSsk5OqRSf2UzfczpKu3upRn9eIdgG31SCXPgzvps73upIrxZNDCTQVVFhq47KADX8TiUA==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.36.0", - "moment": "^2.29.4", - "moment-timezone": "^0.5.40" + "@babel/runtime": "7.25.7", + "memize": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@wordpress/deprecated": { - "version": "3.36.0", + "node_modules/@wordpress/style-engine": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/style-engine/-/style-engine-2.17.0.tgz", + "integrity": "sha512-6eIdeQH0t7va1AjZIGo8sEW8NE+dcz//KXp+HsW/2XhATAIPjUjFJ2/SVRNCj3JHFKSjKpxnZi26xalfET0PqA==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.36.0" + "@babel/runtime": "7.25.7", + "change-case": "^4.1.2" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@wordpress/dom": { - "version": "3.36.0", + "node_modules/@wordpress/sync": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@wordpress/sync/-/sync-1.13.0.tgz", + "integrity": "sha512-bkWKffktsObwf79VJkSpNFMHZ9SBy8dByXw1xYkbDLoCbGvTtKkLG6H3cb2C2y65pvFmeW6BeNsqtf5if9zD4w==", + "dev": true, "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.36.0" + "@babel/runtime": "7.25.7", + "@types/simple-peer": "^9.11.5", + "@wordpress/url": "*", + "import-locals": "^2.0.0", + "lib0": "^0.2.42", + "simple-peer": "^9.11.0", + "y-indexeddb": "~9.0.11", + "y-protocols": "^1.0.5", + "y-webrtc": "~10.2.5", + "yjs": "~13.6.6" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@wordpress/dom-ready": { - "version": "3.36.0", + "node_modules/@wordpress/token-list": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-3.17.0.tgz", + "integrity": "sha512-TO224Seolfy/eapbOg15poz1Ws44xW3KHrqeo7Jp+6hmqQh/5OJE5wDFTzgsbdnAXFzy3DAGJxxxrCv0qpf+YA==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0" + "@babel/runtime": "7.25.7" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@wordpress/element": { - "version": "5.13.0", + "node_modules/@wordpress/undo-manager": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-1.17.0.tgz", + "integrity": "sha512-inSOCUneGMmFq3jRTB9uIws/+6VWpz0zvY2IPW/vjWbz7Gg1YbJ+lmbbgtJCoiJ7Ei00b4sagvzI00TNUXe9mg==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@types/react": "^18.0.21", - "@types/react-dom": "^18.0.6", - "@wordpress/escape-html": "^2.36.0", - "change-case": "^4.1.2", - "is-plain-object": "^5.0.0", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "@babel/runtime": "7.25.7", + "@wordpress/is-shallow-equal": "^5.17.0" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@wordpress/element/node_modules/react": { - "version": "18.2.0", - "license": "MIT", + "node_modules/@wordpress/upload-media": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/upload-media/-/upload-media-0.2.0.tgz", + "integrity": "sha512-xPPru9rSDTKWpFMMM5dOaPQIkf38L3gNinjSHkU7arFyK14G60HklvZJ/MTk7RjjgQ7h1sYe8tvdiTvI8CQZyQ==", + "license": "GPL-2.0-or-later", "dependencies": { - "loose-envify": "^1.1.0" + "@babel/runtime": "7.25.7", + "@shopify/web-worker": "^6.4.0", + "@wordpress/api-fetch": "^7.17.0", + "@wordpress/blob": "^4.17.0", + "@wordpress/compose": "^7.17.0", + "@wordpress/data": "^10.17.0", + "@wordpress/element": "^6.17.0", + "@wordpress/i18n": "^5.17.0", + "@wordpress/preferences": "^4.17.0", + "@wordpress/private-apis": "^1.17.0", + "@wordpress/url": "^4.17.0", + "uuid": "^9.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@wordpress/element/node_modules/react-dom": { - "version": "18.2.0", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/@wordpress/element/node_modules/scheduler": { - "version": "0.23.0", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@wordpress/escape-html": { - "version": "2.36.0", + "node_modules/@wordpress/url": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-4.17.0.tgz", + "integrity": "sha512-aFU1w2Wcz2/YdapPYozeXbb7C7LzfYZmAg4Bu28zTSxxrpKYocr/oYH7D8V13uHzfBoqTzL8XYM7wj17Dlcdag==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0" + "@babel/runtime": "7.25.7", + "remove-accents": "^0.5.0" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@wordpress/eslint-plugin": { - "version": "14.8.0", + "node_modules/@wordpress/viewport": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-6.13.0.tgz", + "integrity": "sha512-QpY+dJFlLbsVNO4SCUTuETv3gYzUB3v2zcFRISCNZZozsx1vm+I97d8g4+A0nI0b5OgzvRSHX7CSQpZOqiWJAA==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { - "@babel/eslint-parser": "^7.16.0", - "@typescript-eslint/eslint-plugin": "^5.3.0", - "@typescript-eslint/parser": "^5.3.0", - "@wordpress/babel-preset-default": "^7.19.0", - "@wordpress/prettier-config": "^2.18.0", - "cosmiconfig": "^7.0.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-jest": "^27.2.1", - "eslint-plugin-jsdoc": "^39.6.9", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-prettier": "^3.3.0", - "eslint-plugin-react": "^7.27.0", - "eslint-plugin-react-hooks": "^4.3.0", - "globals": "^13.12.0", - "requireindex": "^1.2.0" + "@babel/runtime": "7.25.7", + "@wordpress/compose": "*", + "@wordpress/data": "*", + "@wordpress/element": "*" }, "engines": { - "node": ">=14", - "npm": ">=6.14.4" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { - "@babel/core": ">=7", - "eslint": ">=8", - "prettier": ">=2", - "typescript": ">=4" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - }, - "typescript": { - "optional": true - } + "react": "^18.0.0" } }, - "node_modules/@wordpress/eslint-plugin/node_modules/globals": { - "version": "13.20.0", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, + "node_modules/@wordpress/warning": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.17.0.tgz", + "integrity": "sha512-dmEjDbYtfPD8rMRtSrLxoW3g8CLKl+vK5pdXvDvG0lBoRjqwtRPP4cgNBOC8cq8gXRCwh5NDDtM2C8MTjGjVsQ==", + "license": "GPL-2.0-or-later", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@wordpress/hooks": { - "version": "3.36.0", + "node_modules/@wordpress/wordcount": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-4.17.0.tgz", + "integrity": "sha512-lT4NmbK0fMX+mqm/1XSoTsW7VqmxApZcZFPtWvT5UH6js1XcDrQa9liIUv6RyMlrrLHTTDrq+e4mNVeND68o5A==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0" + "@babel/runtime": "7.25.7" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@wordpress/html-entities": { - "version": "3.36.0", - "license": "GPL-2.0-or-later", + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "devOptional": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.0" + "event-target-shim": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=6.5" } }, - "node_modules/@wordpress/i18n": { - "version": "4.36.0", - "license": "GPL-2.0-or-later", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.36.0", - "gettext-parser": "^1.3.1", - "memize": "^2.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "devOptional": true, "bin": { - "pot-to-php": "tools/pot-to-php.js" + "acorn": "bin/acorn" }, "engines": { - "node": ">=12" + "node": ">=0.4.0" } }, - "node_modules/@wordpress/icons": { - "version": "9.26.0", - "license": "GPL-2.0-or-later", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/element": "^5.12.0", - "@wordpress/primitives": "^3.33.0" + "acorn": "^8.11.0" }, "engines": { - "node": ">=12" + "node": ">=0.4.0" } }, - "node_modules/@wordpress/is-shallow-equal": { - "version": "4.36.0", - "license": "GPL-2.0-or-later", + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=12" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@wordpress/keyboard-shortcuts": { - "version": "4.12.0", - "license": "GPL-2.0-or-later", + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/data": "^9.5.0", - "@wordpress/element": "^5.12.0", - "@wordpress/keycodes": "^3.35.0", - "rememo": "^4.0.2" - }, - "engines": { - "node": ">=12" + "ajv": "^8.0.0" }, "peerDependencies": { - "react": "^18.0.0" + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/@wordpress/keycodes": { - "version": "3.36.0", - "license": "GPL-2.0-or-later", + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/i18n": "^4.36.0", - "change-case": "^4.1.2" + "fast-deep-equal": "^3.1.3" }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/@wordpress/notices": { - "version": "4.3.0", - "license": "GPL-2.0-or-later", + "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==", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.35.0", - "@wordpress/data": "^9.5.0" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/@wordpress/preferences": { - "version": "3.12.0", - "license": "GPL-2.0-or-later", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.35.0", - "@wordpress/components": "^25.1.0", - "@wordpress/data": "^9.5.0", - "@wordpress/i18n": "^4.35.0", - "@wordpress/icons": "^9.26.0", - "classnames": "^2.3.1" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - } - }, - "node_modules/@wordpress/prettier-config": { - "version": "2.19.0", + "node_modules/ansis": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-1.5.2.tgz", + "integrity": "sha512-T3vUABrcgSj/HXv27P+A/JxGk5b/ydx0JjN3lgjBTC2iZUFxQGjh43zCzLSbU4C1QTgmx9oaPeWNJFM+auI8qw==", "dev": true, - "license": "GPL-2.0-or-later", "engines": { - "node": ">=14" + "node": ">=12.13" }, - "peerDependencies": { - "prettier": ">=2" + "funding": { + "type": "patreon", + "url": "https://patreon.com/biodiscus" } }, - "node_modules/@wordpress/primitives": { - "version": "3.34.0", - "license": "GPL-2.0-or-later", + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/element": "^5.13.0", - "classnames": "^2.3.1" + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" }, "engines": { - "node": ">=12" + "node": ">= 14" } }, - "node_modules/@wordpress/priority-queue": { - "version": "2.36.0", - "license": "GPL-2.0-or-later", + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.0", - "requestidlecallback": "^0.3.0" + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">= 14" } }, - "node_modules/@wordpress/private-apis": { - "version": "0.17.1", - "license": "GPL-2.0-or-later", + "node_modules/archiver-utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.0" - }, - "engines": { - "node": ">=12" + "balanced-match": "^1.0.0" } }, - "node_modules/@wordpress/redux-routine": { - "version": "4.36.0", - "license": "GPL-2.0-or-later", + "node_modules/archiver-utils/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, "dependencies": { - "@babel/runtime": "^7.16.0", - "is-plain-object": "^5.0.0", - "is-promise": "^4.0.0", - "rungen": "^0.3.2" + "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": ">=12" + "bin": { + "glob": "dist/esm/bin.mjs" }, - "peerDependencies": { - "redux": ">=4" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@wordpress/rich-text": { - "version": "6.12.0", - "license": "GPL-2.0-or-later", + "node_modules/archiver-utils/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, "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.35.0", - "@wordpress/compose": "^6.12.0", - "@wordpress/data": "^9.5.0", - "@wordpress/deprecated": "^3.35.0", - "@wordpress/element": "^5.12.0", - "@wordpress/escape-html": "^2.35.0", - "@wordpress/i18n": "^4.35.0", - "@wordpress/keycodes": "^3.35.0", - "memize": "^2.1.0", - "rememo": "^4.0.2" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, - "peerDependencies": { - "react": "^18.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@wordpress/server-side-render": { - "version": "4.12.0", - "license": "GPL-2.0-or-later", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.32.0", - "@wordpress/blocks": "^12.12.0", - "@wordpress/components": "^25.1.0", - "@wordpress/compose": "^6.12.0", - "@wordpress/data": "^9.5.0", - "@wordpress/deprecated": "^3.35.0", - "@wordpress/element": "^5.12.0", - "@wordpress/i18n": "^4.35.0", - "@wordpress/url": "^3.36.0", - "fast-deep-equal": "^3.1.3" - }, + "node_modules/archiver-utils/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/@wordpress/shortcode": { - "version": "3.36.0", - "license": "GPL-2.0-or-later", + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.0", - "memize": "^2.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@wordpress/style-engine": { - "version": "1.19.0", - "license": "GPL-2.0-or-later", + "node_modules/archiver-utils/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==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.0", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" + "safe-buffer": "~5.2.0" } }, - "node_modules/@wordpress/token-list": { - "version": "2.36.0", - "license": "GPL-2.0-or-later", - "dependencies": { - "@babel/runtime": "^7.16.0" - }, + "node_modules/archiver/node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=8.0.0" } }, - "node_modules/@wordpress/url": { - "version": "3.37.0", - "license": "GPL-2.0-or-later", + "node_modules/archiver/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.0", - "remove-accents": "^0.4.2" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/@wordpress/warning": { - "version": "2.36.0", - "license": "GPL-2.0-or-later", - "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@wordpress/wordcount": { - "version": "3.36.0", - "license": "GPL-2.0-or-later", + "node_modules/archiver/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==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.0" - }, - "engines": { - "node": ">=12" + "safe-buffer": "~5.2.0" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true, - "license": "BSD-3-Clause" + "license": "MIT" }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "dev": true, - "license": "Apache-2.0" + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, - "node_modules/acorn": { - "version": "8.9.0", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dependencies": { + "tslib": "^2.0.0" }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">=10" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", + "node_modules/array-buffer-byte-length": { + "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": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "8.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "node": ">= 0.4" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", + "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": { - "ajv": "^8.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" }, - "peerDependencies": { - "ajv": "^8.0.0" + "engines": { + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ajv-keywords": { - "version": "5.1.0", + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "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": { - "fast-deep-equal": "^3.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ansi-colors": { - "version": "1.1.0", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-wrap": "^0.1.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ansi-cyan": { - "version": "0.1.1", + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "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": { - "ansi-wrap": "0.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ansi-gray": { - "version": "0.1.1", + "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": { - "ansi-wrap": "0.1.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.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ansi-red": { - "version": "0.1.1", + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "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": { - "ansi-wrap": "0.1.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", + "node_modules/arraybuffer.prototype.slice": { + "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", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/anymatch": { - "version": "3.1.3", + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } + "license": "MIT" }, - "node_modules/append-buffer": { - "version": "1.0.2", + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", "dev": true, "license": "MIT", - "dependencies": { - "buffer-equal": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/archy": { - "version": "1.0.0", - "dev": true, - "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==" }, - "node_modules/argparse": { - "version": "2.0.1", + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "dev": true, - "license": "Python-2.0" - }, - "node_modules/aria-hidden": { - "version": "1.2.3", - "license": "MIT", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "tslib": "^2.0.0" + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/aria-query": { - "version": "5.3.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" - } + "node_modules/autosize": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/autosize/-/autosize-4.0.4.tgz", + "integrity": "sha512-5yxLQ22O0fCRGoxGfeLSNt3J8LB1v+umtpMnPW6XjkTWXKoN0AmXAIhelJcDtFT/Y/wYWmfE+oqU10Q0b8FhaQ==" }, - "node_modules/arr-diff": { - "version": "1.1.0", + "node_modules/available-typed-arrays": { + "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": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-diff/node_modules/array-slice": { - "version": "0.2.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arr-filter": { - "version": "1.1.2", - "dev": true, + "node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "license": "MIT", "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", + "dev": true }, - "node_modules/arr-map": { - "version": "2.0.2", + "node_modules/babel-loader": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", "dev": true, "license": "MIT", "dependencies": { - "make-iterator": "^1.0.0" + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", + "node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-each": { - "version": "1.0.1", - "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array-includes": { - "version": "3.1.6", + "node_modules/babel-loader/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array-initial": { - "version": "1.1.0", + "node_modules/babel-loader/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, - "license": "MIT", "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" + "p-locate": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array-initial/node_modules/is-number": { + "node_modules/babel-loader/node_modules/p-limit": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last": { - "version": "1.3.0", - "dev": true, - "license": "MIT", "dependencies": { - "is-number": "^4.0.0" + "yocto-queue": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", + "node_modules/babel-loader/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, - "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array-slice": { - "version": "1.1.0", + "node_modules/babel-loader/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/array-sort": { - "version": "1.0.0", + "node_modules/babel-loader/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dev": true, - "license": "MIT", "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" + "find-up": "^6.3.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-sort/node_modules/kind-of": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array-union": { - "version": "2.1.0", + "node_modules/babel-loader/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array-uniq": { - "version": "1.0.3", - "dev": true, - "license": "MIT", + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10", + "npm": ">=6" } }, - "node_modules/array-unique": { - "version": "0.3.2", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.3", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "@babel/helper-define-polyfill-provider": "^0.6.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", + "node_modules/babel-plugin-prismjs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-prismjs/-/babel-plugin-prismjs-2.1.0.tgz", + "integrity": "sha512-ehzSKYfeAz4U78zi/sfwsjDPlq0LvDKxNefcZTJ/iKBu+plsHsLqZhUeGf1+82LAcA35UZGbU6ksEx2Utphc/g==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "peerDependencies": { + "prismjs": "^1.18.0" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/ast-types-flow": { - "version": "0.0.7", + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true, "license": "ISC" }, - "node_modules/async-done": { - "version": "1.3.2", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/async-each": { - "version": "1.0.6", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "devOptional": true, "funding": [ { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], - "license": "MIT" - }, - "node_modules/async-settle": { - "version": "1.0.0", - "dev": true, "license": "MIT", "dependencies": { - "async-done": "^1.2.2" + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "license": "MIT" - }, - "node_modules/atob": { - "version": "2.1.2", - "dev": true, - "license": "(MIT OR Apache-2.0)", "bin": { - "atob": "bin/atob.js" + "browserslist": "cli.js" }, "engines": { - "node": ">= 4.5.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/autoprefixer": { - "version": "10.4.14", + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "funding": [ { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "type": "github", + "url": "https://github.com/sponsors/feross" }, { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "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==", + "devOptional": true + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001464", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/autosize": { - "version": "4.0.4", - "license": "MIT" + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", "dev": true, "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, "engines": { "node": ">= 0.4" }, @@ -5519,1610 +6462,2160 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/axe-core": { - "version": "4.7.2", - "dev": true, - "license": "MPL-2.0", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/axios": { - "version": "1.4.0", - "license": "MIT", + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "node_modules/axobject-query": { - "version": "3.2.1", + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "dequal": "^2.0.3" + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "node_modules/babel-loader": { - "version": "9.1.2", + "node_modules/caniuse-lite": { + "version": "1.0.30001685", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001685.tgz", + "integrity": "sha512-e/kJN1EMyHQzgcMEEgoo+YTCO1NGCmIYHk5Qk8jT6AazWemS5QFKJ5ShCJlH3GZrNIdZofcNCEwZqbMjjKzmnA==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "find-cache-dir": "^3.3.2", - "schema-utils": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">=10" }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/babel-loader/node_modules/find-cache-dir": { - "version": "3.3.2", + "node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/babel-loader/node_modules/find-up": { - "version": "4.1.0", + "node_modules/chalk/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/babel-loader/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/chalk/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/babel-loader/node_modules/make-dir": { - "version": "3.1.0", + "node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">=8" + "node": ">= 14.16.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/babel-loader/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "devOptional": true, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.0" } }, - "node_modules/babel-loader/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { "node": ">=8" } }, - "node_modules/babel-loader/node_modules/pkg-dir": { - "version": "4.2.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/client-zip": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/client-zip/-/client-zip-2.4.6.tgz", + "integrity": "sha512-e7t1u14h/yT0A12qBwFsaus8UZZ8+MCaNAEn/z53mrukLq/LFcKX7TkbntAppGu8he2p8pz9vc5NEGE/h4ohlw==", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" } }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "license": "MIT", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { - "node": ">=10", - "npm": ">=6" + "node": ">=6" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.3", + "node_modules/clone-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==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.4.0", - "semver": "^6.1.1" + "isobject": "^3.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.0", - "core-js-compat": "^3.30.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.0", - "dev": true, + "node_modules/cmdk": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.0.0.tgz", + "integrity": "sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==", "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.0" + "@radix-ui/react-dialog": "1.0.5", + "@radix-ui/react-primitive": "1.0.3" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/babel-plugin-prismjs": { - "version": "2.1.0", - "dev": true, - "license": "MIT", + "node_modules/codemirror": { + "version": "5.65.15", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.15.tgz", + "integrity": "sha512-YC4EHbbwQeubZzxLl5G4nlbLc1T21QTrKGaOal/Pkm9dVDMZXMH7+ieSPEOZCtO9I68i8/oteJKOxzHC2zR+0g==" + }, + "node_modules/codemirror-colorpicker": { + "version": "1.9.80", + "resolved": "https://registry.npmjs.org/codemirror-colorpicker/-/codemirror-colorpicker-1.9.80.tgz", + "integrity": "sha512-7lGqNxf5haBJXLnVR1ynPiPkN2d1Whm0jdy8Z9QsSOhRWVyK2C2ihgm1dX4DCks57ht/jKMdpL9lYv+zAphxWQ==", "peerDependencies": { - "prismjs": "^1.18.0" + "codemirror": "^5.48.0" } }, - "node_modules/bach": { - "version": "1.2.0", - "dev": true, - "license": "MIT", + "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": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" + "color-name": "1.1.3" } }, - "node_modules/balanced-match": { - "version": "1.0.2", + "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==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true, "license": "MIT" }, - "node_modules/base": { - "version": "0.11.2", - "dev": true, - "license": "MIT", + "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": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", "dev": true, - "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/binaryextensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", - "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", + "node_modules/compress-commons/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dev": true, - "engines": { - "node": ">=0.8" + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, - "funding": { - "url": "https://bevry.me/fund" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/bindings": { - "version": "1.5.0", + "node_modules/compress-commons/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==", "dev": true, - "license": "MIT", - "optional": true, "dependencies": { - "file-uri-to-path": "1.0.0" + "safe-buffer": "~5.2.0" } }, - "node_modules/body-scroll-lock": { - "version": "3.1.5", - "license": "MIT" + "node_modules/computed-style": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/computed-style/-/computed-style-0.1.4.tgz", + "integrity": "sha512-WpAmaKbMNmS3OProfHIdJiNleNJdgUrJfbKArXua28QF7+0CoZjlLn0lp6vlc+dl5r2/X9GQiQRQQU4BzSa69w==" }, - "node_modules/boolbase": { - "version": "1.0.0", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, + "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==", + "devOptional": true + }, + "node_modules/core-js": { + "version": "3.33.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.2.tgz", + "integrity": "sha512-XeBzWI6QL3nJQiHmdzbAOiMYqjrb7hwU7A39Qhvd/POSa/t9E1AeZyEZx3fNvp/vtM8zXwhoL0FsiS0hD0pruQ==", "dev": true, - "license": "ISC" + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } }, - "node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/core-js-compat": { + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz", + "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "browserslist": "^4.24.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/braces": { - "version": "3.0.2", - "dev": true, - "license": "MIT", + "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==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dependencies": { - "fill-range": "^7.0.1" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/browserslist": { - "version": "4.21.9", + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - }, "bin": { - "browserslist": "cli.js" + "crc32": "bin/crc32.njs" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=0.8" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", "dev": true, - "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, "engines": { - "node": "*" + "node": ">= 14" } }, - "node_modules/buffer-equal": { - "version": "1.0.1", + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/buffer-from": { - "version": "1.1.2", + "node_modules/crc32-stream/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==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true, "license": "MIT" }, - "node_modules/cache-base": { - "version": "1.0.1", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/call-bind": { - "version": "1.0.2", + "node_modules/css-declaration-sorter": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", "dev": true, - "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/callsites": { - "version": "3.1.0", - "license": "MIT", + "node_modules/css-loader/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/camel-case": { - "version": "4.1.2", - "license": "MIT", + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/camelcase": { - "version": "3.0.0", + "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==", "dev": true, "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/caniuse-api": { - "version": "3.0.0", + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001509", + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/capital-case": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "bin": { + "cssesc": "bin/cssesc" }, "engines": { "node": ">=4" } }, - "node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/cssnano": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.6.tgz", + "integrity": "sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==", + "dev": true, "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^7.0.6", + "lilconfig": "^3.1.2" + }, "engines": { - "node": ">=0.8.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/change-case": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" + "node_modules/cssnano-preset-default": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.6.tgz", + "integrity": "sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^5.0.0", + "postcss-calc": "^10.0.2", + "postcss-colormin": "^7.0.2", + "postcss-convert-values": "^7.0.4", + "postcss-discard-comments": "^7.0.3", + "postcss-discard-duplicates": "^7.0.1", + "postcss-discard-empty": "^7.0.0", + "postcss-discard-overridden": "^7.0.0", + "postcss-merge-longhand": "^7.0.4", + "postcss-merge-rules": "^7.0.4", + "postcss-minify-font-values": "^7.0.0", + "postcss-minify-gradients": "^7.0.0", + "postcss-minify-params": "^7.0.2", + "postcss-minify-selectors": "^7.0.4", + "postcss-normalize-charset": "^7.0.0", + "postcss-normalize-display-values": "^7.0.0", + "postcss-normalize-positions": "^7.0.0", + "postcss-normalize-repeat-style": "^7.0.0", + "postcss-normalize-string": "^7.0.0", + "postcss-normalize-timing-functions": "^7.0.0", + "postcss-normalize-unicode": "^7.0.2", + "postcss-normalize-url": "^7.0.0", + "postcss-normalize-whitespace": "^7.0.0", + "postcss-ordered-values": "^7.0.1", + "postcss-reduce-initial": "^7.0.2", + "postcss-reduce-transforms": "^7.0.0", + "postcss-svgo": "^7.0.1", + "postcss-unique-selectors": "^7.0.3" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/chokidar": { - "version": "3.5.3", + "node_modules/cssnano-utils": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.0.tgz", + "integrity": "sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "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" + "node": "^18.12.0 || ^20.9.0 || >=22.0" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, "engines": { - "node": ">=6.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/class-utils": { - "version": "0.3.6", + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "dev": true, "license": "MIT", "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/class-utils/node_modules/arr-union": { - "version": "3.1.0", + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/data-view-buffer": { + "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-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", + "node_modules/data-view-byte-length": { + "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": { - "is-descriptor": "^0.1.0" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" } }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", + "node_modules/data-view-byte-offset": { + "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": { - "kind-of": "^3.0.2" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "is-buffer": "^1.1.5" + "ms": "2.1.2" }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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==", "engines": { "node": ">=0.10.0" } }, - "node_modules/class-utils/node_modules/is-data-descriptor": { + "node_modules/deep-is": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, + "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==", "engines": { "node": ">=0.10.0" } }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/define-data-property": { + "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==", "dev": true, - "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", + "node_modules/define-properties": { + "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": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/class-utils/node_modules/kind-of": { - "version": "5.1.0", - "dev": true, - "license": "MIT", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { - "node": ">=0.10.0" + "node": ">=0.4.0" } }, - "node_modules/classnames": { - "version": "2.3.2", - "license": "MIT" + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" }, - "node_modules/clean-stack": { - "version": "2.2.0", + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, "engines": { - "node": ">=6" - } - }, - "node_modules/clipboard": { - "version": "2.0.11", - "license": "MIT", - "dependencies": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" + "node": ">=0.10" } }, - "node_modules/cliui": { - "version": "3.2.0", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "engines": { - "node": ">=0.10.0" + "node": ">=0.3.1" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^2.0.0" + "esutils": "^2.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/clone": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" } }, - "node_modules/clone-buffer": { - "version": "1.0.0", + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.10" + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/clone-deep": { - "version": "4.0.1", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" }, - "node_modules/clone-deep/node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "isobject": "^3.0.1" + "domelementtype": "^2.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/clone-stats": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/cloneable-readable": { - "version": "1.1.3", + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/codemirror": { - "version": "5.65.13", - "license": "MIT" - }, - "node_modules/codemirror-colorpicker": { - "version": "1.9.80", - "license": "MIT", - "peerDependencies": { - "codemirror": "^5.48.0" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/collection-map": { - "version": "1.0.0", - "dev": true, - "license": "MIT", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/collection-visit": { - "version": "1.0.0", + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, "license": "MIT", "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } + "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 }, - "node_modules/color-name": { - "version": "1.1.3", - "license": "MIT" + "node_modules/electron-to-chromium": { + "version": "1.5.68", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.68.tgz", + "integrity": "sha512-FgMdJlma0OzUYlbrtZ4AeXjKxKPk6KT8WOP8BjcqxWtlg8qyJQjRzPJzUtUn5GBg1oQ26hFs7HOOHJMYiJRnvQ==", + "devOptional": true, + "license": "ISC" }, - "node_modules/color-support": { - "version": "1.1.3", - "dev": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } + "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 }, - "node_modules/colord": { - "version": "2.9.3", - "license": "MIT" + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dependencies": { + "iconv-lite": "^0.6.2" + } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "license": "MIT", + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "devOptional": true, "dependencies": { - "delayed-stream": "~1.0.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">= 0.8" + "node": ">=10.13.0" } }, - "node_modules/commander": { - "version": "7.2.0", + "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": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">= 10" + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/comment-parser": { - "version": "1.3.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": ">= 12.0.0" + "node": ">=6" } }, - "node_modules/commondir": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/component-emitter": { - "version": "1.3.0", + "node_modules/envinfo": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", "dev": true, - "license": "MIT" - }, - "node_modules/compute-scroll-into-view": { - "version": "1.0.20", - "license": "MIT" + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } }, - "node_modules/computed-style": { - "version": "0.1.4" + "node_modules/equivalent-key-map": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/equivalent-key-map/-/equivalent-key-map-0.2.2.tgz", + "integrity": "sha512-xvHeyCDbZzkpN4VHQj/n+j2lOwL0VWszG30X4cOrc9Y7Tuo2qCdZK/0AMod23Z5dCtNUbaju6p0rwOhHUk05ew==" }, - "node_modules/concat-map": { - "version": "0.0.1", + "node_modules/err-code": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", + "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==", "dev": true, "license": "MIT" }, - "node_modules/concat-stream": { - "version": "1.6.2", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "license": "MIT", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "is-arrayish": "^0.2.1" } }, - "node_modules/constant-case": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "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.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "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.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "license": "MIT" - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/copy-props": { - "version": "2.0.5", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, - "license": "MIT", - "dependencies": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" + "engines": { + "node": ">= 0.4" } }, - "node_modules/core-js": { - "version": "3.31.0", + "node_modules/es-iterator-helpers": { + "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, - "hasInstallScript": true, "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "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.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.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/core-js-compat": { - "version": "3.31.0", + "node_modules/es-module-lexer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.0.tgz", + "integrity": "sha512-lcCr3v3OLezdfFyx9r5NRYHOUTQNnFEQ9E87Mx8Kc+iqyJNkO7MJoB4GQRTlIMw9kLLTwGw0OAkm4BQQud/d9g==", + "devOptional": true + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, - "license": "MIT", "dependencies": { - "browserslist": "^4.21.5" + "es-errors": "^1.3.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "engines": { + "node": ">= 0.4" } }, - "node_modules/core-util-is": { - "version": "1.0.3", + "node_modules/es-set-tostringtag": { + "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==", "dev": true, - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "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": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/css": { - "version": "3.0.0", - "dev": true, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "devOptional": true, "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" + "engines": { + "node": ">=6" } }, - "node_modules/css-declaration-sorter": { - "version": "6.4.0", - "dev": true, - "license": "ISC", + "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==", "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=10" }, - "peerDependencies": { - "postcss": "^8.0.9" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/css-select": { - "version": "5.1.0", + "node_modules/eslint": { + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", + "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.11.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.20.0", + "@eslint/plugin-kit": "^0.2.5", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/css-tree": { - "version": "2.3.1", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/css-what": { - "version": "6.1.0", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/css/node_modules/source-map": { - "version": "0.6.1", + "node_modules/eslint-import-resolver-typescript": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.7.0.tgz", + "integrity": "sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.7", + "enhanced-resolve": "^5.15.0", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", + "is-glob": "^4.0.3", + "stable-hash": "^0.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } } }, - "node_modules/cssesc": { - "version": "3.0.0", + "node_modules/eslint-import-resolver-typescript/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" + "dependencies": { + "ms": "^2.1.3" }, "engines": { - "node": ">=4" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/cssnano": { - "version": "6.0.1", + "node_modules/eslint-import-resolver-typescript/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, "license": "MIT", "dependencies": { - "cssnano-preset-default": "^6.0.1", - "lilconfig": "^2.1.0" + "debug": "^3.2.7" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" + "node": ">=4" }, - "peerDependencies": { - "postcss": "^8.2.15" + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/cssnano-preset-default": { - "version": "6.0.1", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^4.0.0", - "postcss-calc": "^9.0.0", - "postcss-colormin": "^6.0.0", - "postcss-convert-values": "^6.0.0", - "postcss-discard-comments": "^6.0.0", - "postcss-discard-duplicates": "^6.0.0", - "postcss-discard-empty": "^6.0.0", - "postcss-discard-overridden": "^6.0.0", - "postcss-merge-longhand": "^6.0.0", - "postcss-merge-rules": "^6.0.1", - "postcss-minify-font-values": "^6.0.0", - "postcss-minify-gradients": "^6.0.0", - "postcss-minify-params": "^6.0.0", - "postcss-minify-selectors": "^6.0.0", - "postcss-normalize-charset": "^6.0.0", - "postcss-normalize-display-values": "^6.0.0", - "postcss-normalize-positions": "^6.0.0", - "postcss-normalize-repeat-style": "^6.0.0", - "postcss-normalize-string": "^6.0.0", - "postcss-normalize-timing-functions": "^6.0.0", - "postcss-normalize-unicode": "^6.0.0", - "postcss-normalize-url": "^6.0.0", - "postcss-normalize-whitespace": "^6.0.0", - "postcss-ordered-values": "^6.0.0", - "postcss-reduce-initial": "^6.0.0", - "postcss-reduce-transforms": "^6.0.0", - "postcss-svgo": "^6.0.0", - "postcss-unique-selectors": "^6.0.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "ms": "^2.1.1" } }, - "node_modules/cssnano-utils": { - "version": "4.0.0", + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": ">=4" }, "peerDependencies": { - "postcss": "^8.2.15" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/csso": { - "version": "5.0.5", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { - "css-tree": "~2.2.0" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "ms": "^2.1.1" } }, - "node_modules/csso/node_modules/css-tree": { - "version": "2.2.1", + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.0.28", - "source-map-js": "^1.0.1" + "minimist": "^1.2.0" }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.28", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/csstype": { - "version": "3.1.2", - "license": "MIT" - }, - "node_modules/d": { - "version": "1.0.1", + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", + "node_modules/eslint-plugin-react": { + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/date-fns": { - "version": "2.30.0", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.21.0" + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "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.fromentries": "^2.0.8", + "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.12", + "string.prototype.repeat": "^1.0.0" }, "engines": { - "node": ">=0.11" + "node": ">=4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, - "node_modules/debug": { - "version": "4.3.4", + "node_modules/eslint-plugin-react-hooks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", + "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", "dev": true, "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, "engines": { - "node": ">=6.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, - "node_modules/debug-fabulous": { - "version": "1.1.0", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, - "license": "MIT", "dependencies": { - "debug": "3.X", - "memoizee": "0.4.X", - "object-assign": "4.X" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/debug-fabulous/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "devOptional": true, "dependencies": { - "ms": "^2.1.1" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "license": "MIT", + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "devOptional": true, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/decode-uri-component": { - "version": "0.2.2", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/deep-is": { - "version": "0.1.4", + "node_modules/eslint-webpack-plugin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-4.2.0.tgz", + "integrity": "sha512-rsfpFQ01AWQbqtjgPRr2usVRxhWDuG0YDYcG8DJOteD3EFnpeuYuOwk0PQiN7PRBTqS6ElNdtPZPggj8If9WnA==", "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", "license": "MIT", + "dependencies": { + "@types/eslint": "^8.56.10", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^8.0.0 || ^9.0.0", + "webpack": "^5.0.0" } }, - "node_modules/default-compare": { - "version": "1.0.0", + "node_modules/eslint-webpack-plugin/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==", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^5.0.2" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/default-compare/node_modules/kind-of": { - "version": "5.1.0", + "node_modules/eslint-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/default-resolution": { - "version": "2.0.0", + "node_modules/eslint/node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.10" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/define-properties": { - "version": "1.2.0", + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/define-property": { - "version": "2.0.2", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/del": { - "version": "6.1.1", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "license": "MIT", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "license": "MIT", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">=0.4.0" + "node": ">=10.13.0" } }, - "node_modules/delegate": { - "version": "3.2.0", + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, "license": "MIT" }, - "node_modules/dequal": { - "version": "2.0.3", + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, "engines": { - "node": ">=6" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/detect-file": { - "version": "1.0.0", + "node_modules/espree/node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=0.10.0" + "node": ">=0.4.0" } }, - "node_modules/detect-newline": { - "version": "2.1.0", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "license": "MIT" - }, - "node_modules/diff": { - "version": "4.0.2", - "license": "BSD-3-Clause", + "license": "Apache-2.0", "engines": { - "node": ">=0.3.1" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/dir-glob": { - "version": "3.0.1", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "path-type": "^4.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.10" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "dev": true, - "license": "Apache-2.0", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "devOptional": true, "dependencies": { - "esutils": "^2.0.2" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=4.0" } }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "devOptional": true, + "engines": { + "node": ">=4.0" } }, - "node_modules/dom-scroll-into-view": { - "version": "1.2.1", - "license": "MIT" - }, - "node_modules/dom-serializer": { - "version": "2.0.0", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/domelementtype": { - "version": "2.3.0", + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" + "engines": { + "node": ">=6" + } }, - "node_modules/domhandler": { - "version": "5.0.3", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "devOptional": true, "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "node": ">=0.8.x" } }, - "node_modules/domutils": { - "version": "3.1.0", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" + "@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" }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "engines": { + "node": ">=8.6.0" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "devOptional": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" }, - "node_modules/downshift": { - "version": "6.1.12", + "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", - "dependencies": { - "@babel/runtime": "^7.14.8", - "compute-scroll-into-view": "^1.0.17", - "prop-types": "^15.7.2", - "react-is": "^17.0.2", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "react": ">=16.12.0" + "engines": { + "node": ">= 4.9.1" } }, - "node_modules/duplexify": { - "version": "3.7.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==", "dev": true, - "license": "MIT", "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "reusify": "^1.0.4" } }, - "node_modules/each-props": { - "version": "1.3.2", + "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": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/each-props/node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/electron-to-chromium": { - "version": "1.4.442", - "dev": true, - "license": "ISC" + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" }, - "node_modules/emoji-regex": { - "version": "9.2.2", + "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" - }, - "node_modules/encoding": { - "version": "0.1.13", "license": "MIT", "dependencies": { - "iconv-lite": "^0.6.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" + "bin": { + "flat": "cli.js" } }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">=10.13.0" + "node": ">=16" } }, - "node_modules/entities": { - "version": "4.5.0", + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/equivalent-key-map": { - "version": "0.2.2", - "license": "MIT" - }, - "node_modules/error-ex": { - "version": "1.3.2", + "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-arrayish": "^0.2.1" + "is-callable": "^1.1.3" } }, - "node_modules/es-abstract": { - "version": "1.21.2", + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, - "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/es-module-lexer": { - "version": "1.3.0", + "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": "MIT" + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "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==", "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.4" + "node": ">= 6" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, - "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/framer-motion": { + "version": "11.3.28", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.3.28.tgz", + "integrity": "sha512-dqhoawipEAjqdv32zbv72sOMJZjol7dROWn7t/FOq23WXJ40O4OUybgnO2ldnuS+3YquSn8xO/KKRavZ+TBVOQ==", "dependencies": { - "has": "^1.0.3" + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "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": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "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" @@ -7131,6179 +8624,2831 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es5-ext": { - "version": "0.10.62", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "hasInstallScript": true, - "license": "ISC", - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "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==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/es6-symbol": { - "version": "3.1.3", + "node_modules/get-browser-rtc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-browser-rtc/-/get-browser-rtc-1.1.0.tgz", + "integrity": "sha512-MghbMJ61EJrRsDe7w1Bvqt3ZsBuqhce5nrn/XAwgwOXhcsz53/ltdxOse1h/8eKXj5slzxdsz56g5rzOFSGwfQ==", "dev": true, - "license": "ISC", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } + "license": "MIT" }, - "node_modules/es6-weak-map": { - "version": "2.0.3", + "node_modules/get-intrinsic": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/escalade": { - "version": "3.1.1", - "dev": true, - "license": "MIT", + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", "engines": { "node": ">=6" } }, - "node_modules/escape-string-regexp": { - "version": "4.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==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.4" } }, - "node_modules/eslint": { - "version": "8.43.0", + "node_modules/get-symbol-description": { + "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": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.43.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-config-prettier": { - "version": "8.8.0", + "node_modules/get-tsconfig": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", + "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", "dev": true, "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" + "dependencies": { + "resolve-pkg-maps": "^1.0.0" }, - "peerDependencies": { - "eslint": ">=7.0.0" + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "dev": true, - "license": "MIT", + "node_modules/gettext-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", + "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" + "encoding": "^0.1.12", + "safe-buffer": "^5.1.1" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", + "node_modules/glob": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ms": "^2.1.1" + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-module-utils": { - "version": "2.8.0", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "MIT", "dependencies": { - "debug": "^3.2.7" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "node": ">= 6" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "devOptional": true + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "balanced-match": "^1.0.0" } }, - "node_modules/eslint-plugin-import": { - "version": "2.27.5", + "node_modules/glob/node_modules/jackspeak": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz", + "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==", "dev": true, - "license": "MIT", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=4" + "node": "20 || >=22" }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", + "node_modules/glob/node_modules/lru-cache": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", + "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "engines": { + "node": "20 || >=22" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", + "node_modules/glob/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "esutils": "^2.0.2" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-plugin-jest": { - "version": "27.2.2", + "node_modules/glob/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "^5.10.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0", - "eslint": "^7.0.0 || ^8.0.0", - "jest": "*" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-jsdoc": { - "version": "39.9.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@es-joy/jsdoccomment": "~0.36.1", - "comment-parser": "1.3.1", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "esquery": "^1.4.0", - "semver": "^7.3.8", - "spdx-expression-parse": "^3.0.1" - }, "engines": { - "node": "^14 || ^16 || ^17 || ^18 || ^19" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/glob/node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", "dev": true, - "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.5.3", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "node": "20 || >=22" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.7.1", + "node_modules/globals": { + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" - }, "engines": { - "node": ">=4.0" + "node": ">=18" }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-prettier": { - "version": "3.4.1", + "node_modules/globalthis": { + "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": { - "prettier-linter-helpers": "^1.0.0" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react": { - "version": "7.32.2", - "dev": true, - "license": "MIT", + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "delegate": "^3.1.2" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, + "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==", + "devOptional": true + }, + "node_modules/gradient-parser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/gradient-parser/-/gradient-parser-0.1.5.tgz", + "integrity": "sha512-+uPlcVbjrKOnTzvz0MjTj7BfACj8OmxIa1moIjJV7btvhUMSJk0D47RfDCgDrZE3dYMz9Cf5xKJwnrKLjUq0KQ==", "engines": { "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-bigints": { + "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", - "dependencies": { - "is-core-module": "^2.9.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" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "dev": true, - "license": "Apache-2.0", + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, - "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "es-define-property": "^1.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/has-proto": { + "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": { - "color-convert": "^2.0.1" + "dunder-proto": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/has-tostringtag": { + "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": { - "color-name": "~1.1.4" + "has-symbols": "^1.0.3" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "function-bind": "^1.1.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">= 0.4" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "dev": true, - "license": "ISC", + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" + "capital-case": "^1.0.4", + "tslib": "^2.0.3" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", + "node_modules/highlight-words-core": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.2.tgz", + "integrity": "sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg==" + }, + "node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@babel/runtime": "^7.7.6" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" + "node_modules/hoist-non-react-statics/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==" }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", + "node_modules/hpq": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/hpq/-/hpq-1.4.0.tgz", + "integrity": "sha512-ycJQMRaRPBcfnoT1gS5I1XCvbbw9KO94Y0vkwksuOjcJMqNZtb03MF2tCItLI2mQbkZWSSeFinoRDPmjzv4tKg==" + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { - "has-flag": "^4.0.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/espree": { - "version": "9.5.2", + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/esquery": { - "version": "1.5.0", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/esrecurse": { - "version": "4.3.0", + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, "engines": { - "node": ">=4.0" + "node": ">= 4" } }, - "node_modules/estraverse": { - "version": "5.3.0", + "node_modules/immutable": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } + "license": "MIT" }, - "node_modules/esutils": { - "version": "2.0.3", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/event-emitter": { - "version": "0.3.5", + "node_modules/import-local": { + "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": { - "d": "1", - "es5-ext": "~0.10.14" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/events": { - "version": "3.3.0", + "node_modules/import-locals": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-locals/-/import-locals-2.0.0.tgz", + "integrity": "sha512-1/bPE89IZhyf7dr5Pkz7b4UyVXy5pEt7PTEfye15UEn3AK8+2zwcDCfKk9Pwun4ltfhOSszOrReSsFcDKw/yoA==", + "dev": true, + "license": "MIT" + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.x" + "node": ">=0.8.19" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "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": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dependencies": { - "ms": "2.0.0" + "loose-envify": "^1.0.0" } }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", + "node_modules/is-array-buffer": { + "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": { - "is-descriptor": "^0.1.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", + "node_modules/is-bigint": { + "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": { - "kind-of": "^3.0.2" + "has-bigints": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/is-boolean-object": { + "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": { - "is-buffer": "^1.1.5" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", + "node_modules/is-bun-module": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.1.0.tgz", + "integrity": "sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "semver": "^7.6.3" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "hasown": "^2.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", + "node_modules/is-data-view": { + "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": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", + "node_modules/is-date-object": { + "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": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/expand-tilde": { - "version": "2.0.2", + "node_modules/is-finalizationregistry": { + "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": { - "homedir-polyfill": "^1.0.1" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ext": { - "version": "1.7.0", + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "type": "^2.7.2" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "dev": true, - "license": "ISC" - }, - "node_modules/extend": { - "version": "3.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/extend-shallow": { - "version": "1.1.4", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "license": "MIT", "dependencies": { - "kind-of": "^1.1.0" + "is-extglob": "^2.1.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/extend-shallow/node_modules/kind-of": { - "version": "1.1.0", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/extglob": { - "version": "2.0.4", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" } }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", + "node_modules/is-number-object": { + "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": { - "is-descriptor": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", "engines": { "node": ">=0.10.0" } }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", + "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.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": { - "is-extendable": "^0.1.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", + "node_modules/is-set": { + "version": "2.0.3", + "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.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fancy-log": { - "version": "1.3.3", + "node_modules/is-shared-array-buffer": { + "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": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" + "call-bound": "^1.0.3" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "license": "Apache-2.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/fast-glob": { - "version": "3.2.12", + "node_modules/is-string": { + "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": { - "@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" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.15.0", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", + "node_modules/is-symbol": { + "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": { - "flat-cache": "^3.0.4" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/fill-range": { - "version": "7.0.1", + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "which-typed-array": "^1.1.16" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-cache-dir": { - "version": "2.1.0", + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-root": { + "node_modules/is-weakref": { "version": "1.1.0", - "license": "MIT" - }, - "node_modules/find-up": { - "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "call-bound": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/findup-sync": { - "version": "3.0.0", + "node_modules/is-weakset": { + "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": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/findup-sync/node_modules/arr-diff": { - "version": "4.0.0", + "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, + "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 + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/braces": { - "version": "2.3.2", + "node_modules/isomorphic.js": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz", + "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", "dev": true, "license": "MIT", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "GitHub Sponsors ❀", + "url": "https://github.com/sponsors/dmonad" } }, - "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/findup-sync/node_modules/braces/node_modules/is-extendable": { - "version": "0.1.1", + "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": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/findup-sync/node_modules/extend-shallow": { - "version": "3.0.2", + "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==", "dev": true, "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/findup-sync/node_modules/fill-range": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "devOptional": true, "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, - "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "devOptional": true, "dependencies": { - "is-extendable": "^0.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" } }, - "node_modules/findup-sync/node_modules/fill-range/node_modules/is-extendable": { - "version": "0.1.1", + "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==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/findup-sync/node_modules/is-number": { - "version": "3.0.0", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" + "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==" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "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==", + "devOptional": true, + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/jsx-ast-utils": { + "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": { - "is-buffer": "^1.1.5" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/findup-sync/node_modules/micromatch": { - "version": "3.1.10", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/to-regex-range": { - "version": "2.1.1", + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", "dev": true, - "license": "MIT", "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "readable-stream": "^2.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6.3" } }, - "node_modules/fined": { - "version": "1.2.0", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.8.0" } }, - "node_modules/fined/node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/lib0": { + "version": "0.2.98", + "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.98.tgz", + "integrity": "sha512-XteTiNO0qEXqqweWx+b21p/fBnNHUA1NwAtJNJek1oPrewEZs2uiT4gWivHKr9GqCjDPAhchz0UQO8NwU3bBNA==", "dev": true, "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "isomorphic.js": "^0.2.4" + }, + "bin": { + "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js", + "0gentesthtml": "bin/gentesthtml.js", + "0serve": "bin/0serve.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=16" + }, + "funding": { + "type": "GitHub Sponsors ❀", + "url": "https://github.com/sponsors/dmonad" } }, - "node_modules/flagged-respawn": { - "version": "1.0.1", + "node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "dev": true, - "license": "MIT", + "node_modules/line-height": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/line-height/-/line-height-0.3.1.tgz", + "integrity": "sha512-YExecgqPwnp5gplD2+Y8e8A5+jKpr25+DzMbFdI1/1UAr0FJrTFv4VkHLf8/6B590i1wUPJWMKKldkd/bdQ//w==", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "computed-style": "~0.1.3" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">= 4.0.0" } }, - "node_modules/flatted": { - "version": "3.2.7", - "dev": true, - "license": "ISC" - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, - "node_modules/for-in": { - "version": "1.0.2", - "dev": true, - "license": "MIT", + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "devOptional": true, "engines": { - "node": ">=0.10.0" + "node": ">=6.11.5" } }, - "node_modules/for-own": { - "version": "1.0.0", + "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": { - "for-in": "^1.0.1" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fork-stream": { - "version": "0.0.4", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true, - "license": "BSD" + "license": "MIT" }, - "node_modules/form-data": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" }, - "node_modules/fraction.js": { - "version": "4.2.0", + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } + "license": "MIT" }, - "node_modules/fragment-cache": { - "version": "0.2.1", + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true, - "license": "MIT", + "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==", "dependencies": { - "map-cache": "^0.2.2" + "js-tokens": "^3.0.0 || ^4.0.0" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/framer-motion": { - "version": "10.12.17", - "license": "MIT", + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dependencies": { - "tslib": "^2.4.0" - }, - "optionalDependencies": { - "@emotion/is-prop-valid": "^0.8.2" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } + "tslib": "^2.0.3" } }, - "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { - "version": "0.8.8", - "license": "MIT", - "optional": true, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "devOptional": true, + "license": "ISC", "dependencies": { - "@emotion/memoize": "0.7.4" + "yallist": "^3.0.2" } }, - "node_modules/framer-motion/node_modules/@emotion/memoize": { - "version": "0.7.4", - "license": "MIT", - "optional": true + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" }, - "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", + "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, - "license": "ISC" + "license": "CC0-1.0" + }, + "node_modules/memize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/memize/-/memize-2.1.0.tgz", + "integrity": "sha512-yywVJy8ctVlN5lNPxsep5urnZ6TTclwPEyigM9M3Bi8vseJBOfqNrGWN/r8NzuIt3PovM323W04blJfGQfQSVg==" + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "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==", + "devOptional": true }, - "node_modules/fsevents": { - "version": "2.3.2", + "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", - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">= 8" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8.6" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "dev": true, - "license": "MIT", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { - "node": ">=6.9.0" + "node": ">= 0.6" } }, - "node_modules/get-caller-file": { - "version": "1.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "dev": true, - "license": "MIT", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "mime-db": "1.52.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-nonce": { - "version": "1.0.1", - "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/get-stream": { - "version": "5.2.0", + "node_modules/mini-css-extract-plugin": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", + "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", "dev": true, "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" }, "engines": { - "node": ">=8" + "node": ">= 12.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "*" } }, - "node_modules/get-value": { - "version": "2.0.6", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gettext-parser": { - "version": "1.4.0", - "license": "MIT", - "dependencies": { - "encoding": "^0.1.12", - "safe-buffer": "^5.1.1" + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" } }, - "node_modules/glob": { - "version": "7.2.3", - "dev": true, - "license": "ISC", + "node_modules/moment-timezone": { + "version": "0.5.45", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", + "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "moment": "^2.29.4" }, "engines": { "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } + "node_modules/mousetrap": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", + "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" }, - "node_modules/glob-stream": { - "version": "6.1.0", - "dev": true, + "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==" + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">= 0.10" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/glob-stream/node_modules/glob-parent": { - "version": "3.1.0", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "devOptional": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "node_modules/glob-stream/node_modules/is-glob": { - "version": "3.1.0", + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", "dev": true, "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } + "optional": true }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "dev": true, - "license": "BSD-2-Clause" + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "devOptional": true }, - "node_modules/glob-watcher": { - "version": "5.0.5", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - }, "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/glob-watcher/node_modules/anymatch": { - "version": "2.0.0", + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, - "license": "ISC", - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/glob-watcher/node_modules/anymatch/node_modules/normalize-path": { + "node_modules/normalize-wheel": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", + "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==" + }, + "node_modules/nth-check": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "remove-trailing-separator": "^1.0.1" + "boolbase": "^1.0.0" }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "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==", "engines": { "node": ">=0.10.0" } }, - "node_modules/glob-watcher/node_modules/arr-diff": { - "version": "4.0.0", + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob-watcher/node_modules/binary-extensions": { - "version": "1.13.1", + "node_modules/object-keys": { + "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.10.0" + "node": ">= 0.4" } }, - "node_modules/glob-watcher/node_modules/braces": { - "version": "2.3.2", + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, "license": "MIT", "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob-watcher/node_modules/chokidar": { - "version": "2.1.8", + "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==", "dev": true, - "license": "MIT", "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, - "optionalDependencies": { - "fsevents": "^1.2.7" + "engines": { + "node": ">= 0.4" } }, - "node_modules/glob-watcher/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, - "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob-watcher/node_modules/fill-range": { - "version": "4.0.0", + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/glob-watcher/node_modules/fsevents": { - "version": "1.2.13", + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">= 4.0" - } - }, - "node_modules/glob-watcher/node_modules/glob-parent": { - "version": "3.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob-watcher/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.0" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/glob-watcher/node_modules/is-binary-path": { + "node_modules/own-keys": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", "dev": true, "license": "MIT", "dependencies": { - "binary-extensions": "^1.0.0" + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob-watcher/node_modules/is-extendable": { - "version": "0.1.1", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-watcher/node_modules/is-number": { - "version": "3.0.0", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-watcher/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/glob-watcher/node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/glob-watcher/node_modules/micromatch": { - "version": "3.1.10", - "dev": true, - "license": "MIT", + "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==", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "callsites": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/glob-watcher/node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "dev": true, - "license": "MIT", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-watcher/node_modules/micromatch/node_modules/is-extendable": { - "version": "1.0.1", - "dev": true, - "license": "MIT", + "node_modules/parsel-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/parsel-js/-/parsel-js-1.2.1.tgz", + "integrity": "sha512-omFBig09mUh/NjBGba4DxVFAsqCY4C/6UYIaJuDOxJw2GlpgUJdPlNF301971gCP3Gt727+F+NZIXN483VAKIg==", + "license": "MIT" + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/glob-watcher/node_modules/readdirp": { - "version": "2.2.1", - "dev": true, - "license": "MIT", + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/glob-watcher/node_modules/to-regex-range": { - "version": "2.1.1", + "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", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/global-modules": { - "version": "1.0.0", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/global-prefix": { - "version": "1.0.2", + "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==" + }, + "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": "MIT", "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" + "node": ">=16 || 14 >=14.18" }, - "bin": { - "which": "bin/which" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/globals": { - "version": "11.12.0", + "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 + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=4" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/globalthis": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3" - }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "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==", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/globby": { - "version": "11.1.0", + "node_modules/php-parser": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/php-parser/-/php-parser-3.2.2.tgz", + "integrity": "sha512-voj3rzCJmEbwHwH3QteON28wA6K+JbcaJEofyUZkUXmcViiXofjbSbcE5PtqtjX6nstnnAEYCFoRq0mkjP5/cg==", + "license": "BSD-3-Clause" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/glogg": { - "version": "1.0.2", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "license": "MIT", "dependencies": { - "sparkles": "^1.0.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/good-listener": { - "version": "1.2.2", - "license": "MIT", - "dependencies": { - "delegate": "^3.1.2" + "node": ">=8" } }, - "node_modules/gopd": { - "version": "1.0.1", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.3" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "dev": true, - "license": "ISC" - }, - "node_modules/gradient-parser": { - "version": "0.1.5", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "dev": true, - "license": "MIT" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/gulp": { - "version": "4.0.2", + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "bin": { - "gulp": "bin/gulp.js" + "p-locate": "^4.1.0" }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/gulp-clean": { - "version": "0.4.0", + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { - "fancy-log": "^1.3.2", - "plugin-error": "^0.1.2", - "rimraf": "^2.6.2", - "through2": "^2.0.3", - "vinyl": "^2.1.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=0.9" - } - }, - "node_modules/gulp-clean/node_modules/rimraf": { - "version": "2.7.1", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" + "node": ">=6" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gulp-cli": { - "version": "2.3.0", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - }, - "bin": { - "gulp": "bin/gulp.js" + "p-limit": "^2.2.0" }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/gulp-eslint-new": { - "version": "1.8.1", + "node_modules/possible-typed-array-names": { + "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", - "dependencies": { - "@types/eslint": "^8.40.0", - "@types/node": ">=12", - "eslint": "8", - "fancy-log": "^2.0.0", - "plugin-error": "^2.0.1", - "semver": "^7.5.1", - "ternary-stream": "^3.0.0", - "vinyl-fs": "^3.0.3" - }, "engines": { - "node": "^12.20 || ^14.13 || >=16" + "node": ">= 0.4" } }, - "node_modules/gulp-eslint-new/node_modules/fancy-log": { - "version": "2.0.0", - "dev": true, + "node_modules/postcss": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", + "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "color-support": "^1.1.3" + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">=10.13.0" + "node": "^10 || ^12 || >=14" } }, - "node_modules/gulp-eslint-new/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/postcss-calc": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.0.2.tgz", + "integrity": "sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "postcss-selector-parser": "^6.1.2", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=10" + "node": "^18.12 || ^20.9 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.38" } }, - "node_modules/gulp-eslint-new/node_modules/plugin-error": { - "version": "2.0.1", + "node_modules/postcss-colormin": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.2.tgz", + "integrity": "sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-colors": "^1.0.1" + "browserslist": "^4.23.3", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/gulp-eslint-new/node_modules/semver": { - "version": "7.5.3", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "node": "^18.12.0 || ^20.9.0 || >=22.0" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-eslint-new/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/gulp-flatmap": { - "version": "1.0.2", + "node_modules/postcss-convert-values": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.4.tgz", + "integrity": "sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==", "dev": true, "license": "MIT", "dependencies": { - "plugin-error": "0.1.2", - "through2": "2.0.3" + "browserslist": "^4.23.3", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-flatmap/node_modules/through2": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-phpcs": { - "version": "3.1.0", + "node_modules/postcss-discard-comments": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.3.tgz", + "integrity": "sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^1.1.1", - "fancy-log": "^1.3.3", - "plugin-error": "^1.0.1", - "pluralize": "^1.2.1", - "through2": "^2.0.0", - "which": "^1.2.7" + "postcss-selector-parser": "^6.1.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-phpcs/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-phpcs/node_modules/ansi-styles": { - "version": "2.2.1", + "node_modules/postcss-discard-duplicates": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.1.tgz", + "integrity": "sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-phpcs/node_modules/arr-diff": { - "version": "4.0.0", + "node_modules/postcss-discard-empty": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz", + "integrity": "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-phpcs/node_modules/arr-union": { - "version": "3.1.0", + "node_modules/postcss-discard-overridden": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.0.tgz", + "integrity": "sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-phpcs/node_modules/chalk": { - "version": "1.1.3", + "node_modules/postcss-hexrgba": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-hexrgba/-/postcss-hexrgba-2.1.0.tgz", + "integrity": "sha512-Bb8Ca/vTI/X2Pgq1O3VhOdXE0rg/hz6161MHMu93ebePw8d/I9GSOc+wbd151OGGxSyTz+z196tFeEpSafrJfA==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "postcss-value-parser": "^4.1.0" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "postcss": "^8.1.4" } }, - "node_modules/gulp-phpcs/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.1.1" + }, "engines": { - "node": ">=0.8.0" + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } } }, - "node_modules/gulp-phpcs/node_modules/extend-shallow": { - "version": "3.0.2", + "node_modules/postcss-loader": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", "dev": true, - "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-phpcs/node_modules/plugin-error": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" + "node": ">= 18.12.0" }, - "engines": { - "node": ">= 0.10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/gulp-phpcs/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/postcss-loader/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": { - "ansi-regex": "^2.0.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/gulp-phpcs/node_modules/supports-color": { - "version": "2.0.0", + "node_modules/postcss-loader/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "license": "MIT", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=0.8.0" + "node": ">=10" } }, - "node_modules/gulp-phpcs/node_modules/which": { - "version": "1.3.1", + "node_modules/postcss-merge-longhand": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.4.tgz", + "integrity": "sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" + "postcss-value-parser": "^4.2.0", + "stylehacks": "^7.0.4" }, - "bin": { - "which": "bin/which" + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-postcss": { - "version": "9.0.1", + "node_modules/postcss-merge-rules": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.4.tgz", + "integrity": "sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==", "dev": true, "license": "MIT", "dependencies": { - "fancy-log": "^1.3.3", - "plugin-error": "^1.0.1", - "postcss-load-config": "^3.0.0", - "vinyl-sourcemaps-apply": "^0.2.1" + "browserslist": "^4.23.3", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^5.0.0", + "postcss-selector-parser": "^6.1.2" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.0.0" + "postcss": "^8.4.31" } }, - "node_modules/gulp-postcss/node_modules/arr-diff": { - "version": "4.0.0", + "node_modules/postcss-minify-font-values": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.0.tgz", + "integrity": "sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==", "dev": true, "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-postcss/node_modules/arr-union": { - "version": "3.1.0", + "node_modules/postcss-minify-gradients": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.0.tgz", + "integrity": "sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==", "dev": true, "license": "MIT", + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^5.0.0", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-postcss/node_modules/extend-shallow": { - "version": "3.0.2", + "node_modules/postcss-minify-params": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.2.tgz", + "integrity": "sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==", "dev": true, "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "browserslist": "^4.23.3", + "cssnano-utils": "^5.0.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-postcss/node_modules/plugin-error": { - "version": "1.0.1", + "node_modules/postcss-minify-selectors": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.4.tgz", + "integrity": "sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" + "cssesc": "^3.0.0", + "postcss-selector-parser": "^6.1.2" }, "engines": { - "node": ">= 0.10" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-remove-sourcemaps": { - "version": "1.0.5", - "dev": true, - "license": "ISC" - }, - "node_modules/gulp-rename": { - "version": "2.0.0", + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, - "license": "MIT", "engines": { - "node": ">=4" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/gulp-replace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.4.tgz", - "integrity": "sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==", + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", "dev": true, "dependencies": { - "@types/node": "*", - "@types/vinyl": "^2.0.4", - "istextorbinary": "^3.0.0", - "replacestream": "^4.0.3", - "yargs-parser": ">=5.0.0-security.0" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/gulp-rtlcss": { - "version": "2.0.0", + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", "dev": true, - "license": "MIT", "dependencies": { - "plugin-error": "^1.0.1", - "rtlcss": "^3.5.0", - "through2": "^2.0.5", - "vinyl-sourcemaps-apply": "^0.2.1" + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/gulp-rtlcss/node_modules/arr-diff": { + "node_modules/postcss-modules-values": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, - "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/gulp-rtlcss/node_modules/arr-union": { - "version": "3.1.0", + "node_modules/postcss-normalize-charset": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz", + "integrity": "sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-rtlcss/node_modules/extend-shallow": { - "version": "3.0.2", + "node_modules/postcss-normalize-display-values": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.0.tgz", + "integrity": "sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==", "dev": true, "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-rtlcss/node_modules/plugin-error": { - "version": "1.0.1", + "node_modules/postcss-normalize-positions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.0.tgz", + "integrity": "sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">= 0.10" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-sass": { - "version": "5.1.0", + "node_modules/postcss-normalize-repeat-style": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.0.tgz", + "integrity": "sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==", "dev": true, "license": "MIT", "dependencies": { - "lodash.clonedeep": "^4.5.0", - "picocolors": "^1.0.0", - "plugin-error": "^1.0.1", - "replace-ext": "^2.0.0", - "strip-ansi": "^6.0.1", - "vinyl-sourcemaps-apply": "^0.2.1" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/gulp-sass/node_modules/arr-diff": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-sass/node_modules/arr-union": { - "version": "3.1.0", + "node_modules/postcss-normalize-string": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.0.tgz", + "integrity": "sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==", "dev": true, "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-sass/node_modules/extend-shallow": { - "version": "3.0.2", + "node_modules/postcss-normalize-timing-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.0.tgz", + "integrity": "sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==", "dev": true, "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-sass/node_modules/plugin-error": { - "version": "1.0.1", + "node_modules/postcss-normalize-unicode": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.2.tgz", + "integrity": "sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==", "dev": true, "license": "MIT", "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" + "browserslist": "^4.23.3", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">= 0.10" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-sourcemaps": { - "version": "3.0.0", + "node_modules/postcss-normalize-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.0.tgz", + "integrity": "sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@gulp-sourcemaps/identity-map": "^2.0.1", - "@gulp-sourcemaps/map-sources": "^1.0.0", - "acorn": "^6.4.1", - "convert-source-map": "^1.0.0", - "css": "^3.0.0", - "debug-fabulous": "^1.0.0", - "detect-newline": "^2.0.0", - "graceful-fs": "^4.0.0", - "source-map": "^0.6.0", - "strip-bom-string": "^1.0.0", - "through2": "^2.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">= 6" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-sourcemaps/node_modules/acorn": { - "version": "6.4.2", + "node_modules/postcss-normalize-whitespace": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.0.tgz", + "integrity": "sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==", "dev": true, "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/gulp-sourcemaps/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-zip": { - "version": "5.1.0", + "node_modules/postcss-ordered-values": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.1.tgz", + "integrity": "sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==", "dev": true, "license": "MIT", "dependencies": { - "get-stream": "^5.2.0", - "plugin-error": "^1.0.1", - "through2": "^3.0.1", - "vinyl": "^2.1.0", - "yazl": "^2.5.1" + "cssnano-utils": "^5.0.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=8" + "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "gulp": ">=4" - }, - "peerDependenciesMeta": { - "gulp": { - "optional": true - } + "postcss": "^8.4.31" } }, - "node_modules/gulp-zip/node_modules/arr-diff": { - "version": "4.0.0", - "dev": true, + "node_modules/postcss-prefix-selector": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/postcss-prefix-selector/-/postcss-prefix-selector-1.16.1.tgz", + "integrity": "sha512-Umxu+FvKMwlY6TyDzGFoSUnzW+NOfMBLyC1tAkIjgX+Z/qGspJeRjVC903D7mx7TuBpJlwti2ibXtWuA7fKMeQ==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "postcss": ">4 <9" } }, - "node_modules/gulp-zip/node_modules/arr-union": { - "version": "3.1.0", + "node_modules/postcss-reduce-initial": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.2.tgz", + "integrity": "sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==", "dev": true, "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-api": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-zip/node_modules/extend-shallow": { - "version": "3.0.2", + "node_modules/postcss-reduce-transforms": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.0.tgz", + "integrity": "sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==", "dev": true, "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulp-zip/node_modules/plugin-error": { - "version": "1.0.1", + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">= 0.10" + "node": ">=4" } }, - "node_modules/gulp-zip/node_modules/through2": { - "version": "3.0.2", + "node_modules/postcss-svgo": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.1.tgz", + "integrity": "sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" + "postcss-value-parser": "^4.2.0", + "svgo": "^3.3.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/gulplog": { - "version": "1.0.0", + "node_modules/postcss-unique-selectors": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.3.tgz", + "integrity": "sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==", "dev": true, "license": "MIT", "dependencies": { - "glogg": "^1.0.0" + "postcss-selector-parser": "^6.1.2" }, "engines": { - "node": ">= 0.10" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", + "node_modules/postcss-urlrebase": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/postcss-urlrebase/-/postcss-urlrebase-1.4.0.tgz", + "integrity": "sha512-rRaxMmWvXrn8Rk1PqsxmaJwldRHsr0WbbASKKCZYxXwotHkM/5X/6IrwaEe8pdzpbNGCEY86yhYMN0MhgOkADA==", "dependencies": { - "function-bind": "^1.1.1" + "postcss-value-parser": "^4.2.0" }, - "engines": { - "node": ">= 0.4.0" + "peerDependencies": { + "postcss": "^8.3.0" } }, - "node_modules/has-ansi": { - "version": "2.0.0", + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "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", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/header-case": { - "version": "2.0.4", - "license": "MIT", - "dependencies": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/highlight-words-core": { - "version": "1.2.2", - "license": "MIT" - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "license": "BSD-3-Clause", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "license": "MIT" - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "dev": true, - "license": "ISC" - }, - "node_modules/hpq": { - "version": "1.4.0", - "license": "MIT" - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "4.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "dev": true, - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "license": "MIT" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "dev": true, - "license": "MIT" - }, - "node_modules/is-callable": { - "version": "1.2.7", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.12.1", - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable/node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-relative": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/is-valid-glob": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istextorbinary": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", - "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", - "dev": true, - "dependencies": { - "binaryextensions": "^2.2.0", - "textextensions": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/just-debounce": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/language-tags": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "language-subtag-registry": "~0.3.2" - } - }, - "node_modules/last-run": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lead": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "flush-write-stream": "^1.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/liftoff": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/liftoff/node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/line-height": { - "version": "0.3.1", - "license": "MIT", - "dependencies": { - "computed-style": "~0.1.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "license": "MIT" - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "license": "MIT" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "dev": true, - "license": "MIT" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/lru-queue": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "es5-ext": "~0.10.2" - } - }, - "node_modules/make-dir": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/make-iterator": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/matchdep/node_modules/arr-diff": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/braces": { - "version": "2.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/braces/node_modules/is-extendable": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/extend-shallow": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/fill-range": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/fill-range/node_modules/is-extendable": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-number": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/micromatch": { - "version": "3.1.10", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/to-regex-range": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mdn-data": { - "version": "2.0.30", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/memize": { - "version": "2.1.0", - "license": "MIT" - }, - "node_modules/memoize-one": { - "version": "6.0.0", - "license": "MIT" - }, - "node_modules/memoizee": { - "version": "0.4.15", - "dev": true, - "license": "ISC", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - } - }, - "node_modules/memoizee/node_modules/is-promise": { - "version": "2.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/moment": { - "version": "2.29.4", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/moment-timezone": { - "version": "0.5.43", - "license": "MIT", - "dependencies": { - "moment": "^2.29.4" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mousetrap": { - "version": "1.6.5", - "license": "Apache-2.0 WITH LLVM-exception" - }, - "node_modules/ms": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/mute-stdout": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/nan": { - "version": "2.17.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/nanoid": { - "version": "3.3.6", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/arr-diff": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/extend-shallow": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/neo-async": { - "version": "2.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/next-tick": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/no-case": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-releases": { - "version": "2.0.12", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-wheel": { - "version": "1.0.1", - "license": "BSD-3-Clause" - }, - "node_modules/now-and-later": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.3.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.defaults": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.entries": { - "version": "1.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.map": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.reduce": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "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" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/os-locale": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/param-case": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-case": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "license": "MIT" - }, - "node_modules/path-root": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-to-regexp": { - "version": "6.2.1", - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/php-parser": { - "version": "3.0.2", - "resolved": "git+ssh://git@github.com/glayzzle/php-parser.git#27abcb2337ac6450c068ef064982dfabf77916a5", - "license": "BSD-3-Clause" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/plugin-error": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pluralize": { - "version": "1.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "8.4.24", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-calc": { - "version": "9.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/postcss-colormin": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-convert-values": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-comments": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-empty": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-easy-import": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "globby": "^6.1.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.4", - "object-assign": "^4.0.1", - "pify": "^3.0.0", - "postcss-import": "^14.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.4.6" - } - }, - "node_modules/postcss-easy-import/node_modules/array-union": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-easy-import/node_modules/globby": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-easy-import/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-easy-import/node_modules/pify": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-easy-import/node_modules/postcss-import": { - "version": "14.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-hexrgba": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "peerDependencies": { - "postcss": "^8.1.4" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-merge-longhand": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^6.0.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-merge-rules": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^4.0.0", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^4.0.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-params": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^4.0.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-selectors": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-string": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-url": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-ordered-values": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano-utils": "^4.0.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-prefix-selector": { - "version": "1.16.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "postcss": ">4 <9" - } - }, - "node_modules/postcss-reduce-initial": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^3.0.2" - }, - "engines": { - "node": "^14 || ^16 || >= 18" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/prismjs": { - "version": "1.29.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/prop-types": { - "version": "15.8.1", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "license": "MIT" - }, - "node_modules/proxy-compare": { - "version": "2.3.0", - "license": "MIT" - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "license": "MIT" - }, - "node_modules/pump": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/randombytes": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/re-resizable": { - "version": "6.9.9", - "license": "MIT", - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/react": { - "version": "17.0.2", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-autosize-textarea": { - "version": "7.1.0", - "license": "MIT", - "dependencies": { - "autosize": "^4.0.2", - "line-height": "^0.3.1", - "prop-types": "^15.5.6" - }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.0 || ^16.0.0", - "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/react-colorful": { - "version": "5.6.1", - "license": "MIT", - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/react-dom": { - "version": "17.0.2", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/react-easy-crop": { - "version": "4.7.5", - "license": "MIT", - "dependencies": { - "normalize-wheel": "^1.0.1", - "tslib": "2.0.1" - }, - "peerDependencies": { - "react": ">=16.4.0", - "react-dom": ">=16.4.0" - } - }, - "node_modules/react-easy-crop/node_modules/tslib": { - "version": "2.0.1", - "license": "0BSD" - }, - "node_modules/react-is": { - "version": "17.0.2", - "license": "MIT" - }, - "node_modules/react-remove-scroll": { - "version": "2.5.5", - "license": "MIT", - "dependencies": { - "react-remove-scroll-bar": "^2.3.3", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.4", - "license": "MIT", - "dependencies": { - "react-style-singleton": "^2.2.1", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-select": { - "version": "5.7.3", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.0", - "@emotion/cache": "^11.4.0", - "@emotion/react": "^11.8.1", - "@floating-ui/dom": "^1.0.1", - "@types/react-transition-group": "^4.4.0", - "memoize-one": "^6.0.0", - "prop-types": "^15.6.0", - "react-transition-group": "^4.3.0", - "use-isomorphic-layout-effect": "^1.1.2" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/react-style-singleton": { - "version": "2.2.1", - "license": "MIT", - "dependencies": { - "get-nonce": "^1.0.0", - "invariant": "^2.2.4", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/read-cache/node_modules/pify": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg/node_modules/pify": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "dev": true, - "license": "MIT", - "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/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/readdirp": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reakit": { - "version": "1.3.11", - "license": "MIT", - "dependencies": { - "@popperjs/core": "^2.5.4", - "body-scroll-lock": "^3.1.5", - "reakit-system": "^0.15.2", - "reakit-utils": "^0.15.2", - "reakit-warning": "^0.6.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ariakit" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/reakit-system": { - "version": "0.15.2", - "license": "MIT", - "dependencies": { - "reakit-utils": "^0.15.2" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/reakit-utils": { - "version": "0.15.2", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/reakit-warning": { - "version": "0.6.2", - "license": "MIT", - "dependencies": { - "reakit-utils": "^0.15.2" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/redux": { - "version": "4.2.1", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.9.2" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "dev": true, - "license": "MIT" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "license": "MIT" - }, - "node_modules/regenerator-transform": { - "version": "0.15.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/extend-shallow": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/rememo": { - "version": "4.0.2", - "license": "MIT" - }, - "node_modules/remove-accents": { - "version": "0.4.4", - "license": "MIT" - }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/replace-ext": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/replace-homedir": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/replacestream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", - "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/replacestream/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/requestidlecallback": { - "version": "0.3.0", - "license": "MIT" - }, - "node_modules/require-directory": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/requireindex": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.5" - } - }, - "node_modules/resolve": { - "version": "1.22.2", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-options": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "value-or-function": "^3.0.0" - }, "engines": { - "node": ">= 0.10" + "node": ">= 0.8.0" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/ret": { - "version": "0.1.15", - "dev": true, - "license": "MIT", + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", "engines": { - "node": ">=0.12" + "node": ">=6" } }, - "node_modules/reusify": { - "version": "1.0.4", + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, - "license": "MIT", "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">= 0.6.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "license": "ISC", + "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==", + "dev": true + }, + "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==", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, - "node_modules/rtlcss": { - "version": "3.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^5.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.3.11", - "strip-json-comments": "^3.1.1" - }, - "bin": { - "rtlcss": "bin/rtlcss.js" + "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==" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "devOptional": true, + "engines": { + "node": ">=6" } }, - "node_modules/run-parallel": { - "version": "1.2.0", + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -13318,895 +11463,1317 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT", + ] + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "devOptional": true, "dependencies": { - "queue-microtask": "^1.2.2" + "safe-buffer": "^5.1.0" } }, - "node_modules/rungen": { - "version": "0.3.2", - "license": "MIT" + "node_modules/re-resizable": { + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.9.11.tgz", + "integrity": "sha512-a3hiLWck/NkmyLvGWUuvkAmN1VhwAz4yOhS6FdMTaxCUVN9joIWkT11wsO68coG/iEYuwn+p/7qAmfQzRhiPLQ==", + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0" + } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" + "node_modules/react": { + "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==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/safe-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT", + "node_modules/react-autosize-textarea": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", + "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", "dependencies": { - "ret": "~0.1.10" + "autosize": "^4.0.2", + "line-height": "^0.3.1", + "prop-types": "^15.5.6" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16.0.0", + "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "dev": true, - "license": "MIT", + "node_modules/react-colorful": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", + "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "react": "^18.3.1" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "license": "MIT" + "node_modules/react-easy-crop": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/react-easy-crop/-/react-easy-crop-5.0.8.tgz", + "integrity": "sha512-KjulxXhR5iM7+ATN2sGCum/IyDxGw7xT0dFoGcqUP+ysaPU5Ka7gnrDa2tUHFHUoMNyPrVZ05QA+uvMgC5ym/g==", + "dependencies": { + "normalize-wheel": "^1.0.1", + "tslib": "^2.0.1" + }, + "peerDependencies": { + "react": ">=16.4.0", + "react-dom": ">=16.4.0" + } }, - "node_modules/sass": { - "version": "1.63.6", - "dev": true, + "node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", "license": "MIT", "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" }, - "bin": { - "sass": "sass.js" + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/scheduler": { - "version": "0.20.2", + "node_modules/react-select": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.10.0.tgz", + "integrity": "sha512-k96gw+i6N3ExgDwPIg0lUPmexl1ygPe6u5BdQFNBhkpbwroIgCNXdubtIzHfThYXYYTubwOBafoMnn7ruEP1xA==", "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", + "@types/react-transition-group": "^4.4.0", + "memoize-one": "^6.0.0", + "prop-types": "^15.6.0", + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/schema-utils": { - "version": "4.2.0", - "dev": true, - "license": "MIT", + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">=10" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/select": { - "version": "1.1.2", - "license": "MIT" - }, - "node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" } }, - "node_modules/semver-greatest-satisfied-range": { - "version": "1.1.0", + "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==", "dev": true, - "license": "MIT", "dependencies": { - "sver-compat": "^1.5.0" - }, - "engines": { - "node": ">= 0.10" + "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/sentence-case": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } + "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==", + "dev": true }, - "node_modules/serialize-javascript": { - "version": "6.0.1", + "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==", + "dev": true + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "randombytes": "^2.1.0" + "minimatch": "^5.1.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "license": "ISC" - }, - "node_modules/set-value": { + "node_modules/readdir-glob/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "balanced-match": "^1.0.0" } }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", + "node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/set-value/node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "resolve": "^1.20.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, - "node_modules/shallow-clone": { - "version": "3.0.1", + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^6.0.2" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shebang-command": { - "version": "2.0.0", + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "regenerate": "^1.4.2" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/showdown": { - "version": "1.9.1", - "license": "BSD-3-Clause", "dependencies": { - "yargs": "^14.2" - }, - "bin": { - "showdown": "bin/showdown.js" + "@babel/runtime": "^7.8.4" } }, - "node_modules/showdown/node_modules/ansi-regex": { - "version": "4.1.1", + "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.2" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/showdown/node_modules/camelcase": { - "version": "5.3.1", + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/showdown/node_modules/cliui": { - "version": "5.0.0", - "license": "ISC", "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "regenerate": "^1.4.2", + "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" + }, + "engines": { + "node": ">=4" } }, - "node_modules/showdown/node_modules/emoji-regex": { - "version": "7.0.3", + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, "license": "MIT" }, - "node_modules/showdown/node_modules/find-up": { - "version": "3.0.0", - "license": "MIT", + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "locate-path": "^3.0.0" + "jsesc": "~3.0.2" }, - "engines": { - "node": ">=6" + "bin": { + "regjsparser": "bin/parser" } }, - "node_modules/showdown/node_modules/get-caller-file": { - "version": "2.0.5", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } + "node_modules/rememo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.2.tgz", + "integrity": "sha512-NVfSP9NstE3QPNs/TnegQY0vnJnstKQSpcrsI2kBTB3dB2PkdfKdTa+abbjMIDqpc63fE5LfjLgfMst0ULMFxQ==" }, - "node_modules/showdown/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "license": "MIT", + "node_modules/remove-accents": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", + "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==" + }, + "node_modules/requestidlecallback": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/requestidlecallback/-/requestidlecallback-0.3.0.tgz", + "integrity": "sha512-TWHFkT7S9p7IxLC5A1hYmAYQx2Eb9w1skrXmQ+dS1URyvR8tenMLl4lHbqEOUnpEYxNKpkVMXUgknVpBZWXXfQ==", + "license": "MIT" + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/showdown/node_modules/locate-path": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, + "node_modules/require-from-string": { + "version": "2.0.2", + "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, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/showdown/node_modules/p-limit": { - "version": "2.3.0", - "license": "MIT", + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { - "p-try": "^2.0.0" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=6" + "bin": { + "resolve": "bin/resolve" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/showdown/node_modules/p-locate": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/showdown/node_modules/path-exists": { + "node_modules/resolve-cwd": { "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/showdown/node_modules/require-main-filename": { - "version": "2.0.0", - "license": "ISC" - }, - "node_modules/showdown/node_modules/string-width": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/showdown/node_modules/strip-ansi": { - "version": "5.2.0", + "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": { - "ansi-regex": "^4.1.0" + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/showdown/node_modules/which-module": { - "version": "2.0.1", - "license": "ISC" - }, - "node_modules/showdown/node_modules/wrap-ansi": { - "version": "5.1.0", + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, "engines": { - "node": ">=6" - } - }, - "node_modules/showdown/node_modules/y18n": { - "version": "4.0.3", - "license": "ISC" - }, - "node_modules/showdown/node_modules/yargs": { - "version": "14.2.3", - "license": "MIT", - "dependencies": { - "cliui": "^5.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^15.0.1" + "node": ">=8" } }, - "node_modules/showdown/node_modules/yargs-parser": { - "version": "15.0.3", - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" } }, - "node_modules/side-channel": { - "version": "1.0.4", + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/simple-html-tokenizer": { - "version": "0.5.11", - "license": "MIT" + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } }, - "node_modules/slash": { - "version": "3.0.0", + "node_modules/rtlcss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", + "integrity": "sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==", "dev": true, "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0", + "postcss": "^8.4.21", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + }, "engines": { - "node": ">=8" + "node": ">=12.0.0" } }, - "node_modules/snake-case": { - "version": "3.0.4", - "license": "MIT", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" + "queue-microtask": "^1.2.2" } }, - "node_modules/snapdragon": { - "version": "0.8.2", + "node_modules/rungen": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/rungen/-/rungen-0.3.2.tgz", + "integrity": "sha512-zWl10xu2D7zoR8zSC2U6bg5bYF6T/Wk7rxwp8IPaJH7f0Ge21G03kNHVgHR7tyVkSSfAOG0Rqf/Cl38JftSmtw==", + "license": "MIT" + }, + "node_modules/safe-array-concat": { + "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": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "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": { - "node": ">=0.10.0" + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon-node": { - "version": "2.1.1", + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", "dev": true, "license": "MIT", "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "es-errors": "^1.3.0", + "isarray": "^2.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", + "node_modules/safe-regex-test": { + "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": { - "is-descriptor": "^1.0.0" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon-util": { - "version": "3.0.1", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass": { + "version": "1.84.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.84.0.tgz", + "integrity": "sha512-XDAbhEPJRxi7H0SxrnOpiXFQoUJHwkR2u3Zc4el+fK/Tt5Hpzw5kkQ59qVDfvdaUq6gCrEZIbySFBM2T9DNKHg==", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^3.2.0" + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" } }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/sass-loader": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.4.tgz", + "integrity": "sha512-LavLbgbBGUt3wCiYzhuLLu65+fWXaXLmq7YxivLhEqmiupCFZ5sKUAipK3do6V80YSU0jvSxNhEdT13IXNr3rg==", "dev": true, "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "neo-async": "^2.6.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dependencies": { - "ms": "2.0.0" + "loose-envify": "^1.1.0" } }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, - "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "devOptional": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "devOptional": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/set-function-length": { + "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==", "dev": true, - "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", + "node_modules/set-function-name": { + "version": "2.0.2", + "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": { - "kind-of": "^3.0.2" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", "dev": true, "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "kind-of": "^6.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/showdown": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz", + "integrity": "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "yargs": "^14.2" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "showdown": "bin/showdown.js" } }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "dev": true, - "license": "MIT", + "node_modules/showdown/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/snapdragon/node_modules/kind-of": { - "version": "5.1.0", - "dev": true, - "license": "MIT", + "node_modules/showdown/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" + "node_modules/showdown/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } }, - "node_modules/snapdragon/node_modules/source-map-resolve": { - "version": "0.5.3", - "dev": true, - "license": "MIT", + "node_modules/showdown/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/showdown/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/source-map": { - "version": "0.5.7", - "license": "BSD-3-Clause", + "node_modules/showdown/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==", "engines": { - "node": ">=0.10.0" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/source-map-js": { - "version": "1.0.2", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/showdown/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/source-map-resolve": { - "version": "0.6.0", - "dev": true, - "license": "MIT", + "node_modules/showdown/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "dev": true, - "license": "MIT", + "node_modules/showdown/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/showdown/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/source-map-url": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/sparkles": { - "version": "1.0.1", - "dev": true, - "license": "MIT", + "node_modules/showdown/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "engines": { - "node": ">= 0.10" + "node": ">=4" } }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "dev": true, - "license": "Apache-2.0", + "node_modules/showdown/node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/showdown/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "license": "MIT", + "node_modules/showdown/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.13", - "dev": true, - "license": "CC0-1.0" + "node_modules/showdown/node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" }, - "node_modules/split-string": { - "version": "3.1.0", - "dev": true, - "license": "MIT", + "node_modules/showdown/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dependencies": { - "extend-shallow": "^3.0.0" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/split-string/node_modules/extend-shallow": { - "version": "3.0.2", - "dev": true, - "license": "MIT", + "node_modules/showdown/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/showdown/node_modules/yargs": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^15.0.1" } }, - "node_modules/sprintf-js": { - "version": "1.1.2", - "license": "BSD-3-Clause" + "node_modules/showdown/node_modules/yargs-parser": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz", + "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } }, - "node_modules/stack-trace": { - "version": "0.0.10", + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/static-extend": { - "version": "0.1.2", + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, "license": "MIT", "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "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.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/simple-html-tokenizer": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/simple-html-tokenizer/-/simple-html-tokenizer-0.5.11.tgz", + "integrity": "sha512-C2WEK/Z3HoSFbYq8tI7ni3eOo/NneSPRoPpcM7WdLjFOArFuyXEjAoCdOC3DgMfRyziZQ1hCNR4mrNdWEvD0og==" + }, + "node_modules/simple-peer": { + "version": "9.11.1", + "resolved": "https://registry.npmjs.org/simple-peer/-/simple-peer-9.11.1.tgz", + "integrity": "sha512-D1SaWpOW8afq1CZGWB8xTfrT3FekjQmPValrqncJMX7QFl8YwhrPTZvMCANLtgBwwdS+7zURyqxDDEmY558tTw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "buffer": "^6.0.3", + "debug": "^4.3.2", + "err-code": "^3.0.1", + "get-browser-rtc": "^1.1.0", + "queue-microtask": "^1.2.3", + "randombytes": "^2.1.0", + "readable-stream": "^3.6.0" } }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", + "node_modules/simple-peer/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==", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", "dependencies": { - "is-buffer": "^1.1.5" - }, + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/static-extend/node_modules/kind-of": { - "version": "5.1.0", - "dev": true, - "license": "MIT", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "devOptional": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/stream-exhaust": { - "version": "1.0.2", + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, + "node_modules/stable-hash": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz", + "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==", "dev": true, "license": "MIT" }, - "node_modules/stream-shift": { - "version": "1.0.1", + "node_modules/streamx": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.4.tgz", + "integrity": "sha512-uSXKl88bibiUCQ1eMpItRljCzDENcDx18rsfDmV79r0e/ThfrAwxG4Y2FarQZ2G4/21xcOKmFFd1Hue+ZIDwHw==", "dev": true, - "license": "MIT" + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } }, "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==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, - "node_modules/string-width": { - "version": "1.0.2", + "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": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/string.prototype.matchall": { + "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": { - "ansi-regex": "^2.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "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.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.8", + "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.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" } }, "node_modules/string.prototype.trim": { - "version": "1.2.7", + "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.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "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.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -14216,26 +12783,36 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", + "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.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "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" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", + "version": "1.0.8", + "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.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14243,8 +12820,9 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -14252,26 +12830,33 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "3.0.0", + "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" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/strip-bom-string": { - "version": "1.0.0", + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "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" }, @@ -14279,42 +12864,67 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/style-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", + "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.27.0" + } + }, "node_modules/style-mod": { - "version": "4.0.3", - "license": "MIT" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.0.tgz", + "integrity": "sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==" }, "node_modules/stylehacks": { - "version": "6.0.0", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.4.tgz", + "integrity": "sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" + "browserslist": "^4.23.3", + "postcss-selector-parser": "^6.1.2" }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/stylis": { "version": "4.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, "node_modules/supports-color": { - "version": "5.5.0", + "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, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "engines": { "node": ">= 0.4" }, @@ -14322,24 +12932,18 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sver-compat": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, "node_modules/svgo": { - "version": "3.0.2", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", "dev": true, "license": "MIT", "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", - "css-tree": "^2.2.1", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.0.0" }, @@ -14356,67 +12960,37 @@ }, "node_modules/tannin": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tannin/-/tannin-1.2.0.tgz", + "integrity": "sha512-U7GgX/RcSeUETbV7gYgoz8PD7Ni4y95pgIP/Z6ayI3CfhSujwKEBlGFTCRN+Aqnuyf4AN2yHL+L8x+TCGjb9uA==", "dependencies": { "@tannin/plural-forms": "^1.1.0" } }, "node_modules/tapable": { "version": "2.2.1", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "devOptional": true, "engines": { "node": ">=6" } }, - "node_modules/ternary-stream": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexify": "^4.1.1", - "fork-stream": "^0.0.4", - "merge-stream": "^2.0.0", - "through2": "^3.0.1" - } - }, - "node_modules/ternary-stream/node_modules/duplexify": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, - "node_modules/ternary-stream/node_modules/readable-stream": { - "version": "3.6.2", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ternary-stream/node_modules/through2": { - "version": "3.0.2", + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, - "license": "MIT", "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "node_modules/terser": { - "version": "5.18.2", - "dev": true, - "license": "BSD-2-Clause", + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "devOptional": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -14431,15 +13005,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "dev": true, - "license": "MIT", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "devOptional": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -14465,8 +13040,9 @@ }, "node_modules/terser-webpack-plugin/node_modules/ajv": { "version": "6.12.6", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "devOptional": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -14480,21 +13056,24 @@ }, "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { "version": "3.5.2", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "devOptional": true, "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "devOptional": true }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "devOptional": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -14510,257 +13089,199 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "dev": true, - "license": "MIT" - }, - "node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/textextensions": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", - "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/through2": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2-filter": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "node_modules/time-stamp": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/timers-ext": { - "version": "0.1.7", - "dev": true, - "license": "ISC", - "dependencies": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "devOptional": true }, "node_modules/tiny-emitter": { "version": "2.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" + "is-number": "^7.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" + "node": ">=8.0" } }, - "node_modules/to-object-path": { - "version": "0.3.0", + "node_modules/ts-api-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", "dev": true, "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" + "node": ">=18.12" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "typescript": ">=4.8.4" } }, - "node_modules/to-regex": { - "version": "3.0.2", + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "license": "MIT", "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/to-regex/node_modules/extend-shallow": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" }, - "engines": { - "node": ">=0.10.0" + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, - "node_modules/to-through": { - "version": "2.0.0", + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, - "license": "MIT", "dependencies": { - "through2": "^2.0.3" + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=6" } }, - "node_modules/traverse": { - "version": "0.6.7", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/tsconfig-paths": { - "version": "3.14.2", + "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": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.0" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" }, - "bin": { - "json5": "lib/cli.js" + "engines": { + "node": ">= 0.4" } }, - "node_modules/tslib": { - "version": "2.6.0", - "license": "0BSD" - }, - "node_modules/tsutils": { - "version": "3.21.0", + "node_modules/typed-array-byte-length": { + "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": { - "tslib": "^1.8.1" + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "dev": true, - "license": "0BSD" - }, - "node_modules/turbo-combine-reducers": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/type": { - "version": "1.2.0", - "dev": true, - "license": "ISC" - }, - "node_modules/type-check": { - "version": "0.4.0", + "node_modules/typed-array-byte-offset": { + "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": { - "prelude-ls": "^1.2.1" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typed-array-length": { - "version": "1.0.4", + "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.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "dev": true, - "license": "MIT" - }, "node_modules/typescript": { - "version": "5.1.6", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -14771,63 +13292,59 @@ "node": ">=14.17" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", + "node_modules/typescript-eslint": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.24.0.tgz", + "integrity": "sha512-/lmv4366en/qbB32Vz5+kCNZEMf6xYHwh1z48suBwZvAtnXKbP+YhGe8OLE2BqC67LMqKkCNLtjejdwsdW6uOQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "@typescript-eslint/eslint-plugin": "8.24.0", + "@typescript-eslint/parser": "8.24.0", + "@typescript-eslint/utils": "8.24.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/undertaker": { - "version": "1.3.0", + "node_modules/unbox-primitive": { + "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": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker-registry": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/undertaker/node_modules/fast-levenshtein": { - "version": "1.1.4", - "dev": true, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "devOptional": true, "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", + "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==", "dev": true, "license": "MIT", "engines": { @@ -14836,6 +13353,8 @@ }, "node_modules/unicode-match-property-ecmascript": { "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==", "dev": true, "license": "MIT", "dependencies": { @@ -14847,7 +13366,9 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", + "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==", "dev": true, "license": "MIT", "engines": { @@ -14856,107 +13377,19 @@ }, "node_modules/unicode-property-aliases-ecmascript": { "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==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/union-value": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/arr-union": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unique-stream": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "dev": true, + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "devOptional": true, "funding": [ { "type": "opencollective", @@ -14973,8 +13406,8 @@ ], "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -14985,42 +13418,33 @@ }, "node_modules/upper-case": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", "dependencies": { "tslib": "^2.0.3" } }, "node_modules/upper-case-first": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", "dependencies": { "tslib": "^2.0.3" } }, "node_modules/uri-js": { "version": "4.4.1", - "dev": true, - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "devOptional": true, "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/use": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/use-callback-ref": { - "version": "1.3.0", - "license": "MIT", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", "dependencies": { "tslib": "^2.0.0" }, @@ -15038,10 +13462,12 @@ } }, "node_modules/use-isomorphic-layout-effect": { - "version": "1.1.2", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.0.tgz", + "integrity": "sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==", "license": "MIT", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -15049,27 +13475,18 @@ } } }, - "node_modules/use-lilius": { - "version": "2.0.3", - "license": "MIT", - "dependencies": { - "date-fns": "^2.29.2" - }, - "peerDependencies": { - "react": "*", - "react-dom": "*" - } - }, "node_modules/use-memo-one": { "version": "1.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", + "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/use-sidecar": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" @@ -15088,186 +13505,49 @@ } }, "node_modules/use-sync-external-store": { - "version": "1.2.0", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8flags": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/valtio": { - "version": "1.7.0", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", + "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", "license": "MIT", - "dependencies": { - "proxy-compare": "2.3.0", - "use-sync-external-store": "1.2.0" - }, - "engines": { - "node": ">=12.7.0" - }, "peerDependencies": { - "@babel/helper-module-imports": ">=7.12", - "@babel/types": ">=7.13", - "aslemammad-vite-plugin-macro": ">=1.0.0-alpha.1", - "babel-plugin-macros": ">=3.0", - "react": ">=16.8", - "vite": ">=2.8.6" - }, - "peerDependenciesMeta": { - "@babel/helper-module-imports": { - "optional": true - }, - "@babel/types": { - "optional": true - }, - "aslemammad-vite-plugin-macro": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - }, - "react": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/value-or-function": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-fs": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/vinyl-sourcemap/node_modules/normalize-path": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, - "node_modules/vinyl-sourcemaps-apply": { - "version": "0.2.1", - "dev": true, - "license": "ISC", - "dependencies": { - "source-map": "^0.5.1" + "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" } }, - "node_modules/vinyl/node_modules/replace-ext": { - "version": "1.0.1", + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } + "license": "MIT" }, "node_modules/w3c-keyname": { "version": "2.2.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" }, "node_modules/watchpack": { - "version": "2.4.0", - "dev": true, - "license": "MIT", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "devOptional": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -15277,33 +13557,34 @@ } }, "node_modules/webpack": { - "version": "5.88.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -15322,18 +13603,120 @@ } } }, + "node_modules/webpack-cli": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", + "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^0.6.1", + "@webpack-cli/configtest": "^3.0.1", + "@webpack-cli/info": "^3.0.1", + "@webpack-cli/serve": "^3.0.1", + "colorette": "^2.0.14", + "commander": "^12.1.0", + "cross-spawn": "^7.0.3", + "envinfo": "^7.14.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^6.0.1" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.82.0" + }, + "peerDependenciesMeta": { + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webpack-remove-empty-scripts": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/webpack-remove-empty-scripts/-/webpack-remove-empty-scripts-1.0.4.tgz", + "integrity": "sha512-W/Vd94oNXMsQam+W9G+aAzGgFlX1aItcJpkG3byuHGDaxyK3H17oD/b5RcqS/ZHzStIKepksdLDznejDhDUs+Q==", + "dev": true, + "dependencies": { + "ansis": "1.5.2" + }, + "engines": { + "node": ">=12.14" + }, + "funding": { + "type": "patreon", + "url": "https://patreon.com/biodiscus" + }, + "peerDependencies": { + "webpack": ">=5.32.0" + } + }, "node_modules/webpack-sources": { "version": "3.2.3", - "dev": true, + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=10.13.0" } }, + "node_modules/webpack/node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "devOptional": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/webpack/node_modules/ajv": { "version": "6.12.6", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "devOptional": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -15347,21 +13730,24 @@ }, "node_modules/webpack/node_modules/ajv-keywords": { "version": "3.5.2", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "devOptional": true, "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/webpack/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "devOptional": true }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.3.0", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "devOptional": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -15377,8 +13763,9 @@ }, "node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -15390,36 +13777,64 @@ } }, "node_modules/which-boxed-primitive": { - "version": "1.0.2", + "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" + "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" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-module": { - "version": "1.0.0", + "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": "ISC" + "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-typed-array": { - "version": "1.1.9", + "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": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" }, "engines": { "node": ">= 0.4" @@ -15428,106 +13843,255 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wrap-ansi": { - "version": "2.1.0", + "node_modules/which-typed-array": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", "dev": true, "license": "MIT", "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "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/node_modules/strip-ansi": { - "version": "3.0.1", + "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": { - "ansi-regex": "^2.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrappy": { - "version": "1.0.2", + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "ISC" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } }, - "node_modules/xtend": { - "version": "4.0.2", + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.4" + "node": ">=7.0.0" } }, - "node_modules/y18n": { - "version": "3.2.2", + "node_modules/wrap-ansi-cjs/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/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "ISC" + "engines": { + "node": ">=8" + } }, - "node_modules/yallist": { - "version": "3.1.1", + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "ISC" + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/yaml": { - "version": "1.10.2", - "license": "ISC", + "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", + "optional": true, "engines": { - "node": ">= 6" + "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/yargs": { - "version": "7.1.2", + "node_modules/y-indexeddb": { + "version": "9.0.12", + "resolved": "https://registry.npmjs.org/y-indexeddb/-/y-indexeddb-9.0.12.tgz", + "integrity": "sha512-9oCFRSPPzBK7/w5vOkJBaVCQZKHXB/v6SIT+WYhnJxlEC61juqG0hBrAf+y3gmSMLFLwICNH9nQ53uscuse6Hg==", "dev": true, "license": "MIT", "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" + "lib0": "^0.2.74" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=8.0.0" + }, + "funding": { + "type": "GitHub Sponsors ❀", + "url": "https://github.com/sponsors/dmonad" + }, + "peerDependencies": { + "yjs": "^13.0.0" } }, - "node_modules/yargs-parser": { - "version": "5.0.1", + "node_modules/y-protocols": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/y-protocols/-/y-protocols-1.0.6.tgz", + "integrity": "sha512-vHRF2L6iT3rwj1jub/K5tYcTT/mEYDUppgNPXwp8fmLpui9f7Yeq3OEtTLVF012j39QnV+KEQpNqoN7CWU7Y9Q==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" + "lib0": "^0.2.85" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=8.0.0" + }, + "funding": { + "type": "GitHub Sponsors ❀", + "url": "https://github.com/sponsors/dmonad" + }, + "peerDependencies": { + "yjs": "^13.0.0" } }, - "node_modules/yazl": { - "version": "2.5.1", + "node_modules/y-webrtc": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/y-webrtc/-/y-webrtc-10.2.6.tgz", + "integrity": "sha512-1kZ4YYwksFZi8+l8mTebVX9vW6Q5MnqxMkvNU700X5dBE38usurt/JgeXSIQRpK3NwUYYb9y63Jn9FMpMH6/vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lib0": "^0.2.42", + "simple-peer": "^9.11.0", + "y-protocols": "^1.0.6" + }, + "bin": { + "y-webrtc-signaling": "bin/server.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "GitHub Sponsors ❀", + "url": "https://github.com/sponsors/dmonad" + }, + "optionalDependencies": { + "ws": "^8.14.2" + }, + "peerDependencies": { + "yjs": "^13.6.8" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/yjs": { + "version": "13.6.20", + "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.20.tgz", + "integrity": "sha512-Z2YZI+SYqK7XdWlloI3lhMiKnCdFCVC4PchpdO+mCYwtiTwncjUbnRK9R1JmkNfdmHyDXuWN3ibJAt0wsqTbLQ==", "dev": true, "license": "MIT", "dependencies": { - "buffer-crc32": "~0.2.3" + "lib0": "^0.2.98" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=8.0.0" + }, + "funding": { + "type": "GitHub Sponsors ❀", + "url": "https://github.com/sponsors/dmonad" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { @@ -15536,6 +14100,45 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "dev": true, + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/zip-stream/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==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } } } } diff --git a/package.json b/package.json index 2647cdd9..9fbfb63c 100644 --- a/package.json +++ b/package.json @@ -1,127 +1,112 @@ { "name": "code-snippets", "description": "Manage code snippets running on a WordPress-powered site through a graphical interface.", - "homepage": "https://wordpress.org/plugins/code-snippets", - "main": "gulpfile.babel.ts", - "version": "3.6.4-beta.1", + "homepage": "https://codesnippets.pro", + "version": "3.6.8", + "main": "src/dist/edit.js", "directories": { "test": "tests" }, "scripts": { - "build": "gulp build", - "watch": "gulp watch", - "bundle": "gulp bundle", - "test": "gulp test", - "phpcs": "vendor/bin/phpcs -s *.php php/", - "phpcbf": "vendor/bin/phpcbf *.php php/", - "version": "gulp version", - "version-dev": "npm version prerelease --git-tag-version=false --preid=dev", - "version-alpha": "npm version prerelease --git-tag-version=false --preid=alpha", - "version-beta": "npm version prerelease --git-tag-version=false --preid=beta", - "version-rc": "npm version prerelease --git-tag-version=false --preid=rc" + "test": "eslint && npm run phpcs", + "build": "webpack", + "watch": "webpack --watch", + "bundle": "ts-node scripts/bundle.ts", + "phpcs": "src/vendor/bin/phpcs -s --colors ./src/phpcs.xml", + "phpcbf": "src/vendor/bin/phpcbf ./src/phpcs.xml", + "version": "ts-node scripts/version.ts", + "version-dev": "npm version --git-tag-version=false --preid=dev", + "version-alpha": "npm version --git-tag-version=false --preid=alpha", + "version-beta": "npm version --git-tag-version=false --preid=beta", + "version-rc": "npm version --git-tag-version=false --preid=rc" }, "repository": { "type": "git", - "url": "https://github.com/codesnippetspro/code-snippets.git" + "url": "git+https://github.com/codesnippetspro/code-snippets.git" }, "keywords": [ "wordpress-plugin" ], - "author": { - "name": "Shea Bunge", - "email": "shea@codesnippets.pro", - "url": "https://sheabunge.com" - }, + "author": "Shea Bunge (https://sheabunge.com)", "license": "GPL-2.0-or-later", "bugs": { "url": "https://github.com/codesnippetspro/code-snippets/issues" }, "dependencies": { - "@codemirror/fold": "^0.19.3", - "@jcubic/tagger": "^0.4.5", - "@wordpress/api-fetch": "^6.33.0", - "@wordpress/block-editor": "^12.3.0", - "@wordpress/blocks": "^12.12.0", - "@wordpress/components": "^25.1.0", - "@wordpress/data": "^9.5.0", - "@wordpress/dom-ready": "^3.36.0", - "@wordpress/i18n": "^4.36.0", - "@wordpress/icons": "^9.26.0", - "@wordpress/server-side-render": "^4.12.0", - "axios": "^1.4.0", + "@codemirror/fold": "^0.19.4", + "@wordpress/api-fetch": "^7.17.0", + "@wordpress/block-editor": "^14.12.0", + "@wordpress/blocks": "^14.6.0", + "@wordpress/components": "^29.3.0", + "@wordpress/data": "^10.17.0", + "@wordpress/dom-ready": "^4.17.0", + "@wordpress/i18n": "^5.17.0", + "@wordpress/icons": "^10.17.0", + "@wordpress/server-side-render": "^5.17.0", + "axios": "^1.7.9", + "classnames": "^2.5.1", "codemirror": "^5.29", "codemirror-colorpicker": "^1.9.80", - "php-parser": "github:glayzzle/php-parser#php8", + "php-parser": "^3.2.2", "prismjs": "^1.29.0", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-select": "^5.7.3" + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-select": "^5.10.0" }, "devDependencies": { - "@babel/core": "^7.22.5", - "@babel/preset-env": "^7.22.5", - "@babel/preset-react": "^7.22.5", - "@babel/preset-typescript": "^7.22.5", - "@babel/register": "^7.22.5", - "@types/archiver": "^5.3.2", - "@types/codemirror": "^5.60.8", - "@types/gulp": "^4.0.13", - "@types/gulp-postcss": "^8.0.3", - "@types/gulp-rename": "^2.0.2", - "@types/gulp-sass": "^5.0.1", - "@types/gulp-sourcemaps": "0.0.36", - "@types/gulp-zip": "^4.0.2", - "@types/jquery": "^3.5.16", - "@types/node": "^20.3.2", - "@types/prismjs": "^1.26.0", - "@types/rtlcss": "^3.5.1", - "@types/tinymce": "^4.6.5", - "@types/vinyl": "^2.0.7", - "@types/web": "^0.0.102", - "@types/webpack": "^5", - "@types/wordpress__editor": "^13.6.2", - "@typescript-eslint/eslint-plugin": "^5.60.1", - "@typescript-eslint/parser": "^5.60.1", - "@wordpress/babel-preset-default": "^7.20.0", - "@wordpress/eslint-plugin": "^14.8.0", - "ajv": "^8.12.0", - "autoprefixer": "^10.4.14", - "babel-loader": "^9.1.2", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.20.0", + "@stylistic/eslint-plugin": "^3.1.0", + "@tsconfig/node18": "^18.2.4", + "@types/archiver": "^6.0.3", + "@types/codemirror": "^5.60.15", + "@types/jquery": "^3.5.32", + "@types/node": "^22.13.1", + "@types/prismjs": "^1.26.5", + "@types/react": "^18.3.1", + "@types/react-dom": "^18.3.1", + "@types/rtlcss": "^3.5.4", + "@types/tinymce": "^4.6.9", + "@types/web": "^0.0.202", + "@types/wordpress__editor": "^14.12.0", + "@typescript-eslint/eslint-plugin": "^8.24.0", + "@typescript-eslint/parser": "^8.24.0", + "@wordpress/babel-preset-default": "^8.17.0", + "archiver": "^7.0.1", + "autoprefixer": "^10.4.20", + "babel-loader": "^9.2.1", "babel-plugin-prismjs": "^2.1.0", - "classnames": "^2.3.2", - "cssnano": "^6.0.1", - "del": "^6.1.1", - "eslint": "^8.43.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", - "gulp": "^4.0.2", - "gulp-clean": "^0.4.0", - "gulp-eslint-new": "^1.8.1", - "gulp-flatmap": "^1.0.2", - "gulp-phpcs": "^3.1.0", - "gulp-postcss": "^9.0.1", - "gulp-remove-sourcemaps": "^1.0.5", - "gulp-rename": "^2.0.0", - "gulp-replace": "^1.1.4", - "gulp-rtlcss": "^2.0.0", - "gulp-sass": "^5.1.0", - "gulp-sourcemaps": "^3.0.0", - "gulp-zip": "^5.1.0", - "postcss": "^8.4.24", - "postcss-easy-import": "^4.0.0", + "css-loader": "^7.1.2", + "cssnano": "^7.0.6", + "eslint": "^9.20.1", + "eslint-import-resolver-typescript": "^3.7.0", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-react": "^7.37.4", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-webpack-plugin": "^4.2.0", + "glob": "^11.0.1", + "globals": "^15.14.0", + "mini-css-extract-plugin": "^2.9.2", + "postcss": "^8.5.2", "postcss-hexrgba": "^2.1.0", - "postcss-import": "^15.1.0", - "postcss-prefix-selector": "^1.16.0", - "sass": "^1.63.6", - "typescript": "^5.1.6", - "webpack": "^5.88.1" + "postcss-load-config": "^6.0.1", + "postcss-loader": "^8.1.1", + "rtlcss": "^4.3.0", + "sass": "^1.84.0", + "sass-loader": "^16.0.4", + "style-loader": "^4.0.0", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.7.3", + "typescript-eslint": "^8.24.0", + "webpack": "^5.97.1", + "webpack-cli": "^6.0.1", + "webpack-merge": "^6.0.1", + "webpack-remove-empty-scripts": "^1.0.4" }, - "babel": { - "presets": [ - "@babel/env", - "@babel/react", - "@babel/typescript" - ] + "overrides": { + "eslint": "^9.20.1", + "react": "^18.3.1", + "react-dom": "^18.3.1" } } diff --git a/readme.txt b/readme.txt deleted file mode 100644 index aec93fc7..00000000 --- a/readme.txt +++ /dev/null @@ -1,243 +0,0 @@ -=== Code Snippets === -Contributors: bungeshea, ver3, lightbulbman, 0aksmith, codesnippetspro -Donate link: https://codesnippets.pro -Tags: snippets, functions, multisite, code, php, html, css, javascript, js, content, scripts, styles, cloud, shortcode -License: MIT -License URI: license.txt -Stable tag: 3.6.4-beta.1 -Tested up to: 6.5-beta2 - -An easy, clean and simple way to enhance your site with code snippets. - -== Description == - -**βœ‚ Code Snippets** provides an effortless way to enhance your WordPress site. - -**πŸš€ Upgrade to Code Snippets Pro** for complete CSS, JavaScript, Gutenberg, Elementor and cloud synchronisation integrations. **[Elevate your snippets experience now!](https://codesnippets.pro/pricing)** - -Say goodbye to the hassle of tweaking your theme's `functions.php` file and downloading endless plugins – Code Snippets simplifies the process! - -A snippet is like a mini-plugin for your WordPress site, providing added functionality without the clutter. - -Unlike other solutions that involve dumping code into your `functions.php` file, Code Snippets offers an intuitive graphical interface for seamless integration and real-time execution. Managing snippets is as easy as activating and deactivating plugins, only without the bloat and overhead. - -**πŸŽ₯ Watch a quick overview by Imran Siddiq:** - -https://youtu.be/EMjIWjcYONk - -☁️ Each copy of Code Snippets includes full integration with the community-powered [Code Snippets Cloud](https://codesnippets.cloud/) platform, providing easy access to hundreds of tweaks and enhancements ready to power-up any WordPress site. - -**πŸ“š Learn from Ferdy Korpershoek's tutorial:** - -https://youtu.be/29jD2BcBX5w - -**🌐 Connect with us:** - -* [Support Forum](https://wordpress.org/support/plugin/code-snippets) -* [Facebook Community](https://facebook.com/groups/codesnippetsplugin) -* [GitHub Repository](https://github.com/codesnippetspro/code-snippets) - -🌟 Like our plugin? Find it useful? Please consider sharing your experience by [leaving a review on WordPress.org](https://wordpress.org/support/view/plugin-reviews/code-snippets). Your feedback is instrumental to shaping our future growth! - -🌍 We'd like to thank the wonderful people who have helped contribute translations to allow Code Snippets to be used in different languages. [You can find a full list here](https://github.com/codesnippetspro/code-snippets/blob/core/CREDITS.md#translators). - -== Installation == - -= Automatic installation = - -1. Log into your WordPress admin -2. Click __Plugins__ -3. Click __Add New__ -4. Search for __Code Snippets__ -5. Click __Install Now__ under "Code Snippets" -6. Activate the plugin - -= Manual installation = - -1. Download the plugin -2. Extract the contents of the zip file -3. Upload the contents of the zip file to the `wp-content/plugins/` folder of your WordPress installation -4. Activate the Code Snippets plugin from 'Plugins' page. - -Network Activating Code Snippets through the Network Dashboard will enable a special interface for running snippets across the entire network. - -== Frequently Asked Questions == - -A full list of our Frequently Asked Questions can be found at [help.codesnippets.pro](https://help.codesnippets.pro/collection/3-faq). - -= How can I recover my site if it is crashed by a buggy snippet? = -You can recover your site by enabling the Code Snippets safe mode feature. Instructions for how to turn it on are available here: . - -= Will I lose my snippets if I change the theme or upgrade WordPress? = -No, the snippets are stored in the WordPress database, independent of the theme and unaffected by WordPress upgrades. - -= Can the plugin be completely uninstalled? = -If you enable the 'Complete Uninstall' option on the plugin settings page, Code Snippets will clean up all of its data when deleted through the WordPress 'Plugins' menu. This includes all stored snippets. If you would like to preserve the snippets, ensure they are exported first. - -= Can I copy snippets that I have created to another WordPress site? = -Yes! You can individually export a single snippet using the link below the snippet name on the 'Manage Snippets' page or bulk export multiple snippets using the 'Bulk Actions' feature. Snippets can later be imported using the 'Import Snippets' page by uploading the export file. - -= Can I export my snippets to PHP for a site where I'm not using the Code Snippets plugin? = -Yes. Click the checkboxes next to the snippets you want to export, and then choose **Export to PHP** from the Bulk Actions menu and click Apply. The generated PHP file will contain the exported snippets' code, as well as their name and description in comments. - -= Can I run network-wide snippets on a multisite installation? = -You can run snippets across an entire multisite network by **Network Activating** Code Snippets through the Network Dashboard. You can also activate Code Snippets just on the main site, and then individually on other sites of your choice. - -= Where are the snippets stored in my WordPress database? = -Snippets are stored in the `wp_snippets` table in the WordPress database. The table name may differ depending on what your table prefix is set to. - -= Where can I go for help or suggest new features? = -You can get help with Code Snippets, report bugs or errors, and suggest new features and improvements either on the [WordPress Support Forums](https://wordpress.org/support/plugin/code-snippets) or on [GitHub](https://github.com/codesnippetspro/code-snippets). - -= How can I help contribute to the development of the Code Snippets plugin? = -The best way to do this is to fork the [repository on GitHub](https://github.com/codesnippetspro/code-snippets) and send a pull request. - -= How can I report security bugs found in this plugin? = -You can report security bugs found in the source code of this plugin through the [Patchstack Vulnerability Disclosure Program](https://patchstack.com/database/vdp/code-snippets). The Patchstack team will assist with verification, triage, and notification of security vulnerabilities. - -== Screenshots == - -1. Managing existing snippets -2. Adding a new snippet -3. Editing a snippet -4. Importing snippets from an export file - -== Changelog == - -= 3.6.4 (beta release) = -* Fixed: Minor type compatability issue with newer versions of PHP. -* Improvement: Increment the revision number of CSS and JS snippet when using the 'Reset Caches' debug action. (PRO) -* Fixed: Undefined array key issue when initiating cloud sync. (PRO) -* Fixed: Bug preventing downloading a single snippet from a bundle. (PRO) -* Added: AI generation for all snippet types: HTML, CSS, JS. (PRO) -* Fixed: Translations not loading for strings in JavaScript files. -* Improved: UX in generate dialog, such as allowing 'Enter' to submit the form. (PRO) -* Added: Button to create a cloud connection directly from the Snippets menu when disconnected. (PRO) - -= 3.6.3 (13 Nov 2023) = -* Fixed: Import error when initialising cloud sync configuration. (PRO) -* Improved: Added debug action for resetting snippets caches. - -= 3.6.2 (11 Nov 2023) = -* Fixed: Error when attempting to save shared network snippets marked as active. -* Fixed: Type error when rendering checkbox fields without a stored or default value. -* Fixed: Removed automatic encoding of code content. -* Fixed: Label for snippet sharing input incorrectly linked to input field. -* Fixed: Error when attempting to download export files from Edit menu. -* Fixed: Issue loading Freemius string overrides too early. (PRO) -* Fixed: Fix redirect URL when connecting with OAuth on subdirectory or HTTPS sites. (PRO) -* Fixed: Import error when attempting to completely uninstall the plugin. - -= 3.6.1 (07 Nov 2023) = -* Fixed: Issue accessing fields on Snippets class. - -= 3.6.0 (07 Nov 2023) = -* Updated minimum PHP requirement to 7.4. - -* Added: Ability to authenticate with Code Snippets Cloud using OAuth. (PRO) -* Added: Integration with GPT AI for generating snippets. (PRO) -* Added: Ability to generate line-by-line descriptions of snippet code with GPT AI. (PRO) -* Added: Ability to generate tags and description text from existing snippet code with GPT AI. (PRO) - -* Improved: Ensure that the URL of the edit snippet page changes when adding a new snippet. -* Improved: Snippet tags will automatically be added when focus is lost on the tags field. -* Improved: Added debug settings menu for manually performing problem-solving actions. -* Fixed: Moved active status border on edit name field to left-hand side. -* Added: Filter to disable scroll-into-view functionality for edit page notices. -* Fixed: New notices will not scroll if already at top of page. -* Fixed: Potential CSRF vulnerability allowing an authenticated user to reset settings. - -= 3.5.1 (15 Sep 2023) = -* Fixed: Undefined array key error when accessing plugin settings page. (PRO) -* Fixed: Issue registering API endpoints affecting edit post screen. (PRO) - -= 3.5.0 (14 Sep 2023) = -* Added: Support for the Code Snippets Cloud API. -* Added: Search and download public snippets. -* Added: Codevault back-up and synchronisation. (PRO) -* Added: Synchronised local snippets are automatically updated in Cloud. (PRO) -* Added: Bulk actions - 'update' and 'download'. -* Added: Download snippets from public and private codevaults. (PRO) -* Added: Search and download any publicly viewable snippet in Code Snippet Cloud by keyword or name of codevault. (PRO) -* Added: Deploy snippets to plugin from Code Snippets Cloud app. (PRO) -* Added: Bundles of Joy! Search and download Snippet Bundles in one go direct from Code Snippets Cloud. (PRO) -* Fixed: Error when attempting to update network shared snippets after saving. [[#](https://wordpress.org/support/topic/activating-snippets-breaks-on-wordpress-6-3/)] -* Improved: Redirect to snippets table when deleting snippet from the edit menu. -* Improved: Scroll new notices into view on edit menu. - -= 3.4.2 (05 Jul 2023) = -* Fixed: Issue causing export process to fail with fatal error. [[#](https://wordpress.org/support/topic/critical-error-on-exporting-snippets/)] -* Fixed: Type issue on `the_posts` filter when no posts available. [[#](https://wordpress.org/support/topic/collision-with-plugin-xml-sitemap-google-news/)] - -= 3.4.1 (29 Jun 2023) = -* Fixed: Undefined array key error. [[#](https://wordpress.org/support/topic/after-updating-occasionally-getting-undefined-array-key-query/)] -* Fixed: Potential type issue when loading Prism. [[#](https://wordpress.org/support/topic/code-snippets-fatal-error-breaking-xml-sitemaps/)] -* Improved: Added better debugging when calling REST API methods from the edit menu. -* Improved: Escape special characters when sending snippet code through AJAX to avoid false-positives from security modules. [[#](https://wordpress.org/support/topic/latest-3-4-0-ajax-bug-cannot-save-snippets-403-error/)] -* Improved: Only display the latest update or error notice on the edit page, instead of allowing them to stack. -* Fixed: Potential type issue when sorting snippets. [[#](https://github.com/codesnippetspro/code-snippets/issues/166)] -* Fixed: Issue preventing asset revision numbers from updating correctly. (PRO) [[#](https://github.com/codesnippetspro/code-snippets/issues/166)] - -= 3.4.0 (17 May 2023) = -* Added: Proper WordPress REST API support for retrieving and modifying snippets. -* Improved: Better compatibility with modern versions of PHP (7.0+). -* Improved: Converted Edit/Add New Snippet page to use React. - * Converted action buttons to asynchronously use REST API endpoints through AJAX. - * Load page components dynamically through React. - * Added action notice queue system. - * Replaced native alert dialog with proper React modal. -* Improved: Catch snippet execution errors to prevent site from crashing. -* Improved: Display recent snippet errors in admin dashboard instead. -* Improved: Updated editor block to use new REST API endpoints. (PRO) -* Improved: Change colour of upgrade notice in Pro plugin. (PRO) -* Improved: All available snippet data is included in export files. -* Improved: Only import specific fields from export file, even if additional fields specified. -* Fixed: Issue preventing editor colorpicker from loading correctly. (PRO) -* Improved: Added help links to content snippet options. -* Improved: Pass additional attributes specified in `[code_snippet]` content shortcode to shortcode content. -* Improved: Make shortcode attributes available as individual variables. -* Improved: Allow boolean attributes to be passed to code snippets shortcodes without specifying a value. -* Improved: Replace external links to Pro pricing page with an upgrade modal. -* Fixed: Issue preventing linting libraries from loading correctly in the code editor. - -= 3.3.0 (09 Mar 2023) = -* Fixed: Do not enqueue CSS or JS snippet file if no snippets exist. (PRO) -* Improved: Added additional editor shortcuts to list in tooltip. -* Added: Filter for changing Snippets admin menu position. [See this help article for more information.](https://help.codesnippets.pro/article/61-how-can-i-change-the-location-of-the-snippets-admin-menu) -* Added: Ability to filter shortcode output. Thanks to contributions from [Jack Szwergold](https://github.com/JackSzwergold). -* Fixed: Bug causing all snippets to show in site health information instead of those active. -* Fixed: Unnecessary sanitization of file upload data causing import process to fail on Windows systems. - -= 3.2.2 (17 Nov 2022) = -* Fixed: Plugin lacking a valid header error on activation. - -= 3.2.1 (05 Oct 2022) = -* Fixed: Issue making survey reminder notice not dismissible. -* Added: `Ctrl`+`/` or `Cmd`+`/` as shortcut for commenting out code in the snippet editor. -* Added: Additional hooks to various snippet actions, thanks to contributions made by [ancient-spirit](https://github.com/ancient-spirit). -* Added: Fold markers, additional keyboard shortcuts and keymap options to snippet editor, -thanks to contributions made by [Amaral Krichman](https://github.com/karmaral). -* Improved: Removed duplicate tables exist query. ([#](https://wordpress.org/support/topic/duplicate-queries-21)). -* Improved: Enabled 'add paragraphs and formatting' option by default for newly inserted content snippets. -* Added: WP-CLI commands for retrieving, activating, deactivating, deleting, creating, updating, exporting and importing snippets. -* Fixed: Path to iron visible when updating the pro plugin. - -= 3.2.0 (22 Jul 2022) = -* Fixed: Remove default value from SQL columns to improve compatibility with certain versions of MySQL. -* Fixed: Delay loading snippets in Gutenberg editor blocks. (PRO) -* Added: Option to show and hide line numbers in Gutenberg source code editor block. (PRO) -* Added: Support for highlighting HTML, CSS, JS and embedded code in the front-end PrismJS code highlighter. -* Added: Additional features to front-end PrismJS code highlighter, including automatic links and a copy button. -* Added: Support for multiple code styles in the source code Gutenberg editor block. (PRO) -* Added: Admin notice announcing release of Code Snippets Pro. -* Fixed: Inconsistencies with translations between different plugin versions. -* Fixed: Issue with Content Snippet shortcode information not displaying. -* Added: Button for copying shortcode text to clipboard. -* Improved: Include Code Snippets CSS and JS source code in distributed package. -* Improved: Don't delete data from plugin if deleting Code Snippets Free while Code Snippets Pro is active. -* Improved: Streamlined user interface and experience in Gutenberg editor blocks. (PRO) -* Added: Option to choose from 44 different themes for the Prism code highlighter in the source editor block and Elementor widget. (PRO) -* Improved: Compatibility of Elementor widgets with the latest version of Elementor. (PRO) -* Improved: Replace icon font menu icon with embedded SVG icon. - -**[The full changelog is available on GitHub](https://github.com/codesnippetspro/code-snippets/blob/master/CHANGELOG.md)** diff --git a/screenshots/banner-1544x500.png b/screenshots/banner-1544x500.png deleted file mode 100644 index 5095e941..00000000 Binary files a/screenshots/banner-1544x500.png and /dev/null differ diff --git a/scripts/bundle.ts b/scripts/bundle.ts new file mode 100644 index 00000000..7c50c00c --- /dev/null +++ b/scripts/bundle.ts @@ -0,0 +1,72 @@ +import { spawn } from 'child_process' +import { createWriteStream } from 'fs' +import process from 'node:process' +import { webpack as webpackAsync } from 'webpack' +import archiver from 'archiver' +import plugin from '../package.json' +import webpackConfig from '../webpack.config' +import { cleanup, copy, resolve } from './utils/files' +import type { SpawnOptions } from 'child_process' +import type { Configuration } from 'webpack' + +const DEST_DIR = 'bundle/' + +const BUNDLE_FILES = [ + 'src/assets/**/*', + 'src/css/**/*', + 'src/js/**/*', + 'src/dist/**/*', + '!src/dist/**/*.map', + 'src/php/**/*', + 'src/vendor/**/*', + 'src/code-snippets.php', + 'src/uninstall.php', + 'src/readme.txt', + 'src/license.txt', + 'CHANGELOG.md' +] + +const execute = (command: string, args: readonly string[], options: SpawnOptions): Promise => + new Promise(resolve => { + const child = spawn(command, args, { ...options }) + + child.stdout?.on('data', (data: string) => process.stdout.write(data)) + child.stderr?.on('data', (data: string) => process.stderr.write(data)) + child.on('close', code => resolve(code)) + }) + +const webpack = (config: Configuration): Promise => + new Promise((resolve, reject) => + webpackAsync({ ...webpackConfig, ...config }, error => error ? reject(error) : resolve())) + +export const createArchive = (): Promise => { + const filename = `${plugin.name}.${plugin.version}.zip` + console.info(`creating '${filename}\n`) + + const output = createWriteStream(resolve(filename), 'utf8') + const archive = archiver('zip', { + zlib: { level: 9 } + }) + + archive.pipe(output) + archive.directory(resolve(DEST_DIR), plugin.name) + return archive.finalize() +} + +const bundle = async () => { + console.info('generating composer and webpack files\n') + + await Promise.all([ + cleanup(`${plugin.name}.*.zip`), + execute('composer', ['install', '--no-dev'], { cwd: 'src' }), + webpack({ mode: 'production' }) + ]) + + await copy(BUNDLE_FILES, DEST_DIR, filename => + filename.replace(/^src\//, '')) + + await createArchive() + await execute('composer', ['install'], { cwd: 'src' }) +} + +void bundle().then() diff --git a/scripts/utils/files.ts b/scripts/utils/files.ts new file mode 100644 index 00000000..fa79628d --- /dev/null +++ b/scripts/utils/files.ts @@ -0,0 +1,31 @@ +import { mkdir, rm, stat } from 'fs/promises' +import { createReadStream, createWriteStream } from 'fs' +import { dirname, join } from 'path' +import { glob } from 'glob' + +export const resolve = (...parts: string[]): string => + join(__dirname, '..', '..', ...parts) + +export const cleanup = (...paths: string[]): Promise[]> => + Promise.all(paths.map(filename => + rm(resolve(filename), { force: true, recursive: true }) + )) + +export const copy = async (patterns: string[], dest: string, transform?: (filename: string) => string): Promise => { + const filenames = glob(patterns) + await rm(dest, { force: true, recursive: true }) + await mkdir(dest, { recursive: true }) + + for (const filename of await filenames) { + const stats = await stat(resolve(filename)) + + if (!stats.isDirectory()) { + console.log(`copying ${filename}`) + const destPath = resolve(dest, transform?.(filename) ?? filename) + + await mkdir(dirname(destPath), { recursive: true }) + const out = createWriteStream(destPath, 'utf8') + createReadStream(filename).pipe(out) + } + } +} diff --git a/scripts/version.ts b/scripts/version.ts new file mode 100644 index 00000000..62258deb --- /dev/null +++ b/scripts/version.ts @@ -0,0 +1,22 @@ +import { readFileSync, writeFileSync } from 'fs' +import plugin from '../package.json' +import { resolve } from './utils/files' + +const replaceInFile = (filename: string, transform: (contents: string) => string) => { + const file = resolve(filename) + const contents = readFileSync(file, 'utf8') + writeFileSync(file, transform(contents), 'utf8') +} + +replaceInFile( + 'src/code-snippets.php', + contents => contents + .replace(/(?Version:\s+|@version\s+)\d+\.\d+[\w-.]+$/mg, `$1${plugin.version}`) + .replace(/(?'CODE_SNIPPETS_VERSION',\s+)'[\w-.]+'/, `$1'${plugin.version}'`) +) + +replaceInFile( + 'src/readme.txt', + contents => contents + .replace(/(?Stable tag:\s+|@version\s+)\d+\.\d+[\w-.]+$/mg, `$1${plugin.version}`) +) diff --git a/src/assets/icon.svg b/src/assets/icon.svg new file mode 100644 index 00000000..a93d1e4d --- /dev/null +++ b/src/assets/icon.svg @@ -0,0 +1,91 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/assets/menu-icon.svg b/src/assets/menu-icon.svg similarity index 100% rename from assets/menu-icon.svg rename to src/assets/menu-icon.svg diff --git a/code-snippets.php b/src/code-snippets.php similarity index 94% rename from code-snippets.php rename to src/code-snippets.php index 1f0493d5..b2b9cd2f 100644 --- a/code-snippets.php +++ b/src/code-snippets.php @@ -8,11 +8,11 @@ * License: GPL-2.0-or-later * License URI: license.txt * Text Domain: code-snippets - * Version: 3.6.4-beta.1 + * Version: 3.6.8 * Requires PHP: 7.4 * Requires at least: 5.0 * - * @version 3.6.4-beta.1 + * @version 3.6.8 * @package Code_Snippets * @author Shea Bunge * @copyright 2012-2023 Code Snippets Pro @@ -37,7 +37,7 @@ * * @const string */ - define( 'CODE_SNIPPETS_VERSION', '3.6.4-beta.1' ); + define( 'CODE_SNIPPETS_VERSION', '3.6.8' ); /** * The full path to the main file of this plugin. diff --git a/composer.json b/src/composer.json similarity index 78% rename from composer.json rename to src/composer.json index d2ee7c78..f08c96b3 100644 --- a/composer.json +++ b/src/composer.json @@ -26,17 +26,20 @@ ] }, "require": { - "composer/installers": "~1.12", "php": ">=7.4", "ext-dom": "*", - "ext-json": "*" + "ext-json": "*", + "composer/installers": "^2.3" }, "require-dev": { - "wp-coding-standards/wpcs": "^3.0", - "phpcompatibility/phpcompatibility-wp": "*", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.2" + "wp-coding-standards/wpcs": "^3.1", + "phpcompatibility/phpcompatibility-wp": "^2.1", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0" }, "config": { + "platform": { + "php": "7.4" + }, "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true, "composer/installers": true diff --git a/composer.lock b/src/composer.lock similarity index 71% rename from composer.lock rename to src/composer.lock index 7f399871..7ab674d3 100644 --- a/composer.lock +++ b/src/composer.lock @@ -4,43 +4,41 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "295ebe854d6d6d2982070b5a892fc26e", + "content-hash": "483a8311b70d7fb9078831174276ee2e", "packages": [ { "name": "composer/installers", - "version": "v1.12.0", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/composer/installers.git", - "reference": "d20a64ed3c94748397ff5973488761b22f6d3f19" + "reference": "12fb2dfe5e16183de69e784a7b84046c43d97e8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/installers/zipball/d20a64ed3c94748397ff5973488761b22f6d3f19", - "reference": "d20a64ed3c94748397ff5973488761b22f6d3f19", + "url": "https://api.github.com/repos/composer/installers/zipball/12fb2dfe5e16183de69e784a7b84046c43d97e8e", + "reference": "12fb2dfe5e16183de69e784a7b84046c43d97e8e", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0 || ^2.0" - }, - "replace": { - "roundcube/plugin-installer": "*", - "shama/baton": "*" + "composer-plugin-api": "^1.0 || ^2.0", + "php": "^7.2 || ^8.0" }, "require-dev": { - "composer/composer": "1.6.* || ^2.0", - "composer/semver": "^1 || ^3", - "phpstan/phpstan": "^0.12.55", - "phpstan/phpstan-phpunit": "^0.12.16", - "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.3" + "composer/composer": "^1.10.27 || ^2.7", + "composer/semver": "^1.7.2 || ^3.4.0", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-phpunit": "^1", + "symfony/phpunit-bridge": "^7.1.1", + "symfony/process": "^5 || ^6 || ^7" }, "type": "composer-plugin", "extra": { "class": "Composer\\Installers\\Plugin", "branch-alias": { - "dev-main": "1.x-dev" - } + "dev-main": "2.x-dev" + }, + "plugin-modifies-install-path": true }, "autoload": { "psr-4": { @@ -61,7 +59,6 @@ "description": "A multi-framework Composer library installer", "homepage": "https://composer.github.io/installers/", "keywords": [ - "Craft", "Dolibarr", "Eliasis", "Hurad", @@ -82,7 +79,6 @@ "Whmcs", "WolfCMS", "agl", - "aimeos", "annotatecms", "attogram", "bitrix", @@ -91,6 +87,7 @@ "cockpit", "codeigniter", "concrete5", + "concreteCMS", "croogo", "dokuwiki", "drupal", @@ -101,7 +98,6 @@ "grav", "installer", "itop", - "joomla", "known", "kohana", "laravel", @@ -110,6 +106,7 @@ "magento", "majima", "mako", + "matomo", "mediawiki", "miaoxing", "modulework", @@ -129,9 +126,7 @@ "silverstripe", "sydes", "sylius", - "symfony", "tastyigniter", - "typo3", "wordpress", "yawik", "zend", @@ -139,7 +134,7 @@ ], "support": { "issues": "https://github.com/composer/installers/issues", - "source": "https://github.com/composer/installers/tree/v1.12.0" + "source": "https://github.com/composer/installers/tree/v2.3.0" }, "funding": [ { @@ -155,41 +150,44 @@ "type": "tidelift" } ], - "time": "2021-09-13T08:19:44+00:00" + "time": "2024-06-24T20:46:46+00:00" } ], "packages-dev": [ { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "4be43904336affa5c2f70744a348312336afd0da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", "shasum": "" }, "require": { "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", + "php": ">=5.4", "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" }, "require-dev": { "composer/composer": "*", + "ext-json": "*", + "ext-zip": "*", "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0" + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" }, "type": "composer-plugin", "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" }, "autoload": { "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -205,7 +203,7 @@ }, { "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" } ], "description": "PHP_CodeSniffer Standards Composer Installer Plugin", @@ -229,10 +227,10 @@ "tests" ], "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "source": "https://github.com/PHPCSStandards/composer-installer" }, - "time": "2022-02-04T12:51:07+00:00" + "time": "2023-01-05T11:28:13+00:00" }, { "name": "phpcompatibility/php-compatibility", @@ -298,28 +296,28 @@ }, { "name": "phpcompatibility/phpcompatibility-paragonie", - "version": "1.3.2", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git", - "reference": "bba5a9dfec7fcfbd679cfaf611d86b4d3759da26" + "reference": "293975b465e0e709b571cbf0c957c6c0a7b9a2ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/bba5a9dfec7fcfbd679cfaf611d86b4d3759da26", - "reference": "bba5a9dfec7fcfbd679cfaf611d86b4d3759da26", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/293975b465e0e709b571cbf0c957c6c0a7b9a2ac", + "reference": "293975b465e0e709b571cbf0c957c6c0a7b9a2ac", "shasum": "" }, "require": { "phpcompatibility/php-compatibility": "^9.0" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", "paragonie/random_compat": "dev-master", "paragonie/sodium_compat": "dev-master" }, "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." }, "type": "phpcodesniffer-standard", @@ -349,22 +347,37 @@ ], "support": { "issues": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/issues", + "security": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/security/policy", "source": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie" }, - "time": "2022-10-25T01:46:02+00:00" + "funding": [ + { + "url": "https://github.com/PHPCompatibility", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2024-04-24T21:30:46+00:00" }, { "name": "phpcompatibility/phpcompatibility-wp", - "version": "2.1.4", + "version": "2.1.6", "source": { "type": "git", "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git", - "reference": "b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5" + "reference": "80ccb1a7640995edf1b87a4409fa584cd5869469" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5", - "reference": "b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/80ccb1a7640995edf1b87a4409fa584cd5869469", + "reference": "80ccb1a7640995edf1b87a4409fa584cd5869469", "shasum": "" }, "require": { @@ -372,10 +385,10 @@ "phpcompatibility/phpcompatibility-paragonie": "^1.0" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7" + "dealerdirect/phpcodesniffer-composer-installer": "^1.0" }, "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." }, "type": "phpcodesniffer-standard", @@ -404,35 +417,50 @@ ], "support": { "issues": "https://github.com/PHPCompatibility/PHPCompatibilityWP/issues", + "security": "https://github.com/PHPCompatibility/PHPCompatibilityWP/security/policy", "source": "https://github.com/PHPCompatibility/PHPCompatibilityWP" }, - "time": "2022-10-24T09:00:36+00:00" + "funding": [ + { + "url": "https://github.com/PHPCompatibility", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2025-01-16T22:34:19+00:00" }, { "name": "phpcsstandards/phpcsextra", - "version": "1.1.2", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHPCSExtra.git", - "reference": "746c3190ba8eb2f212087c947ba75f4f5b9a58d5" + "reference": "11d387c6642b6e4acaf0bd9bf5203b8cca1ec489" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/746c3190ba8eb2f212087c947ba75f4f5b9a58d5", - "reference": "746c3190ba8eb2f212087c947ba75f4f5b9a58d5", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/11d387c6642b6e4acaf0bd9bf5203b8cca1ec489", + "reference": "11d387c6642b6e4acaf0bd9bf5203b8cca1ec489", "shasum": "" }, "require": { "php": ">=5.4", - "phpcsstandards/phpcsutils": "^1.0.8", - "squizlabs/php_codesniffer": "^3.7.1" + "phpcsstandards/phpcsutils": "^1.0.9", + "squizlabs/php_codesniffer": "^3.8.0" }, "require-dev": { "php-parallel-lint/php-console-highlighter": "^1.0", "php-parallel-lint/php-parallel-lint": "^1.3.2", "phpcsstandards/phpcsdevcs": "^1.1.6", "phpcsstandards/phpcsdevtools": "^1.2.1", - "phpunit/phpunit": "^4.5 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^4.5 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" }, "type": "phpcodesniffer-standard", "extra": { @@ -467,35 +495,50 @@ ], "support": { "issues": "https://github.com/PHPCSStandards/PHPCSExtra/issues", + "security": "https://github.com/PHPCSStandards/PHPCSExtra/security/policy", "source": "https://github.com/PHPCSStandards/PHPCSExtra" }, - "time": "2023-09-20T22:06:18+00:00" + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2023-12-08T16:49:07+00:00" }, { "name": "phpcsstandards/phpcsutils", - "version": "1.0.8", + "version": "1.0.12", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", - "reference": "69465cab9d12454e5e7767b9041af0cd8cd13be7" + "reference": "87b233b00daf83fb70f40c9a28692be017ea7c6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/69465cab9d12454e5e7767b9041af0cd8cd13be7", - "reference": "69465cab9d12454e5e7767b9041af0cd8cd13be7", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/87b233b00daf83fb70f40c9a28692be017ea7c6c", + "reference": "87b233b00daf83fb70f40c9a28692be017ea7c6c", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0", "php": ">=5.4", - "squizlabs/php_codesniffer": "^3.7.1 || 4.0.x-dev@dev" + "squizlabs/php_codesniffer": "^3.10.0 || 4.0.x-dev@dev" }, "require-dev": { "ext-filter": "*", "php-parallel-lint/php-console-highlighter": "^1.0", "php-parallel-lint/php-parallel-lint": "^1.3.2", "phpcsstandards/phpcsdevcs": "^1.1.6", - "yoast/phpunit-polyfills": "^1.0.5 || ^2.0.0" + "yoast/phpunit-polyfills": "^1.1.0 || ^2.0.0" }, "type": "phpcodesniffer-standard", "extra": { @@ -540,22 +583,37 @@ "support": { "docs": "https://phpcsutils.com/", "issues": "https://github.com/PHPCSStandards/PHPCSUtils/issues", + "security": "https://github.com/PHPCSStandards/PHPCSUtils/security/policy", "source": "https://github.com/PHPCSStandards/PHPCSUtils" }, - "time": "2023-07-16T21:39:41+00:00" + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2024-05-20T13:34:27+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.7.2", + "version": "3.11.3", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10", + "reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10", "shasum": "" }, "require": { @@ -565,11 +623,11 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, "bin": [ - "bin/phpcs", - "bin/phpcbf" + "bin/phpcbf", + "bin/phpcs" ], "type": "library", "extra": { @@ -584,35 +642,62 @@ "authors": [ { "name": "Greg Sherwood", - "role": "lead" + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", "keywords": [ "phpcs", "standards", "static analysis" ], "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" }, - "time": "2023-02-22T23:07:41+00:00" + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-01-23T17:04:15+00:00" }, { "name": "wp-coding-standards/wpcs", - "version": "3.0.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/WordPress/WordPress-Coding-Standards.git", - "reference": "b4caf9689f1a0e4a4c632679a44e638c1c67aff1" + "reference": "9333efcbff231f10dfd9c56bb7b65818b4733ca7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/b4caf9689f1a0e4a4c632679a44e638c1c67aff1", - "reference": "b4caf9689f1a0e4a4c632679a44e638c1c67aff1", + "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/9333efcbff231f10dfd9c56bb7b65818b4733ca7", + "reference": "9333efcbff231f10dfd9c56bb7b65818b4733ca7", "shasum": "" }, "require": { @@ -621,16 +706,16 @@ "ext-tokenizer": "*", "ext-xmlreader": "*", "php": ">=5.4", - "phpcsstandards/phpcsextra": "^1.1.0", - "phpcsstandards/phpcsutils": "^1.0.8", - "squizlabs/php_codesniffer": "^3.7.2" + "phpcsstandards/phpcsextra": "^1.2.1", + "phpcsstandards/phpcsutils": "^1.0.10", + "squizlabs/php_codesniffer": "^3.9.0" }, "require-dev": { "php-parallel-lint/php-console-highlighter": "^1.0.0", "php-parallel-lint/php-parallel-lint": "^1.3.2", "phpcompatibility/php-compatibility": "^9.0", "phpcsstandards/phpcsdevtools": "^1.2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" }, "suggest": { "ext-iconv": "For improved results", @@ -661,11 +746,11 @@ }, "funding": [ { - "url": "https://opencollective.com/thewpcc/contribute/wp-php-63406", + "url": "https://opencollective.com/php_codesniffer", "type": "custom" } ], - "time": "2023-09-14T07:06:09+00:00" + "time": "2024-03-25T16:39:00+00:00" } ], "aliases": [], @@ -674,10 +759,12 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.4", "ext-dom": "*", "ext-json": "*" }, "platform-dev": [], + "platform-overrides": { + "php": "7.4" + }, "plugin-api-version": "2.6.0" } diff --git a/css/common/_editor.scss b/src/css/common/_editor.scss similarity index 83% rename from css/common/_editor.scss rename to src/css/common/_editor.scss index 05a3b747..1b76697b 100644 --- a/css/common/_editor.scss +++ b/src/css/common/_editor.scss @@ -1,4 +1,4 @@ -@import '../node_modules/codemirror-colorpicker/dist/codemirror-colorpicker.css'; +@import '~codemirror-colorpicker/dist/codemirror-colorpicker.css'; .CodeMirror { border: 1px solid #dfdfdf; @@ -26,13 +26,13 @@ &::before { content: ''; - padding-bottom: 5px; + padding-block-end: 5px; } } /* Fix cursor color with rubyblue theme (see https://goo.gl/3HDgRm */ .cm-s-rubyblue .CodeMirror-cursor { - border-left: 1px solid white !important; + border-inline-start: 1px solid white !important; } [class*="CodeMirror-lint-marker"], [class*="CodeMirror-lint-message"], .CodeMirror-lint-marker-multiple { @@ -45,19 +45,19 @@ .CodeMirror-lint-marker-multiple { position: absolute; - top: 0; + inset-block-start: 0; } [class*="CodeMirror-lint-marker"]:before { font: normal 18px/1 dashicons; position: relative; - top: -2px; + inset-block-start: -2px; } [class*="CodeMirror-lint-message"]:before { font: normal 16px/1 dashicons; - left: 16px; position: absolute; + inset-inline-start: 16px; } .CodeMirror-lint-message-error, @@ -69,7 +69,7 @@ .CodeMirror-lint-message-warning { background-color: #fff8e5; - border-left: 4px solid #ffb900; + border-inline-start: 4px solid #ffb900; } .CodeMirror-lint-marker-warning::before, .CodeMirror-lint-message-warning::before { @@ -79,7 +79,7 @@ .CodeMirror-lint-message-error { background-color: #fbeaea; - border-left: 4px solid #dc3232; + border-inline-start: 4px solid #dc3232; } .CodeMirror-lint-marker-error::before, .CodeMirror-lint-message-error::before { @@ -105,7 +105,7 @@ .CodeMirror-foldmarker { color: inherit; - margin-left: 0.25em; - margin-right: 0.25em; + margin-inline-start: 0.25em; + margin-inline-end: 0.25em; font-weight: bold; } diff --git a/css/common/_base.scss b/src/css/common/_theme.scss similarity index 67% rename from css/common/_base.scss rename to src/css/common/_theme.scss index 824f3217..a5003a97 100644 --- a/css/common/_base.scss +++ b/src/css/common/_theme.scss @@ -1,3 +1,11 @@ +@use 'sass:color'; + +$primary: #03c7d2; +$secondary: #d46f4d; +$outline: #9e9e9e; + +$core: #0073aa; +$pro: #ce0000; $php-active: #0073aa; $php-inactive: #579; @@ -17,12 +25,15 @@ $js-active: #d44500; $js-background: #cd6600; $js-highlight: #cd6600; +$brand-discord: #5865f2; +$brand-facebook: #3b5998; + @mixin link-colors($color, $lightness: 15%) { a { color: $color; &:hover, &:active, &:focus { - color: lighten($color, $lightness); + color: color.adjust($color, $lightness: $lightness); } } } diff --git a/css/common/_type-badges.scss b/src/css/common/_type-badges.scss similarity index 60% rename from css/common/_type-badges.scss rename to src/css/common/_type-badges.scss index 948a3d8d..4ff16e31 100644 --- a/css/common/_type-badges.scss +++ b/src/css/common/_type-badges.scss @@ -1,6 +1,6 @@ -@import 'base'; +@use 'theme'; -.nav-tab .badge, .snippet-type-badge, .go-pro-button .badge { +.nav-tab .badge, .snippet-type-badge, .go-pro-button .badge, .button .badge { font-size: 10px; text-transform: uppercase; border: 1px solid; @@ -11,7 +11,12 @@ .nav-tab .badge, .button .snippet-type-badge, .go-pro-button .badge, h1 .snippet-type-badge, h2 .snippet-type-badge, h3 .snippet-type-badge { /* rtl:ignore */ - margin-left: 3px; + margin-inline-start: 3px; +} + +.button .badge { + font-size: 8px; + text-transform: lowercase; } .nav-tab span, @@ -19,7 +24,7 @@ h1 .snippet-type-badge, h2 .snippet-type-badge, h3 .snippet-type-badge { vertical-align: middle; } -$badges: (php: $php-active, css: $css-highlight, js: $js-highlight, html: $html-active); +$badges: (php: theme.$php-active, css: theme.$css-highlight, js: theme.$js-highlight, html: theme.$html-active); @each $type, $color in $badges { .nav-tab[data-snippet-type=#{$type}] .badge, .snippet-type-badge[data-snippet-type=#{$type}] { @@ -51,15 +56,33 @@ $badges: (php: $php-active, css: $css-highlight, js: $js-highlight, html: $html- } } +.go-pro-badge, .pro-badge, .core-badge { + margin-inline-start: 3px; + border: 1px solid currentColor; + border-radius: 5px; + font-size: 10px; + padding: 1px 2px; + text-transform: uppercase; + +} + +.go-pro-badge, .pro-badge { + color: theme.$pro; +} + +.core-badge { + color: theme.$core; +} + .go-pro-button .badge, .go-pro-badge { - color: #ce0000; - border-color: #ce0000; - margin-left: 1px; + color: theme.$pro; + border-color: theme.$pro; + margin-inline-start: 1px; } .wp-core-ui .button.nav-tab-button { - margin-left: 0.5em; - float: right; + margin-inline-start: 0.5em; + float: inline-end; color: #a7aaad; background: #f6f7f7; border-color: #f6f7f7; diff --git a/css/edit.scss b/src/css/edit.scss similarity index 68% rename from css/edit.scss rename to src/css/edit.scss index 42990ee7..dceb95bb 100644 --- a/css/edit.scss +++ b/src/css/edit.scss @@ -1,6 +1,10 @@ -@import '../node_modules/@jcubic/tagger/tagger.css'; -@import 'common/editor'; -@import 'common/type-badges'; +@use 'common/editor'; +@use 'common/type-badges'; +@use 'edit/tooltips'; +@use 'edit/types'; +@use 'edit/tags'; +@use 'edit/upgrade-dialog'; +@use 'edit/gpt'; /** * Custom styling for the single snippet admin page @@ -11,7 +15,7 @@ } .notice.error blockquote { - margin-bottom: 0; + margin-block-end: 0; } h2 { @@ -30,25 +34,25 @@ h2:first-of-type, .submit-inline { .saved-snippet { &.inactive-snippet, &.active-snippet { #title { - border-left-width: 4px; + border-inline-start-width: 4px; } } &.active-snippet #title { - border-left-color: #46b450; + border-inline-start-color: #46b450; } &.inactive-snippet #title { - border-left-color: #bbb; + border-inline-start-color: #bbb; } &.erroneous-snippet #title { - border-left-color: #dc3232; + border-inline-start-color: #dc3232; } } #snippet-form { - margin-top: 10px; + margin-block-start: 10px; #snippet-tags, textarea { width: 100%; @@ -64,7 +68,7 @@ label[for='snippet_description'] h3 div { /* Add spacing in between the action buttons */ .button + .button, .generate-button + .button { - margin-left: .5em; + margin-inline-start: .5em; } h2 .button { @@ -83,37 +87,37 @@ h2 .button { } .submit-inline { - float: right; - margin-bottom: 0; + float: inline-end; + margin-block-end: 0; } p.snippet-scope, .snippet-scope p { - margin-top: 15px; + margin-block-start: 15px; } .snippet-description-container { - margin-top: 25px; + margin-block-start: 25px; .wp-editor-tools { - padding-top: 5px; + padding-block-start: 5px; } .wp-editor-tabs { - float: left; + float: inline-start; } } .snippet-scope label, .html-shortcode-options strong { display: inline-block; - margin-right: 1.5em; + margin-inline-end: 1.5em; } .below-snippet-editor { display: flex; flex-flow: row wrap; justify-content: space-between; - padding-top: 1px; + padding-block-start: 1px; } .snippet-priority { @@ -121,7 +125,7 @@ p.snippet-scope, .snippet-scope p { font-weight: bold; cursor: help; font-size: 1.1em; - padding-right: 0.5em; + padding-inline-end: 0.5em; } input { @@ -138,7 +142,7 @@ p.snippet-scope, .snippet-scope p { } .wrap h2.nav-tab-wrapper { - border-bottom: none; + border-block-end: none; } .code-snippets-copy-text { @@ -149,8 +153,8 @@ p.snippet-scope, .snippet-scope p { scroll-margin: 0.75em; } -@import 'edit/tooltips'; -@import 'edit/types'; -@import 'edit/tags'; -@import 'edit/upgrade-dialog'; -@import 'edit/gpt'; +#edit-snippet-form-container .cs-sticky-notice { + position: sticky; + inset-block-start: 40px; + z-index: 100; +} diff --git a/src/css/edit/_gpt.scss b/src/css/edit/_gpt.scss new file mode 100644 index 00000000..428578ae --- /dev/null +++ b/src/css/edit/_gpt.scss @@ -0,0 +1,70 @@ +.cloud-create-modal { + + .components-modal__content { + min-width: 550px; + } + + .action-buttons { + display: flex; + justify-content: flex-end; + } + + .components-button.is-secondary { + box-shadow: none; + } + + .notice { + margin-inline-start: 0; + margin-inline-end: 0; + } +} + +.generate-button { + float: inline-end; + display: flex; + align-items: center; + + .dashicons-warning { + color: #b32d2e; + margin-inline-end: 11px; + } +} + +.code-line-explanation { + display: flex; + align-items: center; + font-size: 13px; + margin: 0; + padding: 0 8px; + background-color: #fff; + border: 1px solid #bbb; + border-inline-start: 0; + border-inline-end: 0; + color: #666; + font-style: italic; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen-Sans, Ubuntu, Cantarell, Helvetica Neue, sans-serif; + + img { + height: 1rem; + padding-inline-end: 5px; + } +} + +.cloud-connect-modal { + .icons-group { + display: flex; + align-items: center; + justify-content: center; + + .dashicons { + width: 50px; + height: 50px; + font-size: 50px; + } + } + + .action-buttons { + display: flex; + justify-content: flex-end; + } +} diff --git a/css/edit/_tags.scss b/src/css/edit/_tags.scss similarity index 69% rename from css/edit/_tags.scss rename to src/css/edit/_tags.scss index 7653b9db..f53fa482 100644 --- a/css/edit/_tags.scss +++ b/src/css/edit/_tags.scss @@ -4,11 +4,28 @@ */ .tagger { - border: 1px solid #909497; + border: 0; +} + +.tagger > ul { + display: flex; + width: 100%; + align-items: center; + padding: 4px 5px 0; + justify-content: space-between; + box-sizing: border-box; + height: auto; + flex: 0 0 auto; + overflow-y: auto; + margin: 0; + list-style: none; + border: 1px solid #dfdfdf; + border-radius: 3px; + background-color: #fff; } .tagger > ul > li { - padding-bottom: 0.4rem; + padding-block-end: 0.4rem; margin: 0.4rem 5px 4px; &:not(.tagger-new) { @@ -24,7 +41,8 @@ border-radius: 3px; } - > span, > a > span { + > span, + > a > span { white-space: nowrap; } } @@ -32,12 +50,7 @@ .tagger li a.close { padding: 4px; - margin-left: 4px; - float: none; - filter: alpha(opacity=100); - opacity: 1; - font-size: 16px; - line-height: 16px; + margin-inline-start: 4px; &:hover { color: white; @@ -54,7 +67,8 @@ outline: none; box-shadow: none; width: 100%; - padding-left: 0; + padding-inline-start: 0; + box-sizing: border-box; background: transparent; } } @@ -64,27 +78,6 @@ justify-content: start; } -.tagger { - border: 0; - - > ul { - display: flex; - width: 100%; - align-items: center; - padding: 4px 5px 0; - justify-content: space-between; - box-sizing: border-box; - height: auto; - flex: 0 0 auto; - overflow-y: auto; - margin: 0; - list-style: none; - border: 1px solid #dfdfdf; - border-radius: 3px; - background-color: #fff; - } -} - .tagger-new ul, .tagger > ul > li:not(.tagger-new) > a, .tagger li:not(.tagger-new) > span { diff --git a/css/edit/_tooltips.scss b/src/css/edit/_tooltips.scss similarity index 73% rename from css/edit/_tooltips.scss rename to src/css/edit/_tooltips.scss index 5653726b..bdbd62d1 100644 --- a/css/edit/_tooltips.scss +++ b/src/css/edit/_tooltips.scss @@ -9,8 +9,8 @@ .snippet-editor-help { position: absolute; - right: 5px; - top: 5px; + inset-inline-end: 5px; + inset-block-start: 5px; &:hover .editor-help-text { visibility: visible; @@ -26,9 +26,9 @@ border-radius: 6px; position: absolute; z-index: 99; - top: 125%; - right: 0; - margin-right: -10px; + inset-block-start: 125%; + inset-inline-end: 0; + margin-inline-end: -10px; opacity: 0; transition: opacity 0.3s; white-space: nowrap; @@ -37,15 +37,15 @@ &::after { content: ""; position: absolute; - bottom: 100%; - right: 0; - margin-right: 10px; + inset-block-end: 100%; + inset-inline-end: 0; + margin-inline-end: 10px; border: 5px solid transparent; - border-bottom-color: #555; + border-block-end-color: #555; } td:first-child { - padding-right: 0.5em; + padding-inline-end: 0.5em; } .mac-key { diff --git a/css/edit/_types.scss b/src/css/edit/_types.scss similarity index 52% rename from css/edit/_types.scss rename to src/css/edit/_types.scss index 70715ffb..d77869f0 100644 --- a/css/edit/_types.scss +++ b/src/css/edit/_types.scss @@ -2,11 +2,11 @@ .CodeMirror-sizer { min-height: 300px !important; box-sizing: border-box; - padding-bottom: 1.5em !important; + padding-block-end: 1.5em !important; &::after { position: absolute; - bottom: 0; + inset-block-end: 0; } } @@ -24,11 +24,11 @@ } .CodeMirror-sizer { - padding-bottom: 0 !important; - } + padding-block-end: 0 !important; - .CodeMirror-sizer::before { - content: ''; - } + .CodeMirror-sizer { + &::before { + content: ''; + &::after { + content: ''; + } } } @@ -51,12 +53,14 @@ display: block; } - .CodeMirror-sizer::before { - content: ''; + &::after { + content: ''; + } } } @@ -65,11 +69,13 @@ display: block; } - .CodeMirror-sizer::before { - content: ''; - } + .CodeMirror-sizer { + &::before { + content: ''; + } - .CodeMirror-sizer::after { - content: ''; + &::after { + content: ''; + } } } diff --git a/css/edit/_upgrade-dialog.scss b/src/css/edit/_upgrade-dialog.scss similarity index 79% rename from css/edit/_upgrade-dialog.scss rename to src/css/edit/_upgrade-dialog.scss index 571b98db..3eb4e0f5 100644 --- a/css/edit/_upgrade-dialog.scss +++ b/src/css/edit/_upgrade-dialog.scss @@ -1,4 +1,3 @@ - .code-snippets-upgrade-dialog { .logo { font-size: 25px; @@ -15,7 +14,7 @@ } p { - text-align: left; + text-align: start; } ul { @@ -23,13 +22,13 @@ li:before { content: 'βœ“ '; - margin-left: 1em; + margin-inline-start: 1em; color: #2ecc40; } } .components-modal__content { - margin-top: 0; + margin-block-start: 0; padding: 32px; } @@ -45,7 +44,7 @@ grid-template-columns: auto auto; justify-content: space-around; align-items: center; - margin-bottom: 0; + margin-block-end: 0; } .current-plan-cost { @@ -55,6 +54,10 @@ .button .dashicons, .button svg { vertical-align: middle; - margin-left: 1ch; + margin-inline-start: 1ch; + } + + .components-external-link.button { + text-decoration: none; } } diff --git a/css/manage.scss b/src/css/manage.scss similarity index 69% rename from css/manage.scss rename to src/css/manage.scss index e95f0af0..d5fb9436 100644 --- a/css/manage.scss +++ b/src/css/manage.scss @@ -5,8 +5,9 @@ $active-color: #2196f3; $inactive-color: #ccc; -@import 'common/type-badges'; -@import 'manage/cloud'; +@use 'common/theme'; +@use 'common/type-badges'; +@use 'manage/cloud'; .column-name, .column-type { @@ -54,7 +55,7 @@ $inactive-color: #ccc; } .snippet-activation-switch { - margin-top: 5px; + margin-block-start: 5px; width: 30px; height: 17px; border-radius: 34px; @@ -71,20 +72,12 @@ $inactive-color: #ccc; border-radius: 50%; } - &:hover::before { - transform: translateX(40%); - } - .snippets .active-snippet & { background-color: $active-color; &::before { transform: translateX(100%); } - - &:hover::before { - transform: translateX(60%); - } } .snippets .erroneous-snippet &::before { @@ -98,22 +91,22 @@ $inactive-color: #ccc; } .snippet-execution-button { - margin-left: 10px; - margin-top: 9px; + margin-inline-start: 10px; + margin-block-start: 9px; width: 0; height: 0; - border-top: 9px solid transparent; - border-bottom: 9px solid transparent; - border-left: 10px solid $inactive-color; + border-block-start: 9px solid transparent; + border-block-end: 9px solid transparent; + border-inline-start: 10px solid $inactive-color; transition: all 0.3s; &::before { content: ''; position: absolute; - top: -14px; - left: -21px; - bottom: -14px; - right: -8px; + inset-block-start: -14px; + inset-inline-start: -21px; + inset-block-end: -14px; + inset-inline-end: -8px; border-radius: 50%; border: 1.8px solid $inactive-color; z-index: 2; @@ -121,7 +114,7 @@ $inactive-color: #ccc; } &:hover, &:focus { - border-left-color: #579; + border-inline-start-color: #579; &::before { transform: scale(1.1); @@ -156,11 +149,11 @@ $inactive-color: #ccc; .row-actions { color: #ddd; position: relative; - left: 0; + inset-inline-start: 0; } .column-activate { - padding-right: 0 !important; + padding-inline-end: 0 !important; } .clear-filters { @@ -174,7 +167,7 @@ $inactive-color: #ccc; thead th.check-column, tfoot th.check-column, .inactive-snippet th.check-column { - padding-left: 5px; + padding-inline-start: 5px; } td.column-description { @@ -190,7 +183,7 @@ $inactive-color: #ccc; } .badge { - margin-left: 4px; + margin-inline-start: 4px; padding: 3px 6px; text-decoration: none; border: medium none; @@ -202,19 +195,19 @@ $inactive-color: #ccc; /* rtl:ignore */ .rtl & { - float: left; + float: inline-start; } } tr.active-snippet + tr.inactive-snippet th, tr.active-snippet + tr.inactive-snippet td { - border-top: 1px solid rgba(0, 0, 0, 0.03); + border-block-start: 1px solid rgba(0, 0, 0, 0.03); box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.02), inset 0 -1px 0 #e1e1e1; } &, #all-snippets-table, #search-snippets-table { a.delete:hover { - border-bottom: 1px solid #f00; + border-block-end: 1px solid #f00; color: #f00; } } @@ -225,17 +218,17 @@ $inactive-color: #ccc; } .inactive-snippet { - @include link-colors($php-inactive); + @include theme.link-colors(theme.$php-inactive); } .active-snippet { td, th { - background-color: rgba($php-background, 0.06); + background-color: rgba(theme.$php-background, 0.06); } th.check-column { - border-left: 2px solid #2ea2cc; + border-inline-start: 2px solid #2ea2cc; } .snippet-activation-switch { @@ -245,11 +238,11 @@ $inactive-color: #ccc; @mixin snippet-type-colors($type, $active, $inactive, $background, $highlight) { .#{$type}-snippet { - @include link-colors($inactive); + @include theme.link-colors($inactive); } .#{$type}-snippet.active-snippet { - @include link-colors($active); + @include theme.link-colors($active); td, th { background-color: rgba($background, 0.06); @@ -260,18 +253,18 @@ $inactive-color: #ccc; } th.check-column { - border-left-color: $highlight; + border-inline-start-color: $highlight; } } } -@include snippet-type-colors(css, $css-active, $css-inactive, $css-background, $css-highlight); -@include snippet-type-colors(html, $html-active, $html-active, $html-background, $html-highlight); -@include snippet-type-colors(js, $js-active, $js-inactive, $js-background, $js-highlight); +@include snippet-type-colors(css, theme.$css-active, theme.$css-inactive, theme.$css-background, theme.$css-highlight); +@include snippet-type-colors(html, theme.$html-active, theme.$html-active, theme.$html-background, theme.$html-highlight); +@include snippet-type-colors(js, theme.$js-active, theme.$js-inactive, theme.$js-background, theme.$js-highlight); @media screen and (max-width: 782px) { p.search-box { - float: left; + float: inline-start; position: initial; margin: 1em 0 0 0; height: auto; @@ -288,7 +281,7 @@ $inactive-color: #ccc; } .snippet-type-description { - border-bottom: 1px solid #ccc; + border-block-end: 1px solid #ccc; margin: 0; padding: 1em 0; } @@ -297,12 +290,29 @@ $inactive-color: #ccc; text-decoration: none; } -.go-pro-badge { - color: #ce0000; - margin-left: 3px; - border: 1px solid #ce0000; - border-radius: 5px; - font-size: 10px; - padding: 1px 2px; - text-transform: uppercase; +.refresh-button-container { + display: flex; + align-items: center; + justify-content: flex-start; + margin-block-start: 15px; + margin-block-end: -39px; + gap: 7px; +} + +#refresh-button { + width: 30px; + padding: 0; + font-size: 20px; + line-height: 1.4; +} + +@media screen and (max-width: 1190px) { + .nav-tab { + .snippet-label { + display: none; + } + .cloud-badge{ + margin-inline-end: 10px; + } + } } diff --git a/css/manage/_cloud.scss b/src/css/manage/_cloud.scss similarity index 80% rename from css/manage/_cloud.scss rename to src/css/manage/_cloud.scss index cf59bd62..79ed7aa6 100644 --- a/css/manage/_cloud.scss +++ b/src/css/manage/_cloud.scss @@ -4,7 +4,7 @@ small { color: #646970; - float: right; + float: inline-end; } } @@ -21,7 +21,11 @@ } .cloud-icon { - margin-right: 3px; + margin-inline-end: 3px; +} + +.nav-tab-inactive .cloud-badge { + color: #a7aaad; } .nav-tab-inactive[data-snippet-type=cloud]:hover .cloud-badge { @@ -32,10 +36,22 @@ color: #00bcd4; } +.cloud-synced { + color: #00bcd4; +} + .cloud-downloaded { color: #e91e63; } +.nav-tab-inactive[data-snippet-type=cloud_search]:hover .cloud-badge { + color: #e91e63; +} + +.nav-tab-inactive[data-snippet-type=bundles]:hover .cloud-badge { + color: #50575e; +} + .cloud-not-downloaded { color: #9e9e9e; } @@ -54,6 +70,10 @@ box-shadow: inset 0 -1px 0 rgb(0 0 0 / 10%); } +.cloud-table > tbody > tr > td { + max-width: 250px; +} + .cloud-table tbody .active-snippet .column-name { font-weight: 400; max-width: 400px; @@ -61,7 +81,7 @@ } .cloud-table td .no-results { - margin-top: 15px; + margin-block-start: 15px; color: #e32121; text-align: center; } @@ -74,7 +94,7 @@ border: 1px solid; border-radius: 5px; padding: 5px; - margin-bottom: 5px; + margin-block-end: 5px; display: block; text-align: center; background: transparent; @@ -97,7 +117,7 @@ } .cloud-badge { - margin-left: 10px; + margin-inline-start: 10px; border: 1px solid; border-radius: 5px; font-size: 15px; @@ -105,8 +125,8 @@ } #cloud-search-form { - margin-top: 30px; - margin-bottom: 30px; + margin-block-start: 30px; + margin-block-end: 30px; text-align: center; } @@ -137,7 +157,7 @@ -ms-flex: 1 1 auto; flex: 1 1 auto; width: 1%; - margin-bottom: 0; + margin-block-end: 0; &:focus { outline: 0; @@ -147,9 +167,9 @@ } #cloud-select-prepend { - margin-right: -3px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; + margin-inline-end: -3px; + border-start-end-radius: 0; + border-end-end-radius: 0; position: relative; z-index: 2; color: #2271b1; @@ -165,18 +185,18 @@ #cloud-search-submit { padding: 0 15px; - margin-left: -3px; + margin-inline-start: -3px; display: flex; justify-content: center; align-items: center; } .cloud-search { - margin-left: 5px; + margin-inline-start: 5px; } .bundle-group { - margin-top: 10px; + margin-block-start: 10px; justify-content: space-between; display: flex; gap: 5px; @@ -210,7 +230,7 @@ .heading-box { max-width: 900px; margin: auto; - padding-bottom: 1rem; + padding-block-end: 1rem; } .cloud-search-heading { @@ -219,13 +239,13 @@ padding: 9px 0 4px; line-height: 1.3; text-align: center; - margin-bottom: 0; + margin-block-end: 0; } .cloud-badge.ai-icon { font-size: 12px; padding: 3px; - margin-left: 5px; + margin-inline-start: 5px; color: #b22222; } @@ -245,11 +265,41 @@ justify-content: space-between; } +.cloud-connect-wrap { + display: flex; + justify-content: space-between; + align-items: center; + max-height: 35px; + margin: 0 3px; + float: inline-end; + gap: 5px; +} + +.cloud-status-dot { + height: 10px; + width: 10px; + background-color: #ce0000; + border-radius: 50%; + + + .cloud-connect-active & { + background-color: #25a349; + } +} + +.cloud-connect-text { + color: #ce0000; + + .cloud-connect-active & { + color: #2e7d32; + } +} + .voted-info { display: inline-flex; gap: 3px; align-items: center; - margin-bottom: 6px !important; + margin-block-end: 6px !important; &:hover { .thumbs-up { @@ -271,7 +321,6 @@ } } - .ai-verified-snippet .badge, .snippet-type-badge[data-type=ai-verified] { background-color: #ccfbf1; color: #0f766e; @@ -287,7 +336,6 @@ color: #a16207; } - .unverified-snippet .badge, .snippet-type-badge[data-type=unverified] { background-color: #fff1f2; color: #be123c; @@ -354,12 +402,18 @@ text-decoration: underline; } +.tooltip-box .cloud-key { + inset-inline-end: 0; + color: white; + width: 450px; +} + .plugin-card-bottom { overflow: visible !important; } .beta-test-notice { - margin-top: 20px; + margin-block-start: 20px; } .highlight-yellow { diff --git a/css/menu-button.scss b/src/css/menu-button.scss similarity index 70% rename from css/menu-button.scss rename to src/css/menu-button.scss index aa704bc3..04b34738 100644 --- a/css/menu-button.scss +++ b/src/css/menu-button.scss @@ -2,17 +2,21 @@ color: #fff; background-color: #d46F4d; border: none; - display: block; text-align: center; font-weight: bold; transition: background-color .1s linear; + white-space: break-spaces; + line-height: inherit; + display: flex; + justify-content: center; + align-items: center; &:hover { background-color: #08c5d1; } .dashicons { - vertical-align: text-bottom + vertical-align: text-bottom; } } diff --git a/src/css/prism.scss b/src/css/prism.scss new file mode 100644 index 00000000..50ee6156 --- /dev/null +++ b/src/css/prism.scss @@ -0,0 +1,82 @@ +@import '~prismjs/themes/prism.css'; +@import '~prismjs/plugins/line-numbers/prism-line-numbers.css'; +@import '~prismjs/plugins/toolbar/prism-toolbar.css'; +@import '~prismjs/plugins/inline-color/prism-inline-color.css'; +@import '~prismjs/plugins/previewers/prism-previewers.css'; +@import '~prismjs/plugins/autolinker/prism-autolinker.css'; + +/* These lines are taken from '~prismjs/plugins/inline-color/prism-inline-color.css', adjusted to avoid autoprefixer +complaining about deprecated syntax. Ideally, they can be removed if the file in question is updated. */ + +pre[data-line] { + position: relative; + padding: 1em 0 1em 3em; +} + +.line-highlight { + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + padding: inherit; + margin-block-start: 1em; + background: hsla(24, 20%, 50%, .08); + background: linear-gradient(to right, hsla(24, 20%, 50%, .1) 70%, hsla(24, 20%, 50%, 0)); + pointer-events: none; + line-height: inherit; + white-space: pre; + + @media print { + print-color-adjust: exact; + } + + &:before, &[data-end]:after { + content: attr(data-start); + position: absolute; + inset-block-start: .4em; + inset-inline-start: .6em; + min-width: 1em; + padding: 0 .5em; + background-color: hsla(24, 20%, 50%, .4); + color: hsl(24, 20%, 95%); + font: bold 65%/1.5 sans-serif; + text-align: center; + vertical-align: .3em; + border-radius: 999px; + text-shadow: none; + box-shadow: 0 1px white; + } + + &[data-end]:after { + content: attr(data-end); + inset-block-start: auto; + inset-block-end: .4em; + } + + .line-numbers &:before, .line-numbers &:after { + content: none; + } + + /* Additional fixes to the behaviour of line highlighting with certain themes. */ + + :not(.is-style-prism-shades-of-purple) pre[class*=language-].line-numbers & { + box-sizing: border-box; + padding: 0; + margin: 1em 0 0; + } + + .is-style-prism-coy-without-shadows pre[class*=language-] & { + margin-block-start: 0; + } +} + +pre[id].linkable-line-numbers span.line-numbers-rows { + pointer-events: all; + + > span:before { + cursor: pointer; + } + + > span:hover:before { + background-color: rgba(128, 128, 128, .2); + } +} diff --git a/css/settings.scss b/src/css/settings.scss similarity index 50% rename from css/settings.scss rename to src/css/settings.scss index 69323ff2..35817074 100644 --- a/css/settings.scss +++ b/src/css/settings.scss @@ -1,4 +1,4 @@ -@import 'common/editor'; +@use 'common/editor'; $sections: general, editor, debug; @@ -13,7 +13,7 @@ p.submit { } .nav-tab-wrapper { - margin-bottom: 1em; + margin-block-end: 1em; } input[type=number] { @@ -23,7 +23,7 @@ input[type=number] { .CodeMirror { max-width: 800px; width: 100%; - padding-right: 1em; + padding-inline-end: 1em; } .CodeMirror-sizer::before { @@ -69,3 +69,62 @@ body.js { } } } + +.license-status { + display: inline-block; + padding-inline-end: 2em; + line-height: 2; + color: #aaa; +} + +.license-status-valid { + color: #2ecc40; +} + +.license-status-expired { + color: #dc3232; +} + +.wrap[data-active-tab=license] .submit { + display: none; +} + +#code_snippets_remove_license { + color: #b32d2e; + border-color: #b32d2e; +} + +#code_snippets_license_key { + font-family: Consolas, Monaco, monospace; +} + +#cloud_token { + max-width: 450px; + width: 90vw; +} + +.cloud-message { + width: fit-content; + padding: 5px; + border-radius: 5px; + font-weight: 600; +} + +.cloud-error { + background: #e53935; + color: #ffebee; +} + +.cloud-success { + background: #43a047; + color: #e8f5e9; +} + +.refresh-success { + background: #2271b1; + color: #ffeb3b; +} + +.cloud-settings tbody tr:nth-child(n+5) { + display: none; +} diff --git a/src/css/welcome.scss b/src/css/welcome.scss new file mode 100644 index 00000000..489569a5 --- /dev/null +++ b/src/css/welcome.scss @@ -0,0 +1,378 @@ +@use 'sass:color'; +@use 'common/theme'; +@use 'common/type-badges'; + +$breakpoint: 1060px; + +.csp-welcome-wrap { + padding: 25px; + + h1, h2, h3 { + font-weight: 700; + margin-block-start: 10px; + margin-block-end: 10px; + + .dashicons { + font-size: 90%; + line-height: inherit; + width: auto; + } + } + + h1 { + font-size: 1.6rem; + } + + h2 { + font-size: 1.4rem; + } + + .dashicons-external { + float: inline-end; + color: #666; + } +} + +.csp-welcome-header { + display: flex; + flex-flow: row wrap; + justify-content: space-between; + align-items: center; + + .csp-welcome-logo { + display: flex; + flex-direction: row; + align-items: center; + gap: 10px; + + h1 { + font-size: 1.4rem; + font-weight: bold; + line-height: 1; + margin: 0; + + span { + text-decoration: underline theme.$primary wavy 3px; + text-decoration-skip-ink: none; + text-underline-offset: 11px; + text-transform: capitalize; + } + } + } +} + +.csp-welcome-nav { + column-gap: 15px; + display: flex; + flex-flow: row wrap; + justify-content: space-evenly; + margin: 0; + + li { + margin-block-end: 0; + } + + li a { + margin-block-start: 10px; + margin-block-end: 10px; + align-items: center; + border-width: 1px; + border-style: solid; + color: white; + cursor: pointer; + display: flex; + font-weight: 400; + gap: 3px; + text-decoration: none; + transition: all .1s ease-in-out; + border-radius: 3px; + padding: 8px; + + &:hover { + background: transparent; + } + + .dashicons, svg { + text-decoration: none; + margin-block-start: -1px; + margin-inline-start: 3px; + } + + svg { + fill: #fff; + width: 20px; + height: 20px; + font-size: 20px; + vertical-align: top; + } + + &:hover svg { + fill: currentColor; + } + } + + @each $link_name, $color in ( + pro: theme.$secondary, + cloud: #08c5d1, + resources: #424242, + discord: theme.$brand-discord, + facebook: theme.$brand-facebook) { + .csp-link-#{$link_name} { + background: $color; + border-color: $color; + + &:hover { + color: $color; + } + } + } +} + +.csp-cards { + display: grid; + grid-auto-rows: 1fr; + row-gap: 40px; + grid-template-columns: repeat(4, 1fr); + gap: 15px; + + @media (max-width: $breakpoint) { + grid-template-columns: 1fr !important; + } +} + +.csp-card { + border: 1px solid theme.$outline; + background: white; + border-radius: 10px; + display: flex; + flex-flow: column; +} + +a.csp-card { + text-decoration: none; + + &:hover { + background: color.adjust(theme.$primary, $lightness: 55%); + transition: .5s background-color; + box-shadow: 0 1px 1px rgb(255 255 255 / 50%); + + .dashicons-external { + color: #000; + } + } +} + +.csp-section-changes { + border: 1px solid theme.$outline; + border-inline-start: 0; + border-inline-end: 0; + padding: 40px 0 50px 0; + display: flex; + flex-direction: column; + row-gap: 20px; + margin-block-start: 30px; + + .csp-cards { + grid-template-columns: 2fr 1fr; + gap: 20px; + } + + .csp-card { + padding: 20px; + box-shadow: 0 1px 1px rgb(0 0 0 / 5%); + + h2 { + color: theme.$primary; + } + + &:last-child { + overflow-y: scroll; + } + } + + .csp-section-changelog { + font-size: 0.9rem; + line-height: 1.5; + color: #333; + height: 400px; + + h3 { + float: inline-end; + color: #666; + } + + h4 { + margin: 30px 0 10px; + } + + ul { + margin-block-start: 5px; + } + + li { + display: grid; + grid-template-columns: 40px 1fr; + grid-template-rows: 1fr; + align-items: baseline; + gap: 7px; + } + + li .badge { + text-align: center; + } + + > article::after { + border-block-end: 1px solid #666; + content: ' '; + display: block; + width: 50%; + margin: 3em auto 0; + } + + > article:last-child { + padding-block-end: 1px; + + &::after { + border: 0; + } + } + } + + figure { + margin: 1em 0 0; + overflow: hidden; + border-radius: 0.5rem; + border: 1px solid grey; + position: relative; + height: auto; + background: #646970; + + img { + width: 100%; + height: 100%; + overflow: hidden; + object-fit: cover; + } + } + + .dashicons-lightbulb { + color: #f1c40f; + } + + .dashicons-chart-line { + color: #85144b; + } + + .dashicons-buddicons-replies { + color: #3D9970; + } +} + + +.csp-section-articles { + figure img { + aspect-ratio: 1; + } +} + +.csp-section-links { + padding: 40px 0 50px 0; + + .csp-card { + margin-block-start: 20px; + justify-content: flex-start; + color: black; + position: relative; + overflow: hidden; + row-gap: 10px; + padding: 1rem; + width: 85%; + + header { + flex: 1; + } + + figure { + margin: 1em 0 0 0; + + img { + border-radius: 5px; + width: 100%; + height: 100%; + max-height: 300px; + overflow: hidden; + object-fit: cover; + } + } + + .csp-card-item-category { + color: white; + background: theme.$secondary; + display: block; + font-size: .9rem; + letter-spacing: 1px; + margin-block-start: 0; + margin-block-end: 0; + text-transform: uppercase; + width: fit-content; + padding: 5px 15px; + border-radius: 50px; + } + + h3 { + font-size: 1.7rem; + color: theme.$primary; + line-height: normal; + } + + .csp-card-item-description { + color: #51525c; + font-size: 1rem; + font-weight: 300; + } + + footer { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + } + } + +} + +.csp-section-articles { + h2 { + font-size: 1.1rem; + } +} + +.csp-section-partners { + border-block-start: 1px solid theme.$outline; + + header { + display: flex; + flex-direction: row-reverse; + justify-content: space-between; + align-items: center; + } +} + +.csp-loading-spinner { + height: 0; + width: 0; + padding: 15px; + border: 6px solid #e7c0b3; + border-inline-end-color: theme.$secondary; + border-radius: 22px; + animation: loading-rotate 1s infinite linear; + position: absolute; + inset-inline-start: 47%; + inset-block-start: 45%; +} + +@keyframes loading-rotate { + 100% { + transform: rotate(360deg); + } +} diff --git a/js/Edit/SnippetEditor/CodeEditor.tsx b/src/js/components/SnippetForm/SnippetEditor/CodeEditor.tsx similarity index 82% rename from js/Edit/SnippetEditor/CodeEditor.tsx rename to src/js/components/SnippetForm/SnippetEditor/CodeEditor.tsx index ec0d3952..99ebca7a 100644 --- a/js/Edit/SnippetEditor/CodeEditor.tsx +++ b/src/js/components/SnippetForm/SnippetEditor/CodeEditor.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useRef } from 'react' -import { isMacOS } from '../../utils/general' -import { useSnippetForm } from '../SnippetForm/context' +import { isMacOS } from '../../../utils/general' +import { useSnippetForm } from '../../../hooks/useSnippetForm' import { CodeEditorShortcuts } from './CodeEditorShortcuts' export const CodeEditor: React.FC = () => { @@ -12,8 +12,9 @@ export const CodeEditor: React.FC = () => { if (textareaRef.current && !editorInstance) { editorInstance = window.wp.codeEditor.initialize(textareaRef.current) - editorInstance.codemirror.on('changes', instance => - setSnippet(previous => ({ ...previous, code: instance.getValue() }))) + editorInstance.codemirror.on('changes', instance => { + setSnippet(previous => ({ ...previous, code: instance.getValue() })) + }) } return editorInstance @@ -41,7 +42,9 @@ export const CodeEditor: React.FC = () => { name="snippet_code" rows={200} spellCheck={false} - onChange={event => setSnippet(previous => ({ ...previous, code: event.target.value }))} + onChange={event => { + setSnippet(previous => ({ ...previous, code: event.target.value })) + }} >{snippet.code} diff --git a/js/Edit/SnippetEditor/CodeEditorShortcuts.tsx b/src/js/components/SnippetForm/SnippetEditor/CodeEditorShortcuts.tsx similarity index 50% rename from js/Edit/SnippetEditor/CodeEditorShortcuts.tsx rename to src/js/components/SnippetForm/SnippetEditor/CodeEditorShortcuts.tsx index 0318c5cc..9385bf19 100644 --- a/js/Edit/SnippetEditor/CodeEditorShortcuts.tsx +++ b/src/js/components/SnippetForm/SnippetEditor/CodeEditorShortcuts.tsx @@ -1,102 +1,98 @@ import { __, _x } from '@wordpress/i18n' import classnames from 'classnames' import React from 'react' -import { isMacOS } from '../../utils/general' +import { KEYBOARD_KEYS } from '../../../types/KeyboardShortcut' +import { isMacOS } from '../../../utils/general' +import type { KeyboardKey, KeyboardShortcut } from '../../../types/KeyboardShortcut' -const SEP = _x('-', 'keyboard shortcut separator', 'code-snippets') - -const keys = { - 'Cmd': _x('Cmd', 'keyboard key', 'code-snippets'), - 'Ctrl': _x('Ctrl', 'keyboard key', 'code-snippets'), - 'Shift': _x('Shift', 'keyboard key', 'code-snippets'), - 'Option': _x('Option', 'keyboard key', 'code-snippets'), - 'Alt': _x('Alt', 'keyboard key', 'code-snippets'), - 'Tab': _x('Tab', 'keyboard key', 'code-snippets'), - 'Up': _x('Up', 'keyboard key', 'code-snippets'), - 'Down': _x('Down', 'keyboard key', 'code-snippets'), - 'A': _x('A', 'keyboard key', 'code-snippets'), - 'D': _x('D', 'keyboard key', 'code-snippets'), - 'F': _x('F', 'keyboard key', 'code-snippets'), - 'G': _x('G', 'keyboard key', 'code-snippets'), - 'R': _x('R', 'keyboard key', 'code-snippets'), - 'S': _x('S', 'keyboard key', 'code-snippets'), - 'Y': _x('Y', 'keyboard key', 'code-snippets'), - 'Z': _x('Z', 'keyboard key', 'code-snippets'), - '/': _x('/', 'keyboard key', 'code-snippets'), - '[': _x(']', 'keyboard key', 'code-snippets'), - ']': _x(']', 'keyboard key', 'code-snippets') -} as const - -type Key = keyof typeof keys - -interface Shortcut { - label: string - mod: Key | Key[] - key: Key -} - -const shortcuts: Shortcut[] = [ - { +const shortcuts: Record = { + saveChanges: { label: __('Save changes', 'code-snippets'), mod: 'Cmd', key: 'S' }, - { + selectAll: { label: __('Select all', 'code-snippets'), mod: 'Cmd', key: 'A' }, - { + beginSearch: { label: __('Begin searching', 'code-snippets'), mod: 'Cmd', key: 'F' }, - { + findNext: { label: __('Find next', 'code-snippets'), mod: 'Cmd', key: 'G' }, - { + findPrevious: { label: __('Find previous', 'code-snippets'), mod: ['Shift', 'Cmd'], key: 'G' }, - { + replace: { label: __('Replace', 'code-snippets'), mod: ['Shift', 'Cmd'], key: 'F' }, - { + replaceAll: { label: __('Replace all', 'code-snippets'), mod: ['Shift', 'Cmd', 'Option'], key: 'R' }, - { + search: { label: __('Persistent search', 'code-snippets'), mod: 'Alt', key: 'F' }, - { + toggleComment: { label: __('Toggle comment', 'code-snippets'), mod: 'Cmd', key: '/' }, - { + swapLineUp: { label: __('Swap line up', 'code-snippets'), mod: 'Option', key: 'Up' }, - { + swapLineDown: { label: __('Swap line down', 'code-snippets'), mod: 'Option', key: 'Down' }, - { + autoIndent: { label: __('Auto-indent current line or selection', 'code-snippets'), mod: 'Shift', key: 'Tab' } -] +} + +const SEP = _x('-', 'keyboard shortcut separator', 'code-snippets') + +const ModifierKey: React.FC<{ modifier: KeyboardKey }> = ({ modifier }) => { + switch (modifier) { + case 'Ctrl': + case 'Cmd': + return ( + <> + {KEYBOARD_KEYS.Ctrl} + {KEYBOARD_KEYS.Cmd} + {SEP} + + ) + + case 'Option': + return ( + + {KEYBOARD_KEYS.Option}{SEP} + + ) + + default: + return <>{KEYBOARD_KEYS[modifier]}{SEP} + } +} export interface CodeEditorShortcutsProps { editorTheme: string @@ -110,24 +106,16 @@ export const CodeEditorShortcuts: React.FC = ({ editor
- {shortcuts.map(({ label, mod, key }) => - + {Object.entries(shortcuts).map(([name, { label, mod, key }]) => + )} diff --git a/js/Edit/SnippetEditor/SnippetEditor.tsx b/src/js/components/SnippetForm/SnippetEditor/SnippetEditor.tsx similarity index 79% rename from js/Edit/SnippetEditor/SnippetEditor.tsx rename to src/js/components/SnippetForm/SnippetEditor/SnippetEditor.tsx index d82d8d7e..36b68a7c 100644 --- a/js/Edit/SnippetEditor/SnippetEditor.tsx +++ b/src/js/components/SnippetForm/SnippetEditor/SnippetEditor.tsx @@ -1,13 +1,15 @@ import React, { useEffect } from 'react' import { __, _x } from '@wordpress/i18n' import { addQueryArgs } from '@wordpress/url' -import { Editor, EditorConfiguration } from 'codemirror' -import { SNIPPET_TYPE_SCOPES, SNIPPET_TYPES, SnippetScope, SnippetType } from '../../types/Snippet' -import '../../editor' -import { getSnippetType, isLicensed, isProType } from '../../utils/snippets' import classnames from 'classnames' -import { useSnippetForm } from '../SnippetForm/context' +import { SNIPPET_TYPES, SNIPPET_TYPE_SCOPES } from '../../../types/Snippet' +import '../../../editor' +import { isLicensed } from '../../../utils/general' +import { getSnippetType, isProType } from '../../../utils/snippets' +import { useSnippetForm } from '../../../hooks/useSnippetForm' import { CodeEditor } from './CodeEditor' +import type { SnippetScope, SnippetType } from '../../../types/Snippet' +import type { Editor, EditorConfiguration } from 'codemirror' interface SnippetTypeTabProps { tabType: SnippetType @@ -31,8 +33,8 @@ const SnippetTypeTab: React.FC = ({ 'nav-tab-active': tabType === currentType, 'nav-tab-inactive': isProType(tabType) && !isLicensed() })} - {...isProType(tabType) && !isLicensed() ? - { + {...isProType(tabType) && !isLicensed() + ? { title: __('Learn more about Code Snippets Pro.', 'code-snippets'), href: 'https://codesnippets.pro/pricing/', target: '_blank', @@ -40,8 +42,8 @@ const SnippetTypeTab: React.FC = ({ event.preventDefault() openUpgradeDialog() } - } : - { + } + : { href: addQueryArgs(window.location.href, { type: tabType }), onClick: event => { event.preventDefault() @@ -82,7 +84,6 @@ const SnippetTypeTabs: React.FC = ({ snippetType, openUpgradeDialog }) => { - useEffect(() => { codeEditor.setOption('lint' as keyof EditorConfiguration, 'php' === snippetType || 'css' === snippetType) @@ -104,20 +105,18 @@ const SnippetTypeTabs: React.FC = ({ openUpgradeDialog={openUpgradeDialog} />)} - {!isLicensed() ? - { event.preventDefault() openUpgradeDialog() }} > - {_x('Upgrade to ', 'Upgrade to Pro', 'code-snippets')} - {_x('Pro', 'Upgrade to Pro', 'code-snippets')} - : - null} + {__('Upgrade to Pro', 'code-snippets')} + + : null} ) } @@ -135,17 +134,21 @@ export const SnippetEditor: React.FC = ({ openUpgradeDialog

- {snippet.id || window.CODE_SNIPPETS_EDIT?.isPreview || !codeEditorInstance ? '' : - setSnippet(previous => ({ ...previous, scope }))} + updateScope={scope => { + setSnippet(previous => ({ ...previous, scope })) + }} />} diff --git a/src/js/components/SnippetForm/SnippetEditor/SnippetEditorToolbar.tsx b/src/js/components/SnippetForm/SnippetEditor/SnippetEditorToolbar.tsx new file mode 100644 index 00000000..2ea1e9d9 --- /dev/null +++ b/src/js/components/SnippetForm/SnippetEditor/SnippetEditorToolbar.tsx @@ -0,0 +1,41 @@ +import React from 'react' +import { Spinner } from '@wordpress/components' +import { __, isRTL } from '@wordpress/i18n' +import { SubmitButton } from '../buttons/SubmitButtons' +import { useSnippetForm } from '../../../hooks/useSnippetForm' + +const InlineActionButtons: React.FC = () => { + const { isWorking } = useSnippetForm() + + return ( + <> + {isWorking ? : ''} + + + ) +} + +const RTLControl: React.FC = () => { + const { codeEditorInstance } = useSnippetForm() + + return ( + <> + + + + + ) +} + +export const SnippetEditorToolbar: React.FC = () => +
+ {window.CODE_SNIPPETS_EDIT?.extraSaveButtons ? : null} + {isRTL() ? : null} +
diff --git a/js/Edit/SnippetForm/SnippetForm.tsx b/src/js/components/SnippetForm/SnippetForm.tsx similarity index 66% rename from js/Edit/SnippetForm/SnippetForm.tsx rename to src/js/components/SnippetForm/SnippetForm.tsx index 497f57e1..03b2d679 100644 --- a/js/Edit/SnippetForm/SnippetForm.tsx +++ b/src/js/components/SnippetForm/SnippetForm.tsx @@ -2,19 +2,19 @@ import React, { useState } from 'react' import classnames from 'classnames' import { isNetworkAdmin } from '../../utils/general' import { createEmptySnippet, getSnippetType } from '../../utils/snippets' -import { ActionButtons } from '../buttons/ActionButtons' -import { UpgradeDialog } from '../components/UpgradeDialog' -import { useSnippetForm, WithSnippetFormContext } from './context' -import { DescriptionEditor } from '../fields/DescriptionEditor' -import { MultisiteSharingSettings } from '../fields/MultisiteSharingSettings' -import { NameInput } from '../fields/NameInput' -import { PriorityInput } from '../fields/PriorityInput' -import { ScopeInput } from '../fields/ScopeInput' -import { TagsInput } from '../fields/TagsInput' -import { Notices } from '../components/Notices' -import { PageHeading } from '../components/PageHeading' -import { SnippetEditor } from '../SnippetEditor/SnippetEditor' -import { SnippetEditorToolbar } from '../SnippetEditor/SnippetEditorToolbar' +import { WithSnippetFormContext, useSnippetForm } from '../../hooks/useSnippetForm' +import { ActionButtons } from './buttons/ActionButtons' +import { UpgradeDialog } from './page/UpgradeDialog' +import { DescriptionEditor } from './fields/DescriptionEditor' +import { MultisiteSharingSettings } from './fields/MultisiteSharingSettings' +import { NameInput } from './fields/NameInput' +import { PriorityInput } from './fields/PriorityInput' +import { ScopeInput } from './fields/ScopeInput' +import { TagsInput } from './fields/TagsInput' +import { Notices } from './page/Notices' +import { PageHeading } from './page/PageHeading' +import { SnippetEditor } from './SnippetEditor/SnippetEditor' +import { SnippetEditorToolbar } from './SnippetEditor/SnippetEditorToolbar' const OPTIONS = window.CODE_SNIPPETS_EDIT diff --git a/js/Edit/buttons/ActionButtons.tsx b/src/js/components/SnippetForm/buttons/ActionButtons.tsx similarity index 73% rename from js/Edit/buttons/ActionButtons.tsx rename to src/js/components/SnippetForm/buttons/ActionButtons.tsx index 974d9f36..7daffdc3 100644 --- a/js/Edit/buttons/ActionButtons.tsx +++ b/src/js/components/SnippetForm/buttons/ActionButtons.tsx @@ -1,9 +1,9 @@ import React from 'react' import { Spinner } from '@wordpress/components' -import { useSnippetForm } from '../SnippetForm/context' +import { useSnippetForm } from '../../../hooks/useSnippetForm' import { DeleteButton } from './DeleteButton' import { ExportButtons } from './ExportButtons' -import { SubmitButton } from './SubmitButton' +import { SubmitButton } from './SubmitButtons' export const ActionButtons: React.FC = () => { const { snippet, isWorking } = useSnippetForm() @@ -12,11 +12,12 @@ export const ActionButtons: React.FC = () => {

- {snippet.id ? - <> + {snippet.id + ? <> - : ''} + + : ''} {isWorking ? : ''}

diff --git a/js/Edit/buttons/DeleteButton.tsx b/src/js/components/SnippetForm/buttons/DeleteButton.tsx similarity index 79% rename from js/Edit/buttons/DeleteButton.tsx rename to src/js/components/SnippetForm/buttons/DeleteButton.tsx index 22c40cf2..e6571fe5 100644 --- a/js/Edit/buttons/DeleteButton.tsx +++ b/src/js/components/SnippetForm/buttons/DeleteButton.tsx @@ -3,8 +3,8 @@ import React, { useState } from 'react' import { __ } from '@wordpress/i18n' import { Button } from '../../common/Button' import { ConfirmDialog } from '../../common/ConfirmDialog' -import { useSnippetsAPI } from '../../utils/api/snippets' -import { useSnippetForm } from '../SnippetForm/context' +import { useSnippetsAPI } from '../../../hooks/useSnippets' +import { useSnippetForm } from '../../../hooks/useSnippetForm' export const DeleteButton: React.FC = () => { const api = useSnippetsAPI() @@ -34,9 +34,9 @@ export const DeleteButton: React.FC = () => { api.delete(snippet) .then(() => { setIsWorking(false) - window.location.replace(addQueryArgs(window?.CODE_SNIPPETS?.urls.manage, { result: 'deleted' })) + window.location.replace(addQueryArgs(window.CODE_SNIPPETS?.urls.manage, { result: 'deleted' })) }) - .catch(error => handleRequestError(error, __('Could not delete snippet.', 'code-snippets'))) + .catch((error: unknown) => handleRequestError(error, __('Could not delete snippet.', 'code-snippets'))) }} >

diff --git a/js/Edit/buttons/ExportButtons.tsx b/src/js/components/SnippetForm/buttons/ExportButtons.tsx similarity index 61% rename from js/Edit/buttons/ExportButtons.tsx rename to src/js/components/SnippetForm/buttons/ExportButtons.tsx index f063123f..7e57e67a 100644 --- a/js/Edit/buttons/ExportButtons.tsx +++ b/src/js/components/SnippetForm/buttons/ExportButtons.tsx @@ -1,17 +1,17 @@ import React from 'react' -import { AxiosResponse } from 'axios' import { __ } from '@wordpress/i18n' import { Button } from '../../common/Button' -import { ExportSnippets } from '../../types/ExportSnippets' -import { useSnippetsAPI } from '../../utils/api/snippets' -import { downloadSnippetExportFile } from '../../utils/files' -import { useSnippetForm } from '../SnippetForm/context' +import { useSnippetsAPI } from '../../../hooks/useSnippets' +import { downloadSnippetExportFile } from '../../../utils/files' +import { useSnippetForm } from '../../../hooks/useSnippetForm' +import type { SnippetsExport } from '../../../types/SnippetsExport' +import type { AxiosResponse } from 'axios' export const ExportButtons: React.FC = () => { const api = useSnippetsAPI() const { snippet, isWorking, setIsWorking, handleRequestError } = useSnippetForm() - const handleFileResponse = (response: AxiosResponse) => { + const handleFileResponse = (response: AxiosResponse) => { const data = response.data setIsWorking(false) console.info('file response', response) @@ -34,26 +34,27 @@ export const ExportButtons: React.FC = () => { api.export(snippet) .then(handleFileResponse) // translators: %s: error message. - .catch(error => handleRequestError(error, __('Could not download export file.', 'code-snippets'))) + .catch((error: unknown) => handleRequestError(error, __('Could not download export file.', 'code-snippets'))) }} disabled={isWorking} > {__('Export', 'code-snippets')} - {window.CODE_SNIPPETS_EDIT?.enableDownloads ? - : ''} + + : ''} ) } diff --git a/src/js/components/SnippetForm/buttons/SubmitButtons.tsx b/src/js/components/SnippetForm/buttons/SubmitButtons.tsx new file mode 100644 index 00000000..fb85a80b --- /dev/null +++ b/src/js/components/SnippetForm/buttons/SubmitButtons.tsx @@ -0,0 +1,198 @@ +import React, { useState } from 'react' +import { __ } from '@wordpress/i18n' +import { handleUnknownError } from '../../../utils/errors' +import { Button } from '../../common/Button' +import { ConfirmDialog } from '../../common/ConfirmDialog' +import { isNetworkAdmin } from '../../../utils/general' +import { useSnippetForm } from '../../../hooks/useSnippetForm' +import type { Snippet } from '../../../types/Snippet' +import type { ButtonProps } from '../../common/Button' + +interface SubmitButtonProps extends ButtonProps { + inlineButtons?: boolean +} + +const SaveChangesButton: React.FC = ({ inlineButtons, ...props }) => + + +const SaveAndExecuteButton: React.FC = ({ inlineButtons, ...props }) => + + +const DeactivateButton: React.FC = ({ inlineButtons, ...props }) => + + +const ActivateButton: React.FC = ({ inlineButtons, ...props }) => + + +interface ActivateOrDeactivateButtonProps { + snippet: Snippet + onActivate: VoidFunction + onDeactivate: VoidFunction + primaryActivate: boolean + inlineButtons?: boolean + disabled: boolean +} + +const ActivateOrDeactivateButton: React.FC = ({ + snippet, + disabled, + onActivate, + onDeactivate, + inlineButtons, + primaryActivate +}) => { + const commonProps: SubmitButtonProps = { small: inlineButtons, type: 'submit', disabled, inlineButtons } + + switch (true) { + case snippet.shared_network && isNetworkAdmin(): + return null + + case 'single-use' === snippet.scope: + return + + case snippet.active: + return + + default: + case !snippet.active: + return + } +} + +const validateSnippet = (snippet: Snippet): undefined | string => { + const missingCode = '' === snippet.code.trim() + const missingTitle = '' === snippet.name.trim() + + switch (true) { + case missingCode && missingTitle: + return __('This snippet has no code or title.', 'code-snippets') + + case missingCode: + return __('This snippet has no snippet code.', 'code-snippets') + + case missingTitle: + return __('This snippet has no title.', 'code-snippets') + + default: + return undefined + } +} + +const shouldActivateByDefault = (snippet: Snippet, inlineButtons?: boolean): boolean => + !inlineButtons + && !!window.CODE_SNIPPETS_EDIT?.activateByDefault + && !snippet.active + && 'single-use' !== snippet.scope + && (!snippet.shared_network || !isNetworkAdmin()) + +interface SubmitConfirmDialogProps { + isOpen: boolean + onClose: VoidFunction + onSubmit?: VoidFunction + validationWarning?: string +} + +const SubmitConfirmDialog: React.FC = ({ isOpen, onClose, onSubmit, validationWarning }) => + { + onSubmit?.() + onClose() + }} + > +

{`${validationWarning} ${__('Continue?', 'code-snippets')}`}

+ + +export interface SubmitButtonsProps { + inlineButtons?: boolean +} + +export const SubmitButton: React.FC = ({ inlineButtons }) => { + const { snippet, isWorking, submitSnippet, submitAndActivateSnippet, submitAndDeactivateSnippet } = useSnippetForm() + const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false) + const [submitAction, setSubmitAction] = useState() + const validationWarning = validateSnippet(snippet) + const activateByDefault = shouldActivateByDefault(snippet, inlineButtons) + + const handleSubmit = (submitAction: () => Promise): void => { + if (validationWarning) { + setIsConfirmDialogOpen(true) + setSubmitAction(() => submitAction) + } else { + submitAction() + .then(() => undefined) + .catch(handleUnknownError) + } + } + + return <> + {activateByDefault ? null + : handleSubmit(submitSnippet)} + disabled={isWorking} + inlineButtons={inlineButtons} + />} + + handleSubmit(submitAndActivateSnippet)} + onDeactivate={() => handleSubmit(submitAndDeactivateSnippet)} + /> + + {activateByDefault + ? handleSubmit(submitSnippet)} + disabled={isWorking} + inlineButtons={inlineButtons} + /> : null} + + { + setIsConfirmDialogOpen(false) + setSubmitAction(undefined) + }} + /> + +} diff --git a/js/Edit/fields/DescriptionEditor.tsx b/src/js/components/SnippetForm/fields/DescriptionEditor.tsx similarity index 84% rename from js/Edit/fields/DescriptionEditor.tsx rename to src/js/components/SnippetForm/fields/DescriptionEditor.tsx index 651c263d..0efaf5c5 100644 --- a/js/Edit/fields/DescriptionEditor.tsx +++ b/src/js/components/SnippetForm/fields/DescriptionEditor.tsx @@ -1,12 +1,10 @@ import React, { useCallback, useEffect } from 'react' import { __ } from '@wordpress/i18n' import domReady from '@wordpress/dom-ready' -import { useSnippetForm } from '../SnippetForm/context' +import { useSnippetForm } from '../../../hooks/useSnippetForm' export const EDITOR_ID = 'snippet_description' -const DEFAULT_ROWS = 5 - const TOOLBAR_BUTTONS = [ [ 'bold', @@ -62,8 +60,8 @@ export const DescriptionEditor: React.FC = () => { domReady(() => initializeEditor(onChange)) }, [onChange]) - return window.CODE_SNIPPETS_EDIT?.enableDescription ? -
+ return window.CODE_SNIPPETS_EDIT?.enableDescription + ?

: - null +
+ : null } diff --git a/js/Edit/fields/MultisiteSharingSettings.tsx b/src/js/components/SnippetForm/fields/MultisiteSharingSettings.tsx similarity index 86% rename from js/Edit/fields/MultisiteSharingSettings.tsx rename to src/js/components/SnippetForm/fields/MultisiteSharingSettings.tsx index 5d4837a1..4754dc0c 100644 --- a/js/Edit/fields/MultisiteSharingSettings.tsx +++ b/src/js/components/SnippetForm/fields/MultisiteSharingSettings.tsx @@ -1,6 +1,6 @@ import React from 'react' import { __ } from '@wordpress/i18n' -import { useSnippetForm } from '../SnippetForm/context' +import { useSnippetForm } from '../../../hooks/useSnippetForm' export const MultisiteSharingSettings: React.FC = () => { const { snippet, setSnippet, isReadOnly } = useSnippetForm() @@ -13,7 +13,7 @@ export const MultisiteSharingSettings: React.FC = () => { id="snippet_sharing" name="snippet_sharing" type="checkbox" - checked={!!snippet.shared_network} + checked={Boolean(snippet.shared_network)} disabled={isReadOnly} onChange={event => setSnippet(previous => ({ ...previous, shared_network: event.target.checked }))} diff --git a/js/Edit/fields/NameInput.tsx b/src/js/components/SnippetForm/fields/NameInput.tsx similarity index 81% rename from js/Edit/fields/NameInput.tsx rename to src/js/components/SnippetForm/fields/NameInput.tsx index 85297e0c..29da5faf 100644 --- a/js/Edit/fields/NameInput.tsx +++ b/src/js/components/SnippetForm/fields/NameInput.tsx @@ -1,6 +1,6 @@ import React from 'react' import { __ } from '@wordpress/i18n' -import { useSnippetForm } from '../SnippetForm/context' +import { useSnippetForm } from '../../../hooks/useSnippetForm' export const NameInput: React.FC = () => { const { snippet, setSnippet, isReadOnly } = useSnippetForm() @@ -20,7 +20,7 @@ export const NameInput: React.FC = () => { disabled={isReadOnly} placeholder={__('Enter title here', 'code-snippets')} onChange={event => - setSnippet(previous => ({ ...previous, name: event?.target?.value ?? '' }))} + setSnippet(previous => ({ ...previous, name: event.target.value }))} /> diff --git a/js/Edit/fields/PriorityInput.tsx b/src/js/components/SnippetForm/fields/PriorityInput.tsx similarity index 79% rename from js/Edit/fields/PriorityInput.tsx rename to src/js/components/SnippetForm/fields/PriorityInput.tsx index 10b953f4..4004a66c 100644 --- a/js/Edit/fields/PriorityInput.tsx +++ b/src/js/components/SnippetForm/fields/PriorityInput.tsx @@ -1,13 +1,14 @@ import React from 'react' import { __ } from '@wordpress/i18n' -import { getSnippetType } from '../../utils/snippets' -import { useSnippetForm } from '../SnippetForm/context' +import { getSnippetType } from '../../../utils/snippets' +import { useSnippetForm } from '../../../hooks/useSnippetForm' export const PriorityInput: React.FC = () => { const { snippet, setSnippet, isReadOnly } = useSnippetForm() - return 'html' === getSnippetType(snippet) ? null : -

diff --git a/js/Edit/fields/ScopeInput.tsx b/src/js/components/SnippetForm/fields/ScopeInput.tsx similarity index 77% rename from js/Edit/fields/ScopeInput.tsx rename to src/js/components/SnippetForm/fields/ScopeInput.tsx index 05baa631..408fa950 100644 --- a/js/Edit/fields/ScopeInput.tsx +++ b/src/js/components/SnippetForm/fields/ScopeInput.tsx @@ -1,12 +1,18 @@ import { ExternalLink } from '@wordpress/components' import { __ } from '@wordpress/i18n' -import React, { Dispatch, SetStateAction, useState } from 'react' -import { SNIPPET_TYPE_SCOPES, SNIPPET_TYPES, SnippetScope } from '../../types/Snippet' -import { isNetworkAdmin } from '../../utils/general' -import { buildShortcodeTag, ShortcodeAtts } from '../../utils/shortcodes' -import { getSnippetType } from '../../utils/snippets' +import React, { useState } from 'react' +import { SNIPPET_TYPES, SNIPPET_TYPE_SCOPES } from '../../../types/Snippet' +import { isNetworkAdmin } from '../../../utils/general' +import { buildShortcodeTag } from '../../../utils/shortcodes' +import { getSnippetType } from '../../../utils/snippets' import { CopyToClipboardButton } from '../../common/CopyToClipboardButton' -import { useSnippetForm } from '../SnippetForm/context' +import { useSnippetForm } from '../../../hooks/useSnippetForm' +import { truncateWords } from '../../../utils/text' +import type { ShortcodeAtts } from '../../../utils/shortcodes' +import type { SnippetScope } from '../../../types/Snippet' +import type { Dispatch, SetStateAction } from 'react' + +const MAX_SHORTCODE_NAME_WORDS = 3 const SHORTCODE_TAG = 'code_snippet' @@ -92,29 +98,30 @@ const ShortcodeInfo: React.FC = () => { shortcodes: false })) - return 'content' === snippet.scope ? - <> + return 'content' === snippet.scope + ? <>

{__('There are multiple options for inserting this snippet into a post, page or other content.', 'code-snippets')} {' '} - {snippet.id ? - // eslint-disable-next-line max-len - __('You can copy the below shortcode, or use the Classic Editor button, Block editor (Pro) or Elementor widget (Pro).', 'code-snippets') : - // eslint-disable-next-line max-len - __('After saving, you can copy a shortcode, or use the Classic Editor button, Block editor (Pro) or Elementor widget (Pro).', 'code-snippets')} + {snippet.id + // eslint-disable-next-line @stylistic/max-len + ? __('You can copy the below shortcode, or use the Classic Editor button, Block editor (Pro) or Elementor widget (Pro).', 'code-snippets') + // eslint-disable-next-line @stylistic/max-len + : __('After saving, you can copy a shortcode, or use the Classic Editor button, Block editor (Pro) or Elementor widget (Pro).', 'code-snippets')} {' '} {__('Learn more', 'code-snippets')}

- {snippet.id ? - <> + {snippet.id + ? <> @@ -128,8 +135,10 @@ const ShortcodeInfo: React.FC = () => { ['shortcodes', __('Evaluate additional shortcode tags', 'code-snippets')] ]} /> - : null} - : null + + : null} + + : null } export const ScopeInput: React.FC = () => { diff --git a/js/Edit/fields/TagsInput.tsx b/src/js/components/SnippetForm/fields/TagsInput.tsx similarity index 77% rename from js/Edit/fields/TagsInput.tsx rename to src/js/components/SnippetForm/fields/TagsInput.tsx index cb6e2fc5..6406afdc 100644 --- a/js/Edit/fields/TagsInput.tsx +++ b/src/js/components/SnippetForm/fields/TagsInput.tsx @@ -1,15 +1,15 @@ import React from 'react' import { __ } from '@wordpress/i18n' -import { TagEditor } from '../../common/TagEditor' -import { useSnippetForm } from '../SnippetForm/context' +import { TagEditor } from '../../TagEditor' +import { useSnippetForm } from '../../../hooks/useSnippetForm' const options = window.CODE_SNIPPETS_EDIT?.tagOptions export const TagsInput: React.FC = () => { const { snippet, setSnippet, isReadOnly } = useSnippetForm() - return options?.enabled ? -
+ return options?.enabled + ?

: - null +
+ : null } diff --git a/src/js/components/SnippetForm/index.ts b/src/js/components/SnippetForm/index.ts new file mode 100644 index 00000000..272e963f --- /dev/null +++ b/src/js/components/SnippetForm/index.ts @@ -0,0 +1 @@ +export * from './SnippetForm' diff --git a/js/Edit/components/Notices.tsx b/src/js/components/SnippetForm/page/Notices.tsx similarity index 57% rename from js/Edit/components/Notices.tsx rename to src/js/components/SnippetForm/page/Notices.tsx index eaf802bf..f1b1fd57 100644 --- a/js/Edit/components/Notices.tsx +++ b/src/js/components/SnippetForm/page/Notices.tsx @@ -1,29 +1,34 @@ import classnames from 'classnames' -import React, { MouseEventHandler, ReactNode, useEffect } from 'react' +import React, { useEffect } from 'react' import { __, sprintf } from '@wordpress/i18n' -import { useSnippetForm } from '../SnippetForm/context' +import { useSnippetForm } from '../../../hooks/useSnippetForm' +import type { ReactNode } from 'react' + +const NOTICE_TIMEOUT_MS = 5000 interface DismissibleNoticeProps { classNames?: classnames.Argument - onRemove: MouseEventHandler + onRemove: VoidFunction children?: ReactNode + autoHide?: boolean } -const DismissibleNotice: React.FC = ({ classNames, onRemove, children }) => { - +const DismissibleNotice: React.FC = ({ classNames, onRemove, children, autoHide = true }) => { useEffect(() => { - if (window.CODE_SNIPPETS_EDIT?.scrollToNotices) { - window.scrollTo({ top: 0, behavior: 'smooth' }) + if (autoHide) { + const timer = setTimeout(onRemove, NOTICE_TIMEOUT_MS) + return () => clearTimeout(timer) } - }, []) + return undefined + }, [autoHide, onRemove]) return ( -
+
<>{children} @@ -35,16 +40,17 @@ export const Notices: React.FC = () => { const { currentNotice, setCurrentNotice, snippet, setSnippet } = useSnippetForm() return <> - {currentNotice ? - setCurrentNotice(undefined)}> + {currentNotice + ? setCurrentNotice(undefined)}>

{currentNotice[1]}

-
: - null} +
+ : null} - {snippet.code_error ? - setSnippet(previous => ({ ...previous, code_error: null }))} + autoHide={false} >

{sprintf( @@ -55,7 +61,7 @@ export const Notices: React.FC = () => {

{snippet.code_error[0]}

-
: - null} + + : null} } diff --git a/js/Edit/components/PageHeading.tsx b/src/js/components/SnippetForm/page/PageHeading.tsx similarity index 73% rename from js/Edit/components/PageHeading.tsx rename to src/js/components/SnippetForm/page/PageHeading.tsx index ad998a32..2545d0fc 100644 --- a/js/Edit/components/PageHeading.tsx +++ b/src/js/components/SnippetForm/page/PageHeading.tsx @@ -1,23 +1,24 @@ import { __, _x } from '@wordpress/i18n' import React from 'react' -import { createEmptySnippet } from '../../utils/snippets' -import { useSnippetForm } from '../SnippetForm/context' +import { createEmptySnippet } from '../../../utils/snippets' +import { useSnippetForm } from '../../../hooks/useSnippetForm' const OPTIONS = window.CODE_SNIPPETS_EDIT export const PageHeading: React.FC = () => { - const { snippet, updateSnippet } = useSnippetForm() + const { snippet, updateSnippet, setCurrentNotice } = useSnippetForm() return (

- {snippet.id ? - __('Edit Snippet', 'code-snippets') : - __('Add New Snippet', 'code-snippets')} + {snippet.id + ? __('Edit Snippet', 'code-snippets') + : __('Add New Snippet', 'code-snippets')} {snippet.id ? <>{' '} { event.preventDefault() updateSnippet(() => createEmptySnippet()) + setCurrentNotice(undefined) window.document.title = window.document.title.replace( __('Edit Snippet', 'code-snippets'), diff --git a/js/Edit/components/UpgradeDialog.tsx b/src/js/components/SnippetForm/page/UpgradeDialog.tsx similarity index 92% rename from js/Edit/components/UpgradeDialog.tsx rename to src/js/components/SnippetForm/page/UpgradeDialog.tsx index 8927b273..02b7e95c 100644 --- a/js/Edit/components/UpgradeDialog.tsx +++ b/src/js/components/SnippetForm/page/UpgradeDialog.tsx @@ -1,6 +1,7 @@ -import React, { Dispatch, SetStateAction, useState } from 'react' +import React, { useState } from 'react' import { ExternalLink, Modal } from '@wordpress/components' import { __, _n, sprintf } from '@wordpress/i18n' +import type { Dispatch, SetStateAction } from 'react' export interface UpgradeDialogProps { isOpen: boolean @@ -99,14 +100,14 @@ const UpgradeInfo: React.FC = ({ nextTab }) => className="button button-secondary" href="https://codesnippets.pro/pricing/" > - {__('Learn More', 'code-snippets')} + {__('Learn more', 'code-snippets')}

@@ -115,8 +116,8 @@ const UpgradeInfo: React.FC = ({ nextTab }) => export const UpgradeDialog: React.FC = ({ isOpen, setIsOpen }) => { const [currentTab, setCurrentTab] = useState(0) - return isOpen ? - { @@ -129,11 +130,11 @@ export const UpgradeDialog: React.FC = ({ isOpen, setIsOpen {__('Code Snippets Pro', 'code-snippets')}

- {0 === currentTab ? - setCurrentTab(1)} /> : - + {0 === currentTab + ? setCurrentTab(1)} /> + : } - : - null + + : null } diff --git a/js/common/TagEditor/SuggestionList.tsx b/src/js/components/TagEditor/SuggestionList.tsx similarity index 100% rename from js/common/TagEditor/SuggestionList.tsx rename to src/js/components/TagEditor/SuggestionList.tsx diff --git a/js/common/TagEditor/TagEditor.tsx b/src/js/components/TagEditor/TagEditor.tsx similarity index 56% rename from js/common/TagEditor/TagEditor.tsx rename to src/js/components/TagEditor/TagEditor.tsx index eaab93b7..03064e75 100644 --- a/js/common/TagEditor/TagEditor.tsx +++ b/src/js/components/TagEditor/TagEditor.tsx @@ -2,9 +2,11 @@ * Code based on Tagger, copyright (c) 2018-2022 Jakub T. Jankiewicz * Released under the MIT license. */ -import React, { InputHTMLAttributes, KeyboardEventHandler, useRef, useState } from 'react' +import React, { useRef, useState } from 'react' +import { handleUnknownError } from '../../utils/errors' import { SuggestionList } from './SuggestionList' import { TagList } from './TagList' +import type { InputHTMLAttributes, KeyboardEventHandler } from 'react' const COMPLETION_MIN_LENGTH = 2 const SPECIAL_CHARS_RE = /(?[-\\^$[\]()+{}?*.|])/g @@ -16,28 +18,22 @@ const isNotEmpty = (value: string | null | undefined): value is string => !['', '""', "''", '``', undefined, null].includes(value) const isTagSelected = (selected: string[], tag: string) => { - if (!selected?.includes(tag)) { + if (!selected.includes(tag)) { return false } const re = new RegExp(`^${escapeRegex(tag)}`) return 1 === selected.filter(test_tag => re.test(test_tag)).length } -export type TagEditorCompletions = string[] | ((value?: string) => string[]) | ((value?: string) => Promise) | undefined +export type TagEditorCompletions = string[] | ((value?: string) => Promise) | undefined -const buildCompletions = (completions: TagEditorCompletions, value: string | undefined, onBuild: (result: string[]) => void) => { - if (completions) { - if ('function' === typeof completions) { - const result = completions(value) - if (result && 'then' in result && 'function' === typeof result.then) { - result.then(list => onBuild(list)) - - } else if (result instanceof Array) { - onBuild(result) - } - } else { - onBuild(completions) - } +const buildCompletions = (completions: TagEditorCompletions, value: string | undefined): Promise => { + if (!completions) { + return Promise.resolve(undefined) + } else if ('function' === typeof completions) { + return completions(value) + } else { + return Promise.resolve(completions) } } @@ -90,13 +86,15 @@ export const TagEditor: React.FC = ({ const triggerCompletion = (openList = inputValue.length >= completionMinLength) => { if (openList) { - buildCompletions(completions, inputValue, list => { - setLastCompletionList(completionList) - - if (list.length) { - setCompletionList(allowDuplicates ? list : list.filter(item => !tags.includes(item))) - } - }) + buildCompletions(completions, inputValue) + .then(list => { + setLastCompletionList(completionList) + + if (list?.length) { + setCompletionList(allowDuplicates ? list : list.filter(item => !tags.includes(item))) + } + }) + .catch(handleUnknownError) } setCompletionOpen(openList) @@ -105,21 +103,36 @@ export const TagEditor: React.FC = ({ const keyboardHandler: KeyboardEventHandler = event => { const { key, ctrlKey, metaKey } = event - if ('Enter' === key || ',' === key || ' ' === key && !allowSpaces) { - addTag() - - } else if ('Backspace' === key && !inputValue) { - removeTag() - - } else if (' ' === key && (ctrlKey || metaKey)) { - triggerCompletion(true) + switch (key) { + case 'Enter': + case ',': + event.preventDefault() + addTag() + break + + case 'Backspace': + if (!inputValue) { + event.preventDefault() + removeTag() + } + break + + case ' ': + if (ctrlKey || metaKey) { + event.preventDefault() + triggerCompletion(true) + } else if (!allowSpaces) { + event.preventDefault() + addTag() + } + break - } else if (!isTagLimit() || 'Tab' === key) { - return + case 'Tab': + if (!isTagLimit()) { + event.preventDefault() + } + break } - - event.preventDefault() - event.stopPropagation() } const inputHandler = () => { @@ -132,32 +145,34 @@ export const TagEditor: React.FC = ({ } } - return
-
    inputRef.current?.focus()}> - -
  • - addOnBlur ? addTag() : undefined} - onChange={event => setInputValue(event.target.value)} - onKeyDown={keyboardHandler} - onInput={inputHandler} - /> - !tags.includes(suggestion))} - onSelect={suggestion => { - addTag(suggestion) - setCompletionList([]) - setCompletionOpen(false) - }} - /> -
  • -
-
+ return ( +
+
    inputRef.current?.focus()}> + +
  • + addOnBlur ? addTag() : undefined} + onChange={event => setInputValue(event.target.value)} + onKeyDown={keyboardHandler} + onInput={inputHandler} + /> + !tags.includes(suggestion))} + onSelect={suggestion => { + addTag(suggestion) + setCompletionList([]) + setCompletionOpen(false) + }} + /> +
  • +
+
+ ) } diff --git a/js/common/TagEditor/TagList.tsx b/src/js/components/TagEditor/TagList.tsx similarity index 86% rename from js/common/TagEditor/TagList.tsx rename to src/js/components/TagEditor/TagList.tsx index 241076ae..50b8c5a5 100644 --- a/js/common/TagEditor/TagList.tsx +++ b/src/js/components/TagEditor/TagList.tsx @@ -11,7 +11,7 @@ export const TagList: React.FC = ({ tags, onRemove }) =>
  • {tag} - { + { onRemove(tag) event.preventDefault() }}>Γ— diff --git a/js/common/TagEditor/index.ts b/src/js/components/TagEditor/index.ts similarity index 100% rename from js/common/TagEditor/index.ts rename to src/js/components/TagEditor/index.ts diff --git a/js/common/Button.tsx b/src/js/components/common/Button.tsx similarity index 90% rename from js/common/Button.tsx rename to src/js/components/common/Button.tsx index 913a78e9..02757769 100644 --- a/js/common/Button.tsx +++ b/src/js/components/common/Button.tsx @@ -1,5 +1,6 @@ -import React, { ButtonHTMLAttributes } from 'react' +import React from 'react' import classnames from 'classnames' +import type { ButtonHTMLAttributes } from 'react' export interface ButtonProps extends Omit, 'id' | 'name'> { id?: string diff --git a/js/common/ConfirmDialog.tsx b/src/js/components/common/ConfirmDialog.tsx similarity index 85% rename from js/common/ConfirmDialog.tsx rename to src/js/components/common/ConfirmDialog.tsx index 059e9aa2..81604d1a 100644 --- a/js/common/ConfirmDialog.tsx +++ b/src/js/components/common/ConfirmDialog.tsx @@ -1,6 +1,7 @@ -import React, { ReactNode } from 'react' +import React from 'react' import { __ } from '@wordpress/i18n' -import { Modal, Flex, Button } from '@wordpress/components' +import { Button, Flex, Modal } from '@wordpress/components' +import type { ReactNode } from 'react' export interface ConfirmDialogProps { open?: boolean @@ -23,8 +24,8 @@ export const ConfirmDialog: React.FC = ({ cancelLabel = __('Cancel', 'code-snippets'), confirmButtonClassName }) => - open ? - = ({ {confirmLabel} - : - null + + : null diff --git a/js/common/CopyToClipboardButton.tsx b/src/js/components/common/CopyToClipboardButton.tsx similarity index 69% rename from js/common/CopyToClipboardButton.tsx rename to src/js/components/common/CopyToClipboardButton.tsx index 4511b918..12d0183c 100644 --- a/js/common/CopyToClipboardButton.tsx +++ b/src/js/components/common/CopyToClipboardButton.tsx @@ -1,4 +1,6 @@ -import React, { HTMLAttributes, MouseEventHandler, useState } from 'react' +import React, { useState } from 'react' +import { handleUnknownError } from '../../utils/errors' +import type { HTMLAttributes, MouseEventHandler } from 'react' const TIMEOUT = 3000 @@ -16,24 +18,25 @@ export const CopyToClipboardButton: React.FC = ({ ...props }) => { const [isSuccess, setIsSuccess] = useState(false) + const clipboard = window.navigator.clipboard as Clipboard | undefined const clickHandler: MouseEventHandler = event => { event.preventDefault() - window.navigator.clipboard?.writeText(text) + clipboard?.writeText(text) .then(() => { setIsSuccess(true) setTimeout(() => setIsSuccess(false), TIMEOUT) }) - .catch(error => console.error(error)) + .catch(handleUnknownError) } - return window.navigator.clipboard ? - : - null + > + : null } diff --git a/src/js/edit.tsx b/src/js/edit.tsx new file mode 100644 index 00000000..8968cc23 --- /dev/null +++ b/src/js/edit.tsx @@ -0,0 +1,12 @@ +import React from 'react' +import { createRoot } from 'react-dom/client' +import { SnippetForm } from './components/SnippetForm' + +const container = document.getElementById('edit-snippet-form-container') + +if (container) { + const root = createRoot(container) + root.render() +} else { + console.error('Could not find snippet edit form container.') +} diff --git a/src/js/editor.ts b/src/js/editor.ts new file mode 100644 index 00000000..c36e2db5 --- /dev/null +++ b/src/js/editor.ts @@ -0,0 +1,21 @@ +import { defineMode, getMode, registerHelper } from 'codemirror' +import { Linter } from './utils/Linter' +import type { EditorConfiguration, ModeSpec } from 'codemirror' + +interface ModeSpecOptions { + startOpen: boolean +} + +const mode: ModeSpec = { + name: 'application/x-httpd-php', + startOpen: true +} + +defineMode('php-snippet', (config: EditorConfiguration) => getMode(config, mode)) + +registerHelper('lint', 'php', (text: string) => { + const linter = new Linter(text) + linter.lint() + + return linter.annotations +}) diff --git a/js/utils/api/axios.ts b/src/js/hooks/useAxios.ts similarity index 92% rename from js/utils/api/axios.ts rename to src/js/hooks/useAxios.ts index 4cbdc610..a513e6ab 100644 --- a/js/utils/api/axios.ts +++ b/src/js/hooks/useAxios.ts @@ -1,5 +1,6 @@ import { useMemo } from 'react' -import axios, { AxiosInstance, AxiosResponse, CreateAxiosDefaults } from 'axios' +import axios from 'axios' +import type { AxiosInstance, AxiosResponse, CreateAxiosDefaults } from 'axios' export interface AxiosAPI { get: (url: string) => Promise> diff --git a/js/Edit/SnippetForm/context.tsx b/src/js/hooks/useSnippetForm.tsx similarity index 69% rename from js/Edit/SnippetForm/context.tsx rename to src/js/hooks/useSnippetForm.tsx index 8ee80366..c5a36f77 100644 --- a/js/Edit/SnippetForm/context.tsx +++ b/src/js/hooks/useSnippetForm.tsx @@ -1,10 +1,12 @@ -import { AxiosError, isAxiosError } from 'axios' -import React, { createContext, Dispatch, PropsWithChildren, SetStateAction, useCallback, useContext, useMemo, useState } from 'react' -import { Notice } from '../../types/Notice' -import { Snippet } from '../../types/Snippet' -import { CodeEditorInstance } from '../../types/WordPressCodeEditor' -import { isLicensed, isProSnippet } from '../../utils/snippets' -import { useSnippetSubmit } from '../utils/submit' +import { isAxiosError } from 'axios' +import React, { createContext, useCallback, useContext, useMemo, useState } from 'react' +import { isLicensed } from '../utils/general' +import { isProSnippet } from '../utils/snippets' +import { useSnippetSubmit } from './useSnippetSubmit' +import type { Dispatch, PropsWithChildren, SetStateAction} from 'react' +import type { ScreenNotice } from '../types/ScreenNotice' +import type { Snippet } from '../types/Snippet' +import type { CodeEditorInstance } from '../types/WordPressCodeEditor' export interface SnippetFormContext { snippet: Snippet @@ -13,14 +15,14 @@ export interface SnippetFormContext { isReadOnly: boolean isWorking: boolean setIsWorking: Dispatch> - currentNotice: Notice | undefined - setCurrentNotice: Dispatch> + currentNotice: ScreenNotice | undefined + setCurrentNotice: Dispatch> codeEditorInstance: CodeEditorInstance | undefined setCodeEditorInstance: Dispatch> - handleRequestError: (error: AxiosError | unknown, message?: string) => void - submitSnippet: VoidFunction - submitAndActivateSnippet: VoidFunction - submitAndDeactivateSnippet: VoidFunction + handleRequestError: (error: unknown, message?: string) => void + submitSnippet: () => Promise + submitAndActivateSnippet: () => Promise + submitAndDeactivateSnippet: () => Promise } const SnippetFormContext = createContext(undefined) @@ -42,12 +44,12 @@ export interface WithSnippetFormContextProps extends PropsWithChildren { export const WithSnippetFormContext: React.FC = ({ children, initialSnippet }) => { const [snippet, setSnippet] = useState(initialSnippet) const [isWorking, setIsWorking] = useState(false) - const [currentNotice, setCurrentNotice] = useState() + const [currentNotice, setCurrentNotice] = useState() const [codeEditorInstance, setCodeEditorInstance] = useState() const submitSnippet = useSnippetSubmit(setSnippet, setIsWorking, setCurrentNotice) const isReadOnly = useMemo(() => !isLicensed() && isProSnippet(snippet.scope), [snippet.scope]) - const handleRequestError = useCallback((error: AxiosError | unknown, message?: string) => { + const handleRequestError = useCallback((error: unknown, message?: string) => { console.error('Request failed', error) setIsWorking(false) setCurrentNotice(['error', [message, isAxiosError(error) ? error.message : ''].filter(Boolean).join(' ')]) diff --git a/js/Edit/utils/submit.ts b/src/js/hooks/useSnippetSubmit.ts similarity index 69% rename from js/Edit/utils/submit.ts rename to src/js/hooks/useSnippetSubmit.ts index 08cdd8be..b61f3dd8 100644 --- a/js/Edit/utils/submit.ts +++ b/src/js/hooks/useSnippetSubmit.ts @@ -1,16 +1,17 @@ import { __ } from '@wordpress/i18n' import { addQueryArgs } from '@wordpress/url' import { isAxiosError } from 'axios' -import { Dispatch, SetStateAction, useCallback } from 'react' -import { Notice } from '../../types/Notice' -import { Snippet } from '../../types/Snippet' -import { useSnippetsAPI } from '../../utils/api/snippets' +import { useCallback } from 'react' +import { useSnippetsAPI } from './useSnippets' +import type { Dispatch, SetStateAction } from 'react' +import type { ScreenNotice } from '../types/ScreenNotice' +import type { Snippet } from '../types/Snippet' const getSuccessNotice = (request: Snippet, response: Snippet, active: boolean | undefined) => { if (active === undefined) { - return 0 === request.id ? - __('Snippet created.', 'code-snippets') : - __('Snippet updated.', 'code-snippets') + return 0 === request.id + ? __('Snippet created.', 'code-snippets') + : __('Snippet updated.', 'code-snippets') } if (0 === request.id && active) { @@ -18,9 +19,9 @@ const getSuccessNotice = (request: Snippet, response: Snippet, active: boolean | } if (active) { - return 'single-use' === response.scope ? - __('Snippet updated and executed.', 'code-snippets') : - __('Snippet updated and activated.', 'code-snippets') + return 'single-use' === response.scope + ? __('Snippet updated and executed.', 'code-snippets') + : __('Snippet updated and activated.', 'code-snippets') } else { return __('Snippet updated and deactivated') } @@ -29,7 +30,7 @@ const getSuccessNotice = (request: Snippet, response: Snippet, active: boolean | export const useSnippetSubmit = ( setSnippet: Dispatch>, setIsWorking: Dispatch>, - setCurrentNotice: Dispatch> + setCurrentNotice: Dispatch> ): (snippet: Snippet, active?: boolean) => Promise => { const api = useSnippetsAPI() @@ -39,7 +40,7 @@ export const useSnippetSubmit = ( const result = await (async (): Promise => { try { - const requestData: Snippet = { ...snippet, active: undefined === active ? snippet.active : active } + const requestData: Snippet = { ...snippet, active: active ?? snippet.active } const { data } = await (0 === snippet.id ? api.create(requestData) : api.update(requestData)) setIsWorking(false) return data.id ? data : undefined @@ -51,9 +52,9 @@ export const useSnippetSubmit = ( if (undefined === result || 'string' === typeof result) { const message = [ - snippet.id ? - __('Could not create snippet.', 'code-snippets') : - __('Could not update snippet.', 'code-snippets'), + snippet.id + ? __('Could not create snippet.', 'code-snippets') + : __('Could not update snippet.', 'code-snippets'), result ?? __('The server did not send a valid response.', 'code-snippets') ] @@ -63,7 +64,7 @@ export const useSnippetSubmit = ( setSnippet({ ...result }) setCurrentNotice(['updated', getSuccessNotice(snippet, result, active)]) - if (snippet.id && result?.id) { + if (snippet.id && result.id) { window.document.title = window.document.title.replace( __('Add New Snippet', 'code-snippets'), __('Edit Snippet', 'code-snippets') diff --git a/js/utils/api/snippets.ts b/src/js/hooks/useSnippets.ts similarity index 82% rename from js/utils/api/snippets.ts rename to src/js/hooks/useSnippets.ts index 8a3bd77d..4a59752d 100644 --- a/js/utils/api/snippets.ts +++ b/src/js/hooks/useSnippets.ts @@ -1,10 +1,11 @@ import { useEffect, useMemo, useState } from 'react' -import { AxiosResponse, CreateAxiosDefaults } from 'axios' import { addQueryArgs } from '@wordpress/url' -import { ExportSnippets } from '../../types/ExportSnippets' -import { Snippet } from '../../types/Snippet' -import { isNetworkAdmin } from '../general' -import { useAxios } from './axios' +import { handleUnknownError } from '../utils/errors' +import { isNetworkAdmin } from '../utils/general' +import { useAxios } from './useAxios' +import type { Snippet } from '../types/Snippet' +import type { SnippetsExport } from '../types/SnippetsExport' +import type { AxiosResponse, CreateAxiosDefaults } from 'axios' const ROUTE_BASE = window.CODE_SNIPPETS?.restAPI.snippets @@ -20,7 +21,7 @@ export interface SnippetsAPI { delete: (snippet: Snippet) => Promise> activate: (snippet: Snippet) => Promise> deactivate: (snippet: Snippet) => Promise> - export: (snippet: Snippet) => Promise> + export: (snippet: Snippet) => Promise> exportCode: (snippet: Snippet) => Promise> } @@ -56,7 +57,7 @@ export const useSnippetsAPI = (): SnippetsAPI => { post(buildURL(snippet, 'deactivate')), export: snippet => - get(buildURL(snippet, 'export')), + get(buildURL(snippet, 'export')), exportCode: snippet => get(buildURL(snippet, 'export-code')) @@ -71,6 +72,7 @@ export const useSnippets = (): Snippet[] | undefined => { if (!snippets) { api.fetchAll(isNetworkAdmin()) .then(response => setSnippets(response.data)) + .catch(handleUnknownError) } }, [api, snippets]) diff --git a/src/js/manage.ts b/src/js/manage.ts new file mode 100644 index 00000000..634cad9b --- /dev/null +++ b/src/js/manage.ts @@ -0,0 +1,5 @@ +import { handleShowCloudPreview, handleSnippetActivationSwitches, handleSnippetPriorityChanges } from './services/manage' + +handleSnippetActivationSwitches() +handleSnippetPriorityChanges() +handleShowCloudPreview() diff --git a/js/mce.ts b/src/js/mce.ts similarity index 80% rename from js/mce.ts rename to src/js/mce.ts index ff56f6bc..c302de99 100644 --- a/js/mce.ts +++ b/src/js/mce.ts @@ -1,7 +1,7 @@ -import * as tinymce from 'tinymce' -import { Editor } from 'tinymce' -import { ContentShortcodeAtts, SourceShortcodeAtts } from './types/Shortcodes' -import { LocalisedEditor } from './types/WordPressEditor' +import tinymce from 'tinymce' +import type { Editor } from 'tinymce' +import type { ContentShortcodeAtts, SourceShortcodeAtts } from './types/Shortcodes' +import type { LocalisedEditor } from './types/WordPressEditor' const convertToValues = (array: Record) => Object.keys(array).map(key => ({ @@ -19,7 +19,7 @@ export const insertContentMenu = (editor: Editor, activeEditor: LocalisedEditor) type: 'listbox', name: 'id', label: activeEditor.getLang('code_snippets.snippet_label'), - values: convertToValues(activeEditor.getLang('code_snippets.all_snippets') as Record) + values: convertToValues(> activeEditor.getLang('code_snippets.all_snippets')) }, { type: 'checkbox', @@ -29,7 +29,9 @@ export const insertContentMenu = (editor: Editor, activeEditor: LocalisedEditor) ], onsubmit: (event: { data: SourceShortcodeAtts }) => { const id = parseInt(event.data.id, 10) - if (!id) return + if (!id) { + return + } let atts = '' @@ -53,7 +55,7 @@ export const insertSourceMenu = (editor: Editor, ed: LocalisedEditor) => ({ type: 'listbox', name: 'id', label: ed.getLang('code_snippets.snippet_label'), - values: convertToValues(ed.getLang('code_snippets.content_snippets') as Record) + values: convertToValues(> ed.getLang('code_snippets.content_snippets')) }, { type: 'checkbox', @@ -73,7 +75,9 @@ export const insertSourceMenu = (editor: Editor, ed: LocalisedEditor) => ({ ], onsubmit: (event: { data: ContentShortcodeAtts }) => { const id = parseInt(event.data.id, 10) - if (!id) return + if (!id) { + return + } let atts = '' @@ -90,7 +94,7 @@ export const insertSourceMenu = (editor: Editor, ed: LocalisedEditor) => ({ }) tinymce.PluginManager.add('code_snippets', editor => { - const activeEditor = tinymce.activeEditor as LocalisedEditor + const activeEditor = tinymce.activeEditor editor.addButton('code_snippets', { icon: 'code', diff --git a/js/prism.ts b/src/js/prism.ts similarity index 92% rename from js/prism.ts rename to src/js/prism.ts index 77e0385b..fb2dbdef 100644 --- a/js/prism.ts +++ b/src/js/prism.ts @@ -1,4 +1,4 @@ -import * as Prism from 'prismjs' +import Prism from 'prismjs' import 'prismjs/components/prism-markup' import 'prismjs/components/prism-markup-templating' import 'prismjs/components/prism-clike' @@ -19,3 +19,5 @@ document.addEventListener('readystatechange', () => { Prism.highlightAll() } }) + +window.CODE_SNIPPETS_PRISM = Prism diff --git a/js/manage/activation.ts b/src/js/services/manage/activation.ts similarity index 56% rename from js/manage/activation.ts rename to src/js/services/manage/activation.ts index a4ebab9e..039edf1c 100644 --- a/js/manage/activation.ts +++ b/src/js/services/manage/activation.ts @@ -1,13 +1,13 @@ import { __ } from '@wordpress/i18n' -import { Snippet } from '../types/Snippet' import { updateSnippet } from './requests' +import type { Snippet } from '../../types/Snippet' /** * Update the snippet count of a specific view * @param element * @param increment */ -const updateViewCount = (element: HTMLElement, increment: boolean) => { +const updateViewCount = (element: HTMLElement | null, increment: boolean) => { if (element?.textContent) { let count = parseInt(element.textContent.replace(/\((?\d+)\)/, '$1'), 10) count += increment ? 1 : -1 @@ -23,14 +23,16 @@ const updateViewCount = (element: HTMLElement, increment: boolean) => { * @param event */ export const toggleSnippetActive = (link: HTMLAnchorElement, event: Event) => { - const row = link?.parentElement?.parentElement // Switch < cell < row + const row = link.parentElement?.parentElement // Switch < cell < row if (!row) { console.error('Could not toggle snippet active status.', row) return } - const match = row.className.match(/\b(?:in)?active-snippet\b/) - if (!match) return + const match = /\b(?:in)?active-snippet\b/.exec(row.className) + if (!match) { + return + } event.preventDefault() @@ -38,30 +40,40 @@ export const toggleSnippetActive = (link: HTMLAnchorElement, event: Event) => { const snippet: Partial = { active: activating } updateSnippet('active', row, snippet, response => { - const button = row.querySelector('.snippet-activation-switch') as HTMLAnchorElement + const button: HTMLAnchorElement | null = row.querySelector('.snippet-activation-switch') if (response.success) { - row.className = activating ? - row.className.replace(/\binactive-snippet\b/, 'active-snippet') : - row.className.replace(/\bactive-snippet\b/, 'inactive-snippet') + row.className = activating + ? row.className.replace(/\binactive-snippet\b/, 'active-snippet') + : row.className.replace(/\bactive-snippet\b/, 'inactive-snippet') const views = document.querySelector('.subsubsub') const activeCount = views?.querySelector('.active .count') const inactiveCount = views?.querySelector('.inactive .count') - activeCount ? updateViewCount(activeCount, activating) : null - inactiveCount ? updateViewCount(inactiveCount, activating) : null + if (activeCount) { + updateViewCount(activeCount, activating) + } - button.title = activating ? __('Deactivate', 'code-snippets') : __('Activate', 'code-snippets') + if (inactiveCount) { + updateViewCount(inactiveCount, activating) + } + + if (button) { + button.title = activating ? __('Deactivate', 'code-snippets') : __('Activate', 'code-snippets') + } } else { row.className += ' erroneous-snippet' - button.title = __('An error occurred when attempting to activate', 'code-snippets') + + if (button) { + button.title = __('An error occurred when attempting to activate', 'code-snippets') + } } }) } export const handleSnippetActivationSwitches = () => { for (const link of document.getElementsByClassName('snippet-activation-switch')) { - link.addEventListener('click', event => toggleSnippetActive(link as HTMLAnchorElement, event)) + link.addEventListener('click', event => toggleSnippetActive( link, event)) } } diff --git a/js/manage/cloud.ts b/src/js/services/manage/cloud.ts similarity index 65% rename from js/manage/cloud.ts rename to src/js/services/manage/cloud.ts index e8f14a9b..6aa94805 100644 --- a/js/manage/cloud.ts +++ b/src/js/services/manage/cloud.ts @@ -17,22 +17,25 @@ export const handleShowCloudPreview = () => { const snippetId = button.getAttribute('data-snippet') const snippetLanguage = button.getAttribute('data-lang') - const snippetCodeInput = document.getElementById(`cloud-snippet-code-${snippetId}`) - const snippetCode = snippetCodeInput?.value + const snippetCodeInput = document.getElementById(`cloud-snippet-code-${snippetId}`) + const snippetCodeModalTag = document.getElementById('snippet-code-thickbox') + + if (!snippetCodeModalTag || !snippetCodeInput) { + return + } - const snippetCodeModalTag = document.getElementById('snippet-code-thickbox') snippetCodeModalTag.classList.remove(...snippetCodeModalTag.classList) snippetCodeModalTag.classList.add(`language-${snippetLanguage}`) - snippetCodeModalTag.textContent = snippetCode + snippetCodeModalTag.textContent = snippetCodeInput.value if ('markup' === snippetLanguage) { - snippetCodeModalTag.innerHTML = `${snippetCode}` + snippetCodeModalTag.innerHTML = `${snippetCodeInput.value}` } if ('php' === snippetLanguage) { // Check if there is an opening php tag if not add it. - if (!snippetCode.startsWith(' { } } - export const handleSnippetPriorityChanges = () => { - for (const field of document.getElementsByClassName('snippet-priority') as HTMLCollectionOf) { + for (const field of > document.getElementsByClassName('snippet-priority')) { field.addEventListener('input', () => updateSnippetPriority(field)) field.disabled = false } diff --git a/js/manage/requests.ts b/src/js/services/manage/requests.ts similarity index 65% rename from js/manage/requests.ts rename to src/js/services/manage/requests.ts index 19ebb417..a80fbca6 100644 --- a/js/manage/requests.ts +++ b/src/js/services/manage/requests.ts @@ -1,7 +1,12 @@ -import { Snippet, SnippetScope } from '../types/Snippet' -import { isNetworkAdmin } from '../utils/general' +import { isNetworkAdmin } from '../../utils/general' +import type { Snippet, SnippetScope } from '../../types/Snippet' -export type SuccessCallback = (response: { success: boolean, data?: unknown }) => void +export interface ResponseData { + success: boolean + data?: T +} + +export type SuccessCallback = (response: ResponseData) => void const sendSnippetRequest = (query: string, onSuccess?: SuccessCallback) => { const request = new XMLHttpRequest() @@ -11,11 +16,12 @@ const sendSnippetRequest = (query: string, onSuccess?: SuccessCallback) => { request.onload = () => { const success = 200 const errorStart = 400 - if (success > request.status || errorStart <= request.status) return - // eslint-disable-next-line no-console - console.info(request.responseText) + if (success > request.status || errorStart <= request.status) { + return + } - onSuccess?.(JSON.parse(request.responseText)) + console.info(request.responseText) + onSuccess?.( JSON.parse(request.responseText)) } request.send(query) @@ -29,7 +35,7 @@ const sendSnippetRequest = (query: string, onSuccess?: SuccessCallback) => { * @param successCallback */ export const updateSnippet = (field: keyof Snippet, row: Element, snippet: Partial, successCallback?: SuccessCallback) => { - const nonce = document.getElementById('code_snippets_ajax_nonce') as HTMLInputElement | null + const nonce = document.getElementById('code_snippets_ajax_nonce') const columnId = row.querySelector('.column-id') if (!nonce || !columnId?.textContent || !parseInt(columnId.textContent, 10)) { @@ -37,9 +43,9 @@ export const updateSnippet = (field: keyof Snippet, row: Element, snippet: Parti } snippet.id = parseInt(columnId.textContent, 10) - snippet.shared_network = Boolean(row.className.match(/\bshared-network-snippet\b/)) + snippet.shared_network = null !== /\bshared-network-snippet\b/.exec(row.className) snippet.network = snippet.shared_network || isNetworkAdmin() - snippet.scope = row.getAttribute('data-snippet-scope') as SnippetScope | null ?? snippet.scope + snippet.scope = row.getAttribute('data-snippet-scope') ?? snippet.scope const queryString = `action=update_code_snippet&_ajax_nonce=${nonce.value}&field=${field}&snippet=${JSON.stringify(snippet)}` sendSnippetRequest(queryString, successCallback) diff --git a/js/settings/editor-preview.ts b/src/js/services/settings/editor-preview.ts similarity index 85% rename from js/settings/editor-preview.ts rename to src/js/services/settings/editor-preview.ts index 8d9315c9..f83a6b20 100644 --- a/js/settings/editor-preview.ts +++ b/src/js/services/settings/editor-preview.ts @@ -1,4 +1,4 @@ -import '../editor' +import '../../editor' const parseSelect = (select: HTMLSelectElement) => select.options[select.selectedIndex].value const parseCheckbox = (checkbox: HTMLInputElement) => checkbox.checked @@ -14,6 +14,7 @@ const initialiseCodeMirror = () => { } console.error('Could not initialise CodeMirror on textarea.', textarea) + return undefined } export const handleEditorPreviewUpdates = () => { @@ -29,11 +30,11 @@ export const handleEditorPreviewUpdates = () => { const value = (() => { switch (setting.type) { case 'select': - return parseSelect(element as HTMLSelectElement) + return parseSelect( element) case 'checkbox': - return parseCheckbox(element as HTMLInputElement) + return parseCheckbox( element) case 'number': - return parseNumber(element as HTMLInputElement) + return parseNumber( element) default: return null } diff --git a/src/js/services/settings/index.ts b/src/js/services/settings/index.ts new file mode 100644 index 00000000..1cbaa4c6 --- /dev/null +++ b/src/js/services/settings/index.ts @@ -0,0 +1,2 @@ +export { handleSettingsTabs } from './tabs' +export { handleEditorPreviewUpdates } from './editor-preview' diff --git a/js/settings/tabs.ts b/src/js/services/settings/tabs.ts similarity index 96% rename from js/settings/tabs.ts rename to src/js/services/settings/tabs.ts index f01d9285..6301beee 100644 --- a/js/settings/tabs.ts +++ b/src/js/services/settings/tabs.ts @@ -33,7 +33,7 @@ export const handleSettingsTabs = () => { return } - const tabs = tabsWrapper.querySelectorAll('.nav-tab') ?? [] + const tabs = tabsWrapper.querySelectorAll('.nav-tab') for (const tab of tabs) { tab.addEventListener('click', event => { diff --git a/src/js/settings.ts b/src/js/settings.ts new file mode 100644 index 00000000..c943ae31 --- /dev/null +++ b/src/js/settings.ts @@ -0,0 +1,4 @@ +import { handleEditorPreviewUpdates, handleSettingsTabs } from './services/settings' + +handleSettingsTabs() +handleEditorPreviewUpdates() diff --git a/src/js/types/KeyboardShortcut.ts b/src/js/types/KeyboardShortcut.ts new file mode 100644 index 00000000..58e647fb --- /dev/null +++ b/src/js/types/KeyboardShortcut.ts @@ -0,0 +1,31 @@ +import { _x } from '@wordpress/i18n' + +export const KEYBOARD_KEYS = { + 'Cmd': _x('Cmd', 'keyboard key', 'code-snippets'), + 'Ctrl': _x('Ctrl', 'keyboard key', 'code-snippets'), + 'Shift': _x('Shift', 'keyboard key', 'code-snippets'), + 'Option': _x('Option', 'keyboard key', 'code-snippets'), + 'Alt': _x('Alt', 'keyboard key', 'code-snippets'), + 'Tab': _x('Tab', 'keyboard key', 'code-snippets'), + 'Up': _x('Up', 'keyboard key', 'code-snippets'), + 'Down': _x('Down', 'keyboard key', 'code-snippets'), + 'A': _x('A', 'keyboard key', 'code-snippets'), + 'D': _x('D', 'keyboard key', 'code-snippets'), + 'F': _x('F', 'keyboard key', 'code-snippets'), + 'G': _x('G', 'keyboard key', 'code-snippets'), + 'R': _x('R', 'keyboard key', 'code-snippets'), + 'S': _x('S', 'keyboard key', 'code-snippets'), + 'Y': _x('Y', 'keyboard key', 'code-snippets'), + 'Z': _x('Z', 'keyboard key', 'code-snippets'), + '/': _x('/', 'keyboard key', 'code-snippets'), + '[': _x(']', 'keyboard key', 'code-snippets'), + ']': _x(']', 'keyboard key', 'code-snippets') +} + +export type KeyboardKey = keyof typeof KEYBOARD_KEYS + +export interface KeyboardShortcut { + label: string + mod: KeyboardKey | KeyboardKey[] + key: KeyboardKey +} diff --git a/src/js/types/ScreenNotice.ts b/src/js/types/ScreenNotice.ts new file mode 100644 index 00000000..9b2c52a2 --- /dev/null +++ b/src/js/types/ScreenNotice.ts @@ -0,0 +1 @@ +export type ScreenNotice = ['error' | 'updated', string] diff --git a/js/types/SelectOption.ts b/src/js/types/SelectOption.ts similarity index 75% rename from js/types/SelectOption.ts rename to src/js/types/SelectOption.ts index 82339a5b..918fd1a5 100644 --- a/js/types/SelectOption.ts +++ b/src/js/types/SelectOption.ts @@ -1,4 +1,4 @@ -import { GroupBase } from 'react-select' +import type { GroupBase } from 'react-select' export interface SelectOption { readonly value: T diff --git a/js/types/Shortcodes.ts b/src/js/types/Shortcodes.ts similarity index 92% rename from js/types/Shortcodes.ts rename to src/js/types/Shortcodes.ts index 013ea7de..edb63d99 100644 --- a/js/types/Shortcodes.ts +++ b/src/js/types/Shortcodes.ts @@ -5,6 +5,7 @@ export interface SourceShortcodeAtts { export interface ContentShortcodeAtts { id: string + name: string php: boolean format: boolean shortcodes: boolean diff --git a/js/types/Snippet.ts b/src/js/types/Snippet.ts similarity index 100% rename from js/types/Snippet.ts rename to src/js/types/Snippet.ts index 8b4844a1..c03c8c4a 100644 --- a/js/types/Snippet.ts +++ b/src/js/types/Snippet.ts @@ -13,6 +13,9 @@ export interface Snippet { code_error?: [string, number] | null } +export type SnippetType = typeof SNIPPET_TYPES[number] +export type SnippetScope = typeof SNIPPET_SCOPES[number] + export const SNIPPET_SCOPES = [ 'global', 'admin', 'front-end', 'single-use', 'content', 'head-content', 'footer-content', @@ -22,9 +25,6 @@ export const SNIPPET_SCOPES = [ export const SNIPPET_TYPES = ['php', 'html', 'css', 'js'] -export type SnippetType = typeof SNIPPET_TYPES[number] -export type SnippetScope = typeof SNIPPET_SCOPES[number] - export const SNIPPET_TYPE_SCOPES: Record = { php: ['global', 'admin', 'front-end', 'single-use'], html: ['content', 'head-content', 'footer-content'], diff --git a/src/js/types/SnippetsExport.ts b/src/js/types/SnippetsExport.ts new file mode 100644 index 00000000..5eff6a6f --- /dev/null +++ b/src/js/types/SnippetsExport.ts @@ -0,0 +1,7 @@ +import type { Snippet } from './Snippet' + +export interface SnippetsExport { + generator: string + date_created: string + snippets: Snippet[] +} diff --git a/js/types/Window.ts b/src/js/types/Window.ts similarity index 75% rename from js/types/Window.ts rename to src/js/types/Window.ts index 3fc62e0c..c409555c 100644 --- a/js/types/Window.ts +++ b/src/js/types/Window.ts @@ -1,7 +1,8 @@ -import tinymce from 'tinymce' -import { Snippet } from './Snippet' -import { CodeEditorInstance, EditorOption, WordPressCodeEditor } from './WordPressCodeEditor' -import { WordPressEditor } from './WordPressEditor' +import type Prism from 'prismjs' +import type tinymce from 'tinymce' +import type { Snippet } from './Snippet' +import type { CodeEditorInstance, EditorOption, WordPressCodeEditor } from './WordPressCodeEditor' +import type { WordPressEditor } from './WordPressEditor' declare global { interface Window { @@ -15,6 +16,7 @@ declare global { readonly wpActiveEditor?: string code_snippets_editor_preview?: CodeEditorInstance readonly code_snippets_editor_settings: EditorOption[] + CODE_SNIPPETS_PRISM?: typeof Prism readonly CODE_SNIPPETS?: { isLicensed: boolean restAPI: { @@ -29,19 +31,20 @@ declare global { manage: string addNew: string edit: string + connectCloud: string } } readonly CODE_SNIPPETS_EDIT?: { snippet: Snippet + pageTitleActions: Record isPreview: boolean - enableTags: boolean + isLicensed: boolean enableDownloads: boolean scrollToNotices: boolean extraSaveButtons: boolean activateByDefault: boolean enableDescription: boolean editorTheme: string - pageTitleActions: Record tagOptions: { enabled: boolean allowSpaces: boolean diff --git a/js/types/WordPressCodeEditor.ts b/src/js/types/WordPressCodeEditor.ts similarity index 91% rename from js/types/WordPressCodeEditor.ts rename to src/js/types/WordPressCodeEditor.ts index 0da788cf..14021b26 100644 --- a/js/types/WordPressCodeEditor.ts +++ b/src/js/types/WordPressCodeEditor.ts @@ -1,4 +1,4 @@ -import { Editor, EditorConfiguration } from 'codemirror' +import type { Editor, EditorConfiguration } from 'codemirror' export interface EditorOption { name: string diff --git a/js/types/WordPressEditor.ts b/src/js/types/WordPressEditor.ts similarity index 94% rename from js/types/WordPressEditor.ts rename to src/js/types/WordPressEditor.ts index daca075a..a9952cf1 100644 --- a/js/types/WordPressEditor.ts +++ b/src/js/types/WordPressEditor.ts @@ -1,4 +1,4 @@ -import tinymce from 'tinymce' +import type tinymce from 'tinymce' export interface VisualEditorSettings { tinymce: boolean | tinymce.Settings & { diff --git a/js/types/wp/Page.ts b/src/js/types/wp/Page.ts similarity index 83% rename from js/types/wp/Page.ts rename to src/js/types/wp/Page.ts index 7829300f..437aa76e 100644 --- a/js/types/wp/Page.ts +++ b/src/js/types/wp/Page.ts @@ -1,4 +1,4 @@ -import { Post } from './Post' +import type { Post } from './Post' export const PAGES_ENDPOINT = '/wp/v2/pages' diff --git a/js/types/wp/Post.ts b/src/js/types/wp/Post.ts similarity index 100% rename from js/types/wp/Post.ts rename to src/js/types/wp/Post.ts diff --git a/js/types/wp/PostType.ts b/src/js/types/wp/PostType.ts similarity index 100% rename from js/types/wp/PostType.ts rename to src/js/types/wp/PostType.ts diff --git a/js/types/wp/Term.ts b/src/js/types/wp/Term.ts similarity index 100% rename from js/types/wp/Term.ts rename to src/js/types/wp/Term.ts diff --git a/js/types/wp/User.ts b/src/js/types/wp/User.ts similarity index 100% rename from js/types/wp/User.ts rename to src/js/types/wp/User.ts diff --git a/src/js/utils/Linter.ts b/src/js/utils/Linter.ts new file mode 100644 index 00000000..db0369e4 --- /dev/null +++ b/src/js/utils/Linter.ts @@ -0,0 +1,170 @@ +/** + * Based on work licensed under the BSD 3-Clause license. + * + * Copyright (c) 2017, glayzzle + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import { Engine } from 'php-parser' +import CodeMirror from 'codemirror' +import type { Block, Location, Node } from 'php-parser' + +export interface Annotation { + message: string + severity: string + from: CodeMirror.Position + to: CodeMirror.Position +} + +export interface Identifier extends Node { + name: string +} + +export interface Declaration extends Node { + name: Identifier | string +} + +export class Linter { + private readonly code: string + + private readonly function_names: Set + + private readonly class_names: Set + + public readonly annotations: Annotation[] + + /** + * Constructor. + * @param code + */ + constructor(code: string) { + this.code = code + this.annotations = [] + + this.function_names = new Set() + this.class_names = new Set() + } + + /** + * Lint the provided code. + */ + lint() { + const parser = new Engine({ + parser: { + suppressErrors: true, + version: 800 + }, + ast: { + withPositions: true + } + }) + + try { + const program = parser.parseEval(this.code) + + if (0 < program.errors.length) { + for (const error of program.errors) { + this.annotate(error.message, error.loc) + } + } + + this.visit(program) + } catch (error) { + console.error(error) + } + } + + /** + * Visit nodes recursively. + * @param node + */ + visit(node: Node) { + if (node.kind) { + this.validate(node) + } + + if ('children' in node) { + const block = node + for (const child of block.children) { + this.visit(child) + } + } + } + + /** + * Check whether a given identifier has already been defined, creating an annotation if so. + * @param identifier + * @param registry + * @param label + */ + checkDuplicateIdentifier(identifier: Identifier, registry: Set, label: string) { + if (registry.has(identifier.name)) { + this.annotate(`Cannot redeclare ${label} ${identifier.name}()`, identifier.loc) + } else { + registry.add(identifier.name) + } + } + + /** + * Perform additional validations on nodes. + * @param node + */ + validate(node: Node) { + const decl = node + const ident = decl.name + + if (!('name' in decl && 'name' in ident) || 'identifier' !== ident.kind) { + return + } + + if ('function' === node.kind) { + this.checkDuplicateIdentifier(ident, this.function_names, 'function') + } else if ('class' === node.kind) { + this.checkDuplicateIdentifier(ident, this.class_names, 'class') + } + } + + /** + * Create a lint annotation. + * @param message + * @param location + * @param severity + */ + annotate(message: string, location: Location | null, severity = 'error') { + const [start, end] = location + ? location.end.offset < location.start.offset ? [location.end, location.start] : [location.start, location.end] + : [{ line: 0, column: 0 }, { line: 0, column: 0 }] + + this.annotations.push({ + message, + severity, + from: CodeMirror.Pos(start.line - 1, start.column), + to: CodeMirror.Pos(end.line - 1, end.column) + }) + } +} diff --git a/src/js/utils/errors.ts b/src/js/utils/errors.ts new file mode 100644 index 00000000..c2961a8b --- /dev/null +++ b/src/js/utils/errors.ts @@ -0,0 +1,3 @@ +export const handleUnknownError = (error: unknown) => { + console.error(error) +} diff --git a/js/utils/files.ts b/src/js/utils/files.ts similarity index 82% rename from js/utils/files.ts rename to src/js/utils/files.ts index 2654307f..30617a1b 100644 --- a/js/utils/files.ts +++ b/src/js/utils/files.ts @@ -1,5 +1,5 @@ -import { Snippet } from '../types/Snippet' import { getSnippetType } from './snippets' +import type { Snippet } from '../types/Snippet' const SECOND_IN_MS = 1000 const TIMEOUT_SECONDS = 40 @@ -28,7 +28,9 @@ export const downloadSnippetExportFile = ( ) => { const [ext, mimeType] = MIME_INFO[type ?? getSnippetType(scope)] - const title = name.toLowerCase().replace(/[^\w-]+/g, '-') ?? `snippet-${id}` + const sanitizedName = name.toLowerCase().replace(/[^\w-]+/g, '-').trim() + + const title = '' === sanitizedName ? `snippet-${id}` : sanitizedName const filename = `${title}.code-snippets.${ext}` downloadAsFile(content, filename, mimeType) diff --git a/src/js/utils/general.ts b/src/js/utils/general.ts new file mode 100644 index 00000000..c073673b --- /dev/null +++ b/src/js/utils/general.ts @@ -0,0 +1,8 @@ +export const isNetworkAdmin = (): boolean => + window.pagenow.endsWith('-network') + +export const isMacOS = (): boolean => + null !== /mac/i.exec(window.navigator.userAgent) + +export const isLicensed = (): boolean => + !!window.CODE_SNIPPETS?.isLicensed diff --git a/src/js/utils/restAPI.ts b/src/js/utils/restAPI.ts new file mode 100644 index 00000000..774c6b8b --- /dev/null +++ b/src/js/utils/restAPI.ts @@ -0,0 +1,20 @@ +import axios from 'axios' +import { trimLeadingChar, trimTrailingChar } from './text' +import type { AxiosRequestConfig, AxiosResponse } from 'axios' + +const REST_BASE = window.CODE_SNIPPETS?.restAPI.base ?? '' + +const getRestUrl = (endpoint: string): string => + `${trimTrailingChar(REST_BASE, '/')}/${trimLeadingChar(endpoint, '/')}` + +const GET_CACHE: Record | undefined> = {} + +export const getCached = (endpoint: string, refresh = false, config?: AxiosRequestConfig): Promise> => + !refresh && GET_CACHE[endpoint] + ? Promise.resolve(> GET_CACHE[endpoint]) + : axios + .get, D>(getRestUrl(endpoint), config) + .then(response => { + GET_CACHE[endpoint] = response + return response + }) diff --git a/js/utils/shortcodes.ts b/src/js/utils/shortcodes.ts similarity index 100% rename from js/utils/shortcodes.ts rename to src/js/utils/shortcodes.ts diff --git a/js/utils/snippets.ts b/src/js/utils/snippets.ts similarity index 53% rename from js/utils/snippets.ts rename to src/js/utils/snippets.ts index 7f8e929b..1f199476 100644 --- a/js/utils/snippets.ts +++ b/src/js/utils/snippets.ts @@ -1,5 +1,5 @@ -import { Snippet, SnippetScope, SnippetType } from '../types/Snippet' import { isNetworkAdmin } from './general' +import type { Snippet, SnippetScope, SnippetType } from '../types/Snippet' const PRO_TYPES: SnippetType[] = ['css', 'js'] @@ -17,22 +17,22 @@ export const createEmptySnippet = (): Snippet => ({ priority: 10 }) -export const getSnippetType = (snippet: Snippet | SnippetScope): SnippetType => { - const scope = 'string' === typeof snippet ? snippet : snippet.scope +export const getSnippetType = (snippetOrScope: Snippet | SnippetScope): SnippetType => { + const scope = 'string' === typeof snippetOrScope ? snippetOrScope : snippetOrScope.scope - if (scope.endsWith('-css')) { - return 'css' - } + switch (true) { + case scope.endsWith('-css'): + return 'css' - if (scope.endsWith('-js')) { - return 'js' - } + case scope.endsWith('-js'): + return 'js' - if (scope.endsWith('content')) { - return 'html' - } + case scope.endsWith('content'): + return 'html' - return 'php' + default: + return 'php' + } } export const isProSnippet = (snippet: Snippet | SnippetScope): boolean => @@ -40,6 +40,3 @@ export const isProSnippet = (snippet: Snippet | SnippetScope): boolean => export const isProType = (type: SnippetType): boolean => PRO_TYPES.includes(type) - -export const isLicensed = (): boolean => - !!window.CODE_SNIPPETS?.isLicensed diff --git a/src/js/utils/text.ts b/src/js/utils/text.ts new file mode 100644 index 00000000..aa483698 --- /dev/null +++ b/src/js/utils/text.ts @@ -0,0 +1,16 @@ +export const toCamelCase = (text: string): string => + text.replace(/-(?[a-z])/g, (_, letter: string) => letter.toUpperCase()) + +export const trimLeadingChar = (text: string, character: string): string => + character === text.charAt(0) ? text.slice(1) : text + +export const trimTrailingChar = (text: string, character: string): string => + character === text.charAt(text.length - 1) ? text.slice(0, -1) : text + +export const truncateWords = (text: string, wordCount: number): string => { + const words = text.trim().split(/\s+/) + + return words.length > wordCount + ? `${words.slice(0, wordCount).join(' ')}…` + : text +} diff --git a/license.txt b/src/license.txt similarity index 100% rename from license.txt rename to src/license.txt diff --git a/php/admin-menus/class-admin-menu.php b/src/php/admin-menus/class-admin-menu.php similarity index 80% rename from php/admin-menus/class-admin-menu.php rename to src/php/admin-menus/class-admin-menu.php index 7bfd0472..2e731eb0 100644 --- a/php/admin-menus/class-admin-menu.php +++ b/src/php/admin-menus/class-admin-menu.php @@ -12,35 +12,35 @@ abstract class Admin_Menu { * * @var string */ - public $name; + public string $name; /** * The label shown in the admin menu. * * @var string */ - public $label; + public string $label; /** * The text used for the page title. * * @var string */ - public $title; + public string $title; /** * The base slug for the top-level admin menu. * * @var string */ - protected $base_slug; + protected string $base_slug; /** * The slug for this admin menu. * * @var string */ - protected $slug; + protected string $slug; /** * Constructor. @@ -122,36 +122,6 @@ protected function print_messages() { // None required by default. } - /** - * Retrieve a result message based on a posted status - * - * @param array $messages List of possible messages to display. - * @param string $request_var Name of $_REQUEST variable to check. - * @param string $class_name Class to use on buttons. Default 'updated'. - * - * @return bool Whether a result message was printed. - */ - protected function print_result_message( array $messages, string $request_var = 'result', string $class_name = 'updated' ): bool { - - if ( empty( $_REQUEST[ $request_var ] ) ) { - return false; - } - - $result = sanitize_key( $_REQUEST[ $request_var ] ); - - if ( isset( $messages[ $result ] ) ) { - printf( - '

    %1$s

    ', - wp_kses_post( $messages[ $result ] ), - esc_attr( $class_name ) - ); - - return true; - } - - return false; - } - /** * Executed when the admin page is loaded */ @@ -184,7 +154,7 @@ abstract public function enqueue_assets(); * * @return array Link labels keyed to link URLs. */ - protected function page_title_action_links( array $actions ): array { + public function page_title_action_links( array $actions ): array { $plugin = code_snippets(); $links = []; @@ -229,7 +199,7 @@ protected function page_title_action_links( array $actions ): array { * * @param array $actions List of actions to render as links, as array values. */ - protected function render_page_title_actions( array $actions ) { + public function render_page_title_actions( array $actions ) { foreach ( $this->page_title_action_links( $actions ) as $label => $url ) { printf( '%s', esc_url( $url ), esc_html( $label ) ); } diff --git a/php/admin-menus/class-edit-menu.php b/src/php/admin-menus/class-edit-menu.php similarity index 95% rename from php/admin-menus/class-edit-menu.php rename to src/php/admin-menus/class-edit-menu.php index 9cf9e6c3..92141748 100644 --- a/php/admin-menus/class-edit-menu.php +++ b/src/php/admin-menus/class-edit-menu.php @@ -5,7 +5,7 @@ use function Code_Snippets\Settings\get_setting; /** - * This class handles the add/edit menu + * This class handles the add/edit menu. */ class Edit_Menu extends Admin_Menu { @@ -25,10 +25,12 @@ class Edit_Menu extends Admin_Menu { * @var Snippet|null * @see Edit_Menu::load_snippet_data() */ - protected $snippet = null; + protected ?Snippet $snippet = null; /** - * Constructor + * Constructor. + * + * @return void */ public function __construct() { parent::__construct( @@ -39,7 +41,9 @@ public function __construct() { } /** - * Register action and filter hooks + * Register action and filter hooks. + * + * @return void */ public function run() { parent::run(); @@ -68,7 +72,9 @@ public function register() { } /** - * Executed when the menu is loaded + * Executed when the menu is loaded. + * + * @return void */ public function load() { parent::load(); @@ -138,6 +144,8 @@ public function load_snippet_data() { /** * Enqueue assets for the edit menu + * + * @return void */ public function enqueue_assets() { $plugin = code_snippets(); diff --git a/php/admin-menus/class-import-menu.php b/src/php/admin-menus/class-import-menu.php similarity index 90% rename from php/admin-menus/class-import-menu.php rename to src/php/admin-menus/class-import-menu.php index c321356a..3c3b2565 100644 --- a/php/admin-menus/class-import-menu.php +++ b/src/php/admin-menus/class-import-menu.php @@ -137,15 +137,22 @@ protected function print_messages() { esc_html_e( 'No snippets were imported.', 'code-snippets' ); } else { - /* translators: 1: amount of snippets imported, 2: link to Snippets menu */ - $text = _n( - 'Successfully imported %1$d snippet. Have fun!', - 'Successfully imported %1$d snippets. Have fun!', - $imported, - 'code-snippets' + /* translators: %d: amount of snippets imported */ + printf( + _n( + 'Successfully imported %d snippet.', + 'Successfully imported %d snippets.', + $imported, + 'code-snippets' + ), + '' . number_format_i18n( $imported ) . '', ); - printf( wp_kses_post( $text ), esc_html( $imported ), esc_url( code_snippets()->get_menu_url( 'manage' ) ) ); + printf( + ' %s', + esc_url( code_snippets()->get_menu_url( 'manage' ) ), + esc_html__( 'Have fun!', 'code-snippets' ) + ); } echo '

  • '; diff --git a/php/admin-menus/class-manage-menu.php b/src/php/admin-menus/class-manage-menu.php similarity index 83% rename from php/admin-menus/class-manage-menu.php rename to src/php/admin-menus/class-manage-menu.php index 8c700661..4e90b8b2 100644 --- a/php/admin-menus/class-manage-menu.php +++ b/src/php/admin-menus/class-manage-menu.php @@ -14,24 +14,23 @@ class Manage_Menu extends Admin_Menu { /** - * Holds the list table class + * Instance of the list table class. * * @var List_Table */ - public $list_table; + public List_Table $list_table; /** * Instance of the cloud list table class for search results. * * @var Cloud_Search_List_Table */ - public $cloud_search_list_table; + public Cloud_Search_List_Table $cloud_search_list_table; /** * Class constructor */ public function __construct() { - parent::__construct( 'manage', _x( 'All Snippets', 'menu label', 'code-snippets' ), @@ -173,15 +172,12 @@ public function register_compact_menu() { public function load() { parent::load(); - /* Load the contextual help tabs */ $contextual_help = new Contextual_Help( 'manage' ); $contextual_help->load(); - // Initialize the search cloud list table class. $this->cloud_search_list_table = new Cloud_Search_List_Table(); $this->cloud_search_list_table->prepare_items(); - /* Initialize the list table class */ $this->list_table = new List_Table(); $this->list_table->prepare_items(); } @@ -210,8 +206,8 @@ public function enqueue_assets() { wp_set_script_translations( 'code-snippets-manage-js', 'code-snippets' ); - if ( 'cloud_search' === $this->get_current_type() ) { - Frontend::enqueue_all_prism_themes(); + if ( 'cloud' === $this->get_current_type() || 'cloud_search' === $this->get_current_type() ) { + Front_End::enqueue_all_prism_themes(); } } @@ -232,36 +228,18 @@ protected function get_current_type(): string { * @return void */ public function print_pro_message() { - echo '', esc_html_x( 'Pro', 'go pro badge', 'code-snippets' ), ''; + if ( ! code_snippets()->licensing->is_licensed() ) { + echo '', esc_html__( 'Pro', 'code-snippets' ), ''; + } } /** * Print the status and error messages + * + * @return void */ protected function print_messages() { - // Output a warning if safe mode is active. - if ( defined( 'CODE_SNIPPETS_SAFE_MODE' ) && CODE_SNIPPETS_SAFE_MODE ) { - echo '

    '; - echo wp_kses_post( __( 'Warning: Safe mode is active and snippets will not execute! Remove the CODE_SNIPPETS_SAFE_MODE constant from wp-config.php to turn off safe mode. Help', 'code-snippets' ) ); - echo '

    '; - } - - $this->print_result_message( - apply_filters( - 'code_snippets/manage/result_messages', - array( - 'executed' => __( 'Snippet executed.', 'code-snippets' ), - 'activated' => __( 'Snippet activated.', 'code-snippets' ), - 'activated-multi' => __( 'Selected snippets activated.', 'code-snippets' ), - 'deactivated' => __( 'Snippet deactivated.', 'code-snippets' ), - 'deactivated-multi' => __( 'Selected snippets deactivated.', 'code-snippets' ), - 'deleted' => __( 'Snippet deleted.', 'code-snippets' ), - 'deleted-multi' => __( 'Selected snippets deleted.', 'code-snippets' ), - 'cloned' => __( 'Snippet cloned.', 'code-snippets' ), - 'cloned-multi' => __( 'Selected snippets cloned.', 'code-snippets' ), - ) - ) - ); + $this->render_view( 'partials/list-table-notices' ); } /** diff --git a/php/admin-menus/class-settings-menu.php b/src/php/admin-menus/class-settings-menu.php similarity index 97% rename from php/admin-menus/class-settings-menu.php rename to src/php/admin-menus/class-settings-menu.php index 013d398b..aa87d4dc 100644 --- a/php/admin-menus/class-settings-menu.php +++ b/src/php/admin-menus/class-settings-menu.php @@ -58,7 +58,7 @@ public function enqueue_assets() { wp_enqueue_style( 'code-snippets-settings', plugins_url( 'dist/settings.css', $plugin->file ), - [], + [ 'code-editor' ], $plugin->version ); } @@ -135,7 +135,6 @@ public function render() { settings_fields( OPTION_GROUP ); $this->do_settings_tabs(); - ?>

    ', esc_attr( $section['id'] ) ); + printf( '

    {label} {(Array.isArray(mod) ? mod : [mod]).map(modifier => - 'Ctrl' === modifier || 'Cmd' === modifier ? - <> - {keys.Ctrl} - {keys.Cmd} - {SEP} - : - 'Option' === mod ? - - {keys.Option}{SEP} - : - <>{keys[modifier]}{SEP} + + + )} - {keys[key]} + {KEYBOARD_KEYS[key]}
    ', esc_attr( $section['id'] ) ); do_settings_fields( self::SETTINGS_PAGE, $section['id'] ); - echo '
    '; + echo '
    '; } } diff --git a/src/php/admin-menus/class-welcome-menu.php b/src/php/admin-menus/class-welcome-menu.php new file mode 100644 index 00000000..ceb816ac --- /dev/null +++ b/src/php/admin-menus/class-welcome-menu.php @@ -0,0 +1,88 @@ +api = $api; + } + + /** + * Enqueue assets necessary for the welcome menu. + * + * @return void + */ + public function enqueue_assets() { + wp_enqueue_style( + 'code-snippets-welcome', + plugins_url( 'dist/welcome.css', PLUGIN_FILE ), + [], + PLUGIN_VERSION + ); + } + + /** + * Retrieve a list of links to display in the page header. + * + * @return array + */ + protected function get_header_links(): array { + $links = [ + 'cloud' => [ + 'url' => 'https://codesnippets.cloud', + 'icon' => 'cloud', + 'label' => __( 'Cloud', 'code-snippets' ), + ], + 'resources' => [ + 'url' => 'https://help.codesnippets.pro/', + 'icon' => 'sos', + 'label' => __( 'Support', 'code-snippets' ), + ], + 'facebook' => [ + 'url' => 'https://www.facebook.com/groups/282962095661875/', + 'icon' => 'facebook', + 'label' => __( 'Community', 'code-snippets' ), + ], + 'discord' => [ + 'url' => 'https://snipco.de/discord', + 'icon' => 'discord', + 'label' => __( 'Discord', 'code-snippets' ), + ], + ]; + + if ( ! code_snippets()->licensing->is_licensed() ) { + $links['pro'] = [ + 'url' => 'https://codesnippets.pro/pricing/', + 'icon' => 'cart', + 'label' => __( 'Upgrade to Pro', 'code-snippets' ), + ]; + } + + return $links; + } +} diff --git a/php/class-active-snippets.php b/src/php/class-active-snippets.php similarity index 97% rename from php/class-active-snippets.php rename to src/php/class-active-snippets.php index c6926d82..7c1de751 100644 --- a/php/class-active-snippets.php +++ b/src/php/class-active-snippets.php @@ -1,5 +1,4 @@ */ - public $menus = array(); + public array $menus = array(); + + /** + * Welcome_API class instance. + * + * @var Welcome_API + */ + public Welcome_API $welcome_api; /** * Class constructor */ public function __construct() { if ( is_admin() ) { + $this->welcome_api = new Welcome_API(); $this->run(); } } @@ -39,6 +49,8 @@ public function load_classes() { $this->menus['settings'] = new Settings_Menu(); } + $this->menus['welcome'] = new Welcome_Menu( $this->welcome_api ); + foreach ( $this->menus as $menu ) { $menu->run(); } @@ -93,31 +105,33 @@ public function plugin_action_links( array $actions, string $plugin_file ): arra $format = '%3$s'; - return array_merge( + $actions = array_merge( [ sprintf( $format, esc_url( code_snippets()->get_menu_url( 'settings' ) ), - esc_html__( 'Change plugin settings', 'code-snippets' ), + esc_attr__( 'Change plugin settings', 'code-snippets' ), esc_html__( 'Settings', 'code-snippets' ) ), sprintf( $format, esc_url( code_snippets()->get_menu_url() ), - esc_html__( 'Manage your existing snippets', 'code-snippets' ), + esc_attr__( 'Manage your existing snippets', 'code-snippets' ), esc_html__( 'Snippets', 'code-snippets' ) ), ], - $actions, - [ - sprintf( - '%3$s', - 'https://snipco.de/JE2i', - esc_attr__( 'Upgrade to Code Snippets Pro', 'code-snippets' ), - esc_html__( 'Go Pro', 'code-snippets' ) - ), - ] + $actions ); + + if ( ! code_snippets()->licensing->is_licensed() ) { + $actions[] = sprintf( + '%3$s', + 'https://snipco.de/JE2i', + esc_attr__( 'Upgrade to Code Snippets Pro', 'code-snippets' ), + esc_attr__( 'Upgrade to Pro', 'code-snippets' ) + ); + } + return $actions; } /** @@ -229,29 +243,34 @@ public function debug_information( array $info ): array { public function print_notices() { global $current_user; - $key = 'ignore_code_snippets_survey_message'; - $dismissed = get_user_meta( $current_user->ID, $key ); + if ( apply_filters( 'code_snippets/hide_welcome_banner', false ) ) { + return; + } + + $meta_key = 'ignore_code_snippets_survey_message'; + $dismissed = get_user_meta( $current_user->ID, $meta_key ); - if ( isset( $_GET[ $key ], $_REQUEST['_wpnonce'] ) && wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), $key ) ) { - add_user_meta( $current_user->ID, $key, sanitize_key( wp_unslash( $_GET[ $key ] ) ) ); + if ( isset( $_GET[ $meta_key ], $_REQUEST['_wpnonce'] ) && wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), $meta_key ) ) { + add_user_meta( $current_user->ID, $meta_key, sanitize_key( wp_unslash( $_GET[ $meta_key ] ) ) ); return; } - $now = new DateTime(); - $period_start = new DateTime( '2023-11-19 00:00:00' ); - $period_end = new DateTime( '2023-12-01 00:00:00' ); + $welcome = $this->welcome_api->get_banner(); - if ( ! in_array( 'bf23', $dismissed, true ) && $now > $period_start && $now < $period_end ) { - $notice = 'bf23'; - $action_url = 'https://snipco.de/I_iW'; - $action_label = __( 'Learn more', 'code-snippets' ); - $text = __( "Don't miss out on our biggest Black Friday sale ever! Get 50% off on our plans.", 'code-snippets' ); + try { + $now = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) ); + } catch ( Exception $e ) { + $now = $welcome['start_datetime']; + } + + if ( isset( $welcome['key'] ) && ! in_array( $welcome['key'], $dismissed, true ) && + ( empty( $welcome['start_datetime'] ) || $now >= $welcome['start_datetime'] ) && + ( empty( $welcome['end_datetime'] ) || $now <= $welcome['end_datetime'] ) ) { + $notice = $welcome['key']; - } elseif ( ! in_array( 'pro', $dismissed, true ) ) { - $notice = 'pro'; - $action_url = 'https://codesnippets.pro/pricing/'; - $action_label = __( 'Upgrade now', 'code-snippets' ); - $text = __( 'Code Snippets Pro is here! Find more about the features in Pro and our current offers.', 'code-snippets' ); + $text = $welcome['text_free']; + $action_url = $welcome['action_url_free']; + $action_label = $welcome['action_label_free']; } elseif ( ! in_array( 'survey', $dismissed, true ) && ! in_array( 'true', $dismissed, true ) ) { $notice = 'survey'; @@ -267,7 +286,7 @@ public function print_notices() { esc_attr( sanitize_key( $notice ) ) ); - echo wp_kses( $text, [ 'strong' => [] ] ); + echo wp_kses_post( $text ); printf( '%s', @@ -277,8 +296,8 @@ public function print_notices() { printf( '%s', - esc_url( wp_nonce_url( add_query_arg( $key, $notice ), $key ) ), - esc_attr__( 'Dismiss', 'code-snippets' ) + esc_url( wp_nonce_url( add_query_arg( $meta_key, $notice ), $meta_key ) ), + esc_html__( 'Dismiss', 'code-snippets' ) ); echo '

    '; @@ -294,10 +313,13 @@ public function print_notices() { * @return void */ public static function render_snippet_type_tab( string $type_name, string $label, string $current_type = '' ) { + $cloud_tabs = [ 'cloud', 'cloud_search', 'bundles' ]; + $nav_tab_inactive = false; + if ( $type_name === $current_type ) { printf( '', esc_attr( $type_name ) ); - } elseif ( Plugin::is_pro_type( $type_name ) ) { + } elseif ( ! code_snippets()->licensing->is_licensed() && Plugin::is_pro_type( $type_name ) ) { printf( '', esc_attr( $type_name ), @@ -307,14 +329,25 @@ public static function render_snippet_type_tab( string $type_name, string $label } else { $current_url = remove_query_arg( [ 'cloud_select', 'cloud_search' ] ); + if ( in_array( $type_name, $cloud_tabs, true ) && ! code_snippets()->cloud_api->is_cloud_key_verified() ) { + $nav_tab_inactive = true; + } + printf( - '', + '', + $nav_tab_inactive ? 'nav-tab-inactive' : '', esc_url( add_query_arg( 'type', $type_name, $current_url ) ), esc_attr( $type_name ) ); } - echo esc_html( $label ); + if ( 'all' === $type_name ) { + $label_class = 'all-snippets-label'; + } else { + $label_class = 'snippet-label'; + } + + echo '', esc_html( $label ), ''; switch ( $type_name ) { case 'all': diff --git a/php/class-contextual-help.php b/src/php/class-contextual-help.php similarity index 82% rename from php/class-contextual-help.php rename to src/php/class-contextual-help.php index a44d411e..267d55ff 100644 --- a/php/class-contextual-help.php +++ b/src/php/class-contextual-help.php @@ -18,7 +18,7 @@ class Contextual_Help { * * @var WP_Screen */ - public $screen; + public WP_Screen $screen; /** * Name of current screen @@ -27,7 +27,7 @@ class Contextual_Help { * * @var string */ - public $screen_name; + public string $screen_name; /** * Class constructor @@ -44,8 +44,18 @@ public function __construct( string $screen_name ) { public function load() { $this->screen = get_current_screen(); - if ( method_exists( $this, "load_{$this->screen_name}_help" ) ) { - call_user_func( array( $this, "load_{$this->screen_name}_help" ) ); + switch ( $this->screen_name ) { + case 'manage': + $this->load_manage_help(); + break; + + case 'edit': + $this->load_edit_help(); + break; + + case 'import': + $this->load_import_help(); + break; } $this->load_help_sidebar(); @@ -62,13 +72,19 @@ private function load_help_sidebar() { 'https://codesnippets.pro' => __( 'Plugin Website', 'code-snippets' ), ]; - $contents = '

    ' . __( 'For more information:', 'code-snippets' ) . "

    \n"; + $kses = [ + 'p' => [], + 'strong' => [], + 'a' => [ 'href' => [] ], + ]; + + $contents = sprintf( "

    %s

    \n", esc_html__( 'For more information:', 'code-snippets' ) ); foreach ( $sidebar_links as $url => $label ) { $contents .= "\n" . sprintf( '

    %s

    ', esc_url( $url ), esc_html( $label ) ); } - $this->screen->set_help_sidebar( wp_kses_post( $contents ) ); + $this->screen->set_help_sidebar( wp_kses( $contents, $kses ) ); } /** @@ -126,7 +142,8 @@ private function load_manage_help() { [ __( 'Be sure to check your snippets for errors before you activate them, as a faulty snippet could bring your whole blog down. If your site starts doing strange things, deactivate all your snippets and activate them one at a time.', 'code-snippets' ), __( "If something goes wrong with a snippet, and you can't use WordPress, you can cause all snippets to stop executing by turning on safe mode.", 'code-snippets' ), - __( 'You can find out how to enable safe mode in the Code Snippets Pro Docs.', 'code-snippets' ), + /* translators: %s: URL to Code Snippets Pro Docs */ + sprintf( __( 'You can find out how to enable safe mode in the Code Snippets Pro Docs.', 'code-snippets' ), 'https://help.codesnippets.pro/article/12-safe-mode' ) ] ); } @@ -141,7 +158,8 @@ private function load_edit_help() { [ $this->get_intro_text() . __( 'Here you can add a new snippet, or edit an existing one.', 'code-snippets' ), - __( "If you're not sure about the types of snippets you can add, take a look at the Code Snippets Pro Docs for inspiration.", 'code-snippets' ), + /* translators: %s: URL to Code Snippets Pro Docs */ + sprintf( __( "If you're not sure about the types of snippets you can add, take a look at the Code Snippets Pro Docs for inspiration.", 'code-snippets' ), 'https://help.codesnippets.pro/collection/2-adding-snippets' ), ] ); @@ -150,7 +168,7 @@ private function load_edit_help() { __( 'Adding Snippets', 'code-snippets' ), [ __( 'You need to fill out the name and code fields for your snippet to be added. While the description field will add more information about how your snippet works, what is does and where you found it, it is completely optional.', 'code-snippets' ), - __( 'Please be sure to check that your snippet is valid PHP code and will not produce errors before adding it through this page. While doing so will not become active straight away, it will help to minimise the chance of a faulty snippet becoming active on your site.', 'code-snippets' ), + __( 'Please be sure to check that your snippet is valid PHP code and will not produce errors before adding it through this page. While doing so will not become active straight away, it will help to minimize the chance of a faulty snippet becoming active on your site.', 'code-snippets' ), ] ); } diff --git a/php/class-data-item.php b/src/php/class-data-item.php similarity index 90% rename from php/class-data-item.php rename to src/php/class-data-item.php index ffc25001..25cfe75b 100644 --- a/php/class-data-item.php +++ b/src/php/class-data-item.php @@ -16,21 +16,21 @@ abstract class Data_Item { * * @var array */ - protected $fields; + protected array $fields; /** * List of default values provided for fields. * * @var array */ - protected $default_values; + protected array $default_values; /** * Optional list of field name aliases to map when resolving a field name. * * @var array Field alias names keyed to actual field names. */ - protected $field_aliases; + protected array $field_aliases; /** * Class constructor. @@ -81,7 +81,13 @@ public function set_fields( $data ) { * @return array Field names keyed to current values. */ public function get_fields(): array { - return $this->fields; + $fields = []; + + foreach ( $this->get_allowed_fields() as $field_name ) { + $fields[ $field_name ] = $this->$field_name; + } + + return $fields; } /** @@ -90,15 +96,13 @@ public function get_fields(): array { * @return array */ public function get_modified_fields(): array { - $modified_fields = []; - - foreach ( $this->get_fields() as $field => $value ) { - if ( $value && $value !== $this->default_values[ $field ] ) { - $modified_fields[ $field ] = $value; - } - } - - return $modified_fields; + return array_filter( + $this->get_fields(), + function ( $value, $field ) { + return $value && $value !== $this->default_values[ $field ]; + }, + ARRAY_FILTER_USE_BOTH + ); } /** @@ -204,8 +208,8 @@ public function get_allowed_fields(): array { * @return bool true if the is allowed, false if invalid. */ public function is_allowed_field( string $field ): bool { - return $this->fields && array_key_exists( $field, $this->fields ) || - $this->field_aliases && array_key_exists( $field, $this->field_aliases ); + return ( $this->fields && array_key_exists( $field, $this->fields ) ) || + ( $this->field_aliases && array_key_exists( $field, $this->field_aliases ) ); } /** diff --git a/php/class-db.php b/src/php/class-db.php similarity index 99% rename from php/class-db.php rename to src/php/class-db.php index 11b31fd6..64ea5f47 100644 --- a/php/class-db.php +++ b/src/php/class-db.php @@ -24,14 +24,14 @@ class DB { * * @var string */ - public $table; + public string $table; /** * Network-wide table name. * * @var string */ - public $ms_table; + public string $ms_table; /** * Class constructor. diff --git a/src/php/class-licensing.php b/src/php/class-licensing.php new file mode 100644 index 00000000..97cf5d67 --- /dev/null +++ b/src/php/class-licensing.php @@ -0,0 +1,20 @@ + */ - public $statuses = [ 'all', 'active', 'inactive', 'recently_activated' ]; + public array $statuses = [ 'all', 'active', 'inactive', 'recently_activated' ]; /** * Column name to use when ordering the snippets list. * * @var string */ - protected $order_by; + protected string $order_by; /** * Direction to use when ordering the snippets list. Either 'asc' or 'desc'. * * @var string */ - protected $order_dir; + protected string $order_dir; /** * The constructor function for our class. @@ -135,7 +135,7 @@ public function wp_kses_desc( string $data ): string { * @return array Modified list of hidden columns. */ public function default_hidden_columns( array $hidden ): array { - $hidden[] = 'id'; + array_push( $hidden, 'id', 'code', 'cloud_id', 'revision' ); return $hidden; } @@ -271,7 +271,7 @@ private function get_snippet_action_links( Snippet $snippet ): array { * @return string Output for activation switch. */ protected function column_activate( Snippet $snippet ): string { - if ( $this->is_network && $snippet->shared_network || ( ! $this->is_network && $snippet->network && ! $snippet->shared_network ) ) { + if ( $this->is_network && ( $snippet->shared_network || ( ! $this->is_network && $snippet->network && ! $snippet->shared_network ) ) ) { return ''; } @@ -292,7 +292,7 @@ protected function column_activate( Snippet $snippet ): string { } return sprintf( - '  ', + '  ', esc_attr( $class ), esc_url( $this->get_action_link( $action, $snippet ) ), esc_attr( $label ) @@ -307,6 +307,7 @@ protected function column_activate( Snippet $snippet ): string { * @return string The content of the column to output. */ protected function column_name( Snippet $snippet ): string { + $row_actions = $this->row_actions( $this->get_snippet_action_links( $snippet ), apply_filters( 'code_snippets/list_table/row_actions_always_visible', true ) @@ -315,12 +316,11 @@ protected function column_name( Snippet $snippet ): string { $out = esc_html( $snippet->display_name ); if ( 'global' !== $snippet->scope ) { - $out .= ' '; + $out .= sprintf( ' ', $snippet->scope_icon ); } // Add a link to the snippet if it isn't an unreadable network-only snippet. if ( $this->is_network || ! $snippet->network || current_user_can( code_snippets()->get_network_cap_name() ) ) { - $out = sprintf( '%s', esc_attr( code_snippets()->get_snippet_edit_url( $snippet->id, $snippet->network ? 'network' : 'admin' ) ), @@ -333,11 +333,6 @@ protected function column_name( Snippet $snippet ): string { } // Return the name contents. - if ( code_snippets()->cloud_api->get_cloud_link( $snippet->id, 'local' ) ) { - // Make cloud icon grey to show it is from the cloud. - $out = '' . $out; - } - $out = apply_filters( 'code_snippets/list_table/column_name', $out, $snippet ); return $out . $row_actions; @@ -368,6 +363,8 @@ protected function column_cb( $item ): string { * @return string The column output. */ protected function column_tags( Snippet $snippet ): string { + + // Return now if there are no tags. if ( empty( $snippet->tags ) ) { return ''; } @@ -669,12 +666,10 @@ public static function required_form_fields( string $context = 'main' ) { * * @param int $id Snippet ID. * @param string $action Action to perform. - * @param string $scope Snippet scope; used for cache busting CSS and JS snippets. * * @return bool|string Result of performing action */ - private function perform_action( int $id, string $action, string $scope = '' ) { - + private function perform_action( int $id, string $action ) { switch ( $action ) { case 'activate': @@ -884,7 +879,13 @@ public function no_items() { * @return void */ private function fetch_shared_network_snippets() { + /** + * Table data. + * + * @var $snippets array + */ global $snippets; + $ids = get_site_option( 'shared_network_snippets' ); if ( ! is_multisite() || ! $ids ) { @@ -895,7 +896,6 @@ private function fetch_shared_network_snippets() { $limit = count( $snippets['all'] ); for ( $i = 0; $i < $limit; $i++ ) { - /** Snippet @var Snippet $snippet */ $snippet = &$snippets['all'][ $i ]; if ( in_array( $snippet->id, $ids, true ) ) { @@ -1018,10 +1018,12 @@ function ( Snippet $snippet ) use ( $type ) { } // Count the totals for each section. - $totals = array(); - foreach ( $snippets as $type => $list ) { - $totals[ $type ] = count( $list ); - } + $totals = array_map( + function ( $section_snippets ) { + return count( $section_snippets ); + }, + $snippets + ); // If the current status is empty, default to all. if ( empty( $snippets[ $status ] ) ) { @@ -1260,7 +1262,7 @@ public function search_notice() { // translators: 1: link URL, 2: link text. printf( ' %s', - esc_url( remove_query_arg( array( 's', 'tag' ) ) ), + esc_url( remove_query_arg( array( 's', 'tag', 'cloud_search' ) ) ), esc_html__( 'Clear Filters', 'code-snippets' ) ); } @@ -1294,9 +1296,9 @@ private function clone_snippets( array $ids ) { $snippets = get_snippets( $ids, $this->is_network ); foreach ( $snippets as $snippet ) { - // Copy all data from the previous snippet aside from the ID and active status. $snippet->id = 0; $snippet->active = false; + $snippet->cloud_id = ''; // translators: %s: snippet title. $snippet->name = sprintf( __( '%s [CLONE]', 'code-snippets' ), $snippet->name ); diff --git a/php/class-plugin.php b/src/php/class-plugin.php similarity index 86% rename from php/class-plugin.php rename to src/php/class-plugin.php index 494ee570..92bebfa3 100644 --- a/php/class-plugin.php +++ b/src/php/class-plugin.php @@ -17,49 +17,56 @@ class Plugin { * * @var string */ - public $version; + public string $version; /** * Filesystem path to the main plugin file * * @var string */ - public $file; + public string $file; /** * Database class * * @var DB */ - public $db; + public DB $db; /** * Administration area class * * @var Admin */ - public $admin; + public Admin $admin; /** * Front-end functionality class * - * @var Frontend + * @var Front_End */ - public $frontend; + public Front_End $front_end; /** * Class for managing cloud API actions. * * @var Cloud_API */ - public $cloud_api; + public Cloud_API $cloud_api; /** * Class for managing active snippets * * @var Active_Snippets */ - public $active_snippets; + public Active_Snippets $active_snippets; + + /** + * Handles licensing and plugin updates. + * + * @var Licensing + */ + public Licensing $licensing; /** * Class constructor @@ -113,11 +120,12 @@ public function load_plugin() { require_once $includes_path . '/cloud/list-table-shared-ops.php'; $this->active_snippets = new Active_Snippets(); - $this->frontend = new Frontend(); + $this->front_end = new Front_End(); $this->cloud_api = new Cloud_API(); $upgrade = new Upgrade( $this->version, $this->db ); add_action( 'plugins_loaded', array( $upgrade, 'run' ), 0 ); + $this->licensing = new Licensing(); } /** @@ -162,6 +170,8 @@ public function get_menu_slug( string $menu = '' ): string { $edit = array( 'edit', 'edit-snippet' ); $import = array( 'import', 'import-snippets', 'import-code-snippets' ); $settings = array( 'settings', 'snippets-settings' ); + $cloud = array( 'cloud', 'cloud-snippets' ); + $welcome = array( 'welcome', 'getting-started', 'code-snippets' ); if ( in_array( $menu, $edit, true ) ) { return 'edit-snippet'; @@ -171,6 +181,10 @@ public function get_menu_slug( string $menu = '' ): string { return 'import-code-snippets'; } elseif ( in_array( $menu, $settings, true ) ) { return 'snippets-settings'; + } elseif ( in_array( $menu, $cloud, true ) ) { + return 'snippets&type=cloud'; + } elseif ( in_array( $menu, $welcome, true ) ) { + return 'code-snippets-welcome'; } else { return 'snippets'; } @@ -313,10 +327,10 @@ public static function get_types(): array { array( 'php' => __( 'Functions', 'code-snippets' ), 'html' => __( 'Content', 'code-snippets' ), - 'cloud_search' => __( 'Cloud Search', 'code-snippets' ), 'css' => __( 'Styles', 'code-snippets' ), 'js' => __( 'Scripts', 'code-snippets' ), 'cloud' => __( 'Codevault', 'code-snippets' ), + 'cloud_search' => __( 'Cloud Search', 'code-snippets' ), 'bundles' => __( 'Bundles', 'code-snippets' ), ) ); @@ -345,17 +359,19 @@ public function localize_script( string $handle ) { $handle, 'CODE_SNIPPETS', [ - 'isLicensed' => false, - 'restAPI' => [ - 'base' => esc_url_raw( rest_url() ), - 'snippets' => esc_url_raw( rest_url( Snippets_REST_Controller::get_base_route() ) ), - 'nonce' => wp_create_nonce( 'wp_rest' ), + 'isLicensed' => $this->licensing->is_licensed(), + 'isCloudConnected' => Cloud_API::is_cloud_connection_available(), + 'restAPI' => [ + 'base' => esc_url_raw( rest_url() ), + 'snippets' => esc_url_raw( rest_url( Snippets_REST_Controller::get_base_route() ) ), + 'nonce' => wp_create_nonce( 'wp_rest' ), + 'localToken' => $this->cloud_api->get_local_token(), ], - 'urls' => [ - 'plugin' => plugins_url( '', PLUGIN_FILE ), - 'manage' => $this->get_menu_url(), - 'edit' => $this->get_menu_url( 'edit' ), - 'addNew' => $this->get_menu_url( 'add' ), + 'urls' => [ + 'plugin' => esc_url_raw( plugins_url( '', PLUGIN_FILE ) ), + 'manage' => esc_url_raw( $this->get_menu_url() ), + 'edit' => esc_url_raw( $this->get_menu_url( 'edit' ) ), + 'addNew' => esc_url_raw( $this->get_menu_url( 'add' ) ), ], ] ); diff --git a/php/class-snippet.php b/src/php/class-snippet.php similarity index 97% rename from php/class-snippet.php rename to src/php/class-snippet.php index 915a02af..1b154685 100644 --- a/php/class-snippet.php +++ b/src/php/class-snippet.php @@ -37,6 +37,7 @@ * @property-read int $modified_timestamp The last modification date in Unix timestamp format. * @property-read DateTime $modified_local The last modification date in the local timezone. * @property-read string $type_desc Human-readable description of the snippet type. + * @property-read boolean $is_pro Whether the snippet type is pro-only. */ class Snippet extends Data_Item { @@ -433,12 +434,19 @@ public function format_modified( bool $include_html = true ): string { } // translators: 1: date format, 2: time format. - $date_format = _x( '%1$s \a\t %2$s', 'date and time format', 'code-snippets' ); + $date_format = _x( '%1$s at %2$s', 'date and time format', 'code-snippets' ); $date_format = sprintf( $date_format, get_option( 'date_format' ), get_option( 'time_format' ) ); return sprintf( '%s', $local_time->format( $date_format ), $human_time ); } + /** + * Determine whether the current snippet type is pro-only. + */ + private function get_is_pro(): bool { + return 'css' === $this->type || 'js' === $this->type; + } + /** * Increment the revision number by one. */ diff --git a/php/class-upgrade.php b/src/php/class-upgrade.php similarity index 89% rename from php/class-upgrade.php rename to src/php/class-upgrade.php index ee45203e..53c49465 100644 --- a/php/class-upgrade.php +++ b/src/php/class-upgrade.php @@ -14,14 +14,14 @@ class Upgrade { * * @var DB */ - private $db; + private DB $db; /** * The current plugin version number * * @var string */ - private $current_version; + private string $current_version; /** * Class constructor @@ -66,7 +66,6 @@ private function do_site_upgrades() { return; // Bail if the data was not successfully saved to prevent this process from repeating. } - $sample_snippets = $this->get_sample_content(); $this->db->create_table( $table_name ); // Remove outdated user meta. @@ -95,14 +94,27 @@ private function do_site_upgrades() { } if ( false === $prev_version ) { - if ( apply_filters( 'code_snippets/create_sample_content', true ) ) { - foreach ( $sample_snippets as $sample_snippet ) { - save_snippet( $sample_snippet ); - } - } + add_action( 'init', [ $this, 'create_sample_content' ] ); } clean_snippets_cache( $table_name ); + Welcome_API::clear_cache(); + } + + /** + * Create example snippets. + * + * As this uses translation functions, this should not be called earlier than 'init'. + * + * @return void + */ + public function create_sample_content() { + if ( apply_filters( 'code_snippets/create_sample_content', true ) ) { + $sample_snippets = $this->get_sample_content(); + foreach ( $sample_snippets as $sample_snippet ) { + save_snippet( $sample_snippet ); + } + } } /** @@ -204,12 +216,11 @@ private function get_sample_content(): array { ), ); - $snippets = array(); - - foreach ( $snippets_data as $sample_name => $snippet_data ) { - $snippets[ $sample_name ] = new Snippet( $snippet_data ); - } - - return $snippets; + return array_map( + function ( $snippet_data ) { + return new Snippet( $snippet_data ); + }, + $snippets_data + ); } } diff --git a/php/class-validator.php b/src/php/class-validator.php similarity index 95% rename from php/class-validator.php rename to src/php/class-validator.php index 193fb9f2..27effb43 100644 --- a/php/class-validator.php +++ b/src/php/class-validator.php @@ -14,42 +14,42 @@ class Validator { * * @var string */ - private $code; + private string $code; /** * List of tokens. * * @var array */ - private $tokens; + private array $tokens; /** * The index of the token currently being examined. * * @var integer */ - private $current; + private int $current; /** * The total number of tokens. * * @var integer */ - private $length; + private int $length; /** * Array to keep track of the various function, class and interface identifiers which have been defined. * * @var array */ - private $defined_identifiers = []; + private array $defined_identifiers = []; /** * Exclude certain tokens from being checked. * * @var array */ - private $exceptions = []; + private array $exceptions = []; /** * Class constructor. @@ -144,7 +144,7 @@ public function validate() { } // If this is a function or class exists check, then allow this function or class to be defined. - if ( T_STRING === $token[0] && 'function_exists' === $token[1] || 'class_exists' === $token[1] ) { + if ( T_STRING === $token[0] && ( 'function_exists' === $token[1] || 'class_exists' === $token[1] ) ) { $type = 'function_exists' === $token[1] ? T_FUNCTION : T_CLASS; // Eat tokens until we find the function or class name. @@ -255,7 +255,7 @@ public function validate() { // If we did not make it out of the class, then there's a problem. if ( $depth > 0 ) { return array( - 'message' => __( 'Parse error: syntax error, unexpected end of snippet', 'code-snippets' ), + 'message' => __( 'Parse error: syntax error, unexpected end of snippet.', 'code-snippets' ), 'line' => $token[2], ); } diff --git a/src/php/class-welcome-api.php b/src/php/class-welcome-api.php new file mode 100644 index 00000000..b31534c5 --- /dev/null +++ b/src/php/class-welcome-api.php @@ -0,0 +1,356 @@ +welcome_data = $stored_data; + } else { + $this->welcome_data = []; + $this->fetch_remote_welcome_data(); + $this->build_changelog_data(); + set_transient( self::CACHE_KEY, $this->welcome_data, DAY_IN_SECONDS * 2 ); + } + } + + /** + * Purge the welcome data cache. + * + * @return void + */ + public static function clear_cache() { + delete_transient( self::CACHE_KEY ); + } + + /** + * Safely retrieve an array from an object, ensuring it exists and is valid, returning a default value if not. + * + * @param array $items Associative array containing array to extract. + * @param string $key Array key. + * + * @return array Extracted array, or empty array if array is missing. + */ + private static function safe_get_array( array $items, string $key ): array { + return isset( $items[ $key ] ) && is_array( $items[ $key ] ) ? $items[ $key ] : []; + } + + /** + * Parse DateTime value from a string without triggering an error. + * + * @param string $datetime String representation of DateTime value. + * + * @return DateTimeImmutable|null + */ + private static function safe_parse_datetime( string $datetime ): ?DateTimeImmutable { + try { + return new DateTimeImmutable( $datetime ); + } catch ( Exception $e ) { + return null; + } + } + + /** + * Parse remote hero item data. + * + * @param array $remote Remote hero item data. + * + * @return array + */ + private function parse_hero_item( array $remote ): array { + return [ + 'name' => $remote[0]['name'] ?? '', + 'follow_url' => $remote[0]['follow_url'] ?? '', + 'image_url' => $remote[0]['image_url'] ?? '', + ]; + } + + /** + * Parse remote banner data. + * + * @param array $remote Remote hero item data. + * + * @return array + */ + private function parse_banner( array $remote ): array { + return [ + 'key' => sanitize_key( $remote['key'] ) ?? '', + 'start_datetime' => self::safe_parse_datetime( $remote['start_datetime'] ), + 'end_datetime' => self::safe_parse_datetime( $remote['end_datetime'] ), + 'text_free' => $remote['text_free'] ?? '', + 'action_url_free' => $remote['action_url_free'] ?? '', + 'action_label_free' => $remote['action_label_free'] ?? '', + 'text_pro' => $remote['text_pro'] ?? '', + 'action_url_pro' => $remote['action_url_pro'] ?? '', + 'action_label_pro' => $remote['action_label_pro'] ?? '', + ]; + } + + /** + * Parse a list of features from a remote dataset. + * + * @param array $remote Remote data. + * + * @return array[] Parsed feature data. + */ + private function parse_features( array $remote ): array { + $limit = max( self::ITEM_LIMIT, count( $remote ) ); + $features = []; + + for ( $i = 0; $i < $limit; $i++ ) { + $feature = $remote[ $i ]; + + $features[] = [ + 'title' => $feature['title'] ?? '', + 'follow_url' => $feature['follow_url'] ?? '', + 'image_url' => $feature['image_url'] ?? '', + 'category' => $feature['category'] ?? '', + 'description' => $feature['description'] ?? '', + ]; + } + + return $features; + } + + /** + * Parse a list of partners from a remote dataset. + * + * @param array $remote Remote data. + * + * @return array[] Parsed partner data. + */ + private function parse_partners( array $remote ): array { + $limit = max( self::ITEM_LIMIT, count( $remote ) ); + $partners = []; + + for ( $i = 0; $i < $limit; $i++ ) { + $partner = $remote[ $i ]; + + $partners[] = [ + 'title' => $partner['title'] ?? '', + 'follow_url' => $partner['follow_url'] ?? '', + 'image_url' => $partner['image_url'] ?? '', + ]; + } + + return $partners; + } + + /** + * Fetch remote welcome data from the remote server and add it to the stored data. + * + * @return void + */ + protected function fetch_remote_welcome_data() { + $remote_welcome_data = wp_remote_get( self::WELCOME_JSON_URL ); + + if ( is_wp_error( $remote_welcome_data ) ) { + return; + } + + $remote_welcome_data = json_decode( wp_remote_retrieve_body( $remote_welcome_data ), true ); + + if ( ! is_array( $remote_welcome_data ) ) { + return; + } + + $this->welcome_data['banner'] = $this->parse_banner( self::safe_get_array( $remote_welcome_data, 'banner' ) ); + $this->welcome_data['hero-item'] = $this->parse_hero_item( self::safe_get_array( $remote_welcome_data, 'hero-item' ) ); + $this->welcome_data['features'] = $this->parse_features( self::safe_get_array( $remote_welcome_data, 'features' ) ); + $this->welcome_data['partners'] = $this->parse_partners( self::safe_get_array( $remote_welcome_data, 'partners' ) ); + } + + /** + * Build the full list of latest changes for caching. + * + * @return void + */ + protected function build_changelog_data() { + require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php'; + require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-direct.php'; + $filesystem = new WP_Filesystem_Direct( null ); + + $changelog_filename = 'CHANGELOG.md'; + $changelog = []; + + $changelog_dir = plugin_dir_path( PLUGIN_FILE ); + + while ( plugin_dir_path( $changelog_dir ) !== $changelog_dir && ! $filesystem->exists( $changelog_dir . $changelog_filename ) ) { + $changelog_dir = plugin_dir_path( $changelog_dir ); + } + + if ( ! $filesystem->exists( $changelog_dir . $changelog_filename ) ) { + return; + } + + $changelog_contents = $filesystem->get_contents( $changelog_dir . $changelog_filename ); + $changelog_releases = explode( "\n## ", $changelog_contents ); + + foreach ( array_slice( $changelog_releases, 1, self::MAX_CHANGELOG_ENTRIES ) as $changelog_release ) { + $sections = explode( "\n### ", $changelog_release ); + + if ( count( $sections ) < 2 ) { + continue; + } + + $header_parts = explode( '(', $sections[0], 2 ); + $version = trim( trim( $header_parts[0] ), '[]' ); + + $changelog[ $version ] = []; + + foreach ( array_slice( $sections, 1 ) as $section_contents ) { + $lines = array_filter( array_map( 'trim', explode( "\n", $section_contents ) ) ); + $section_type = $lines[0]; + + foreach ( array_slice( $lines, 1 ) as $line ) { + $entry = trim( str_replace( '(PRO)', '', str_replace( '*', '', $line ) ) ); + $core_or_pro = false === strpos( $line, '(PRO)' ) ? 'core' : 'pro'; + + if ( ! isset( $changelog[ $version ][ $section_type ] ) ) { + $changelog[ $version ][ $section_type ] = [ + $core_or_pro => [ $entry ], + ]; + } elseif ( ! isset( $changelog[ $version ][ $section_type ][ $core_or_pro ] ) ) { + $changelog[ $version ][ $section_type ][ $core_or_pro ] = [ $entry ]; + } else { + $changelog[ $version ][ $section_type ][ $core_or_pro ][] = $entry; + } + } + } + } + + $this->welcome_data['changelog'] = $changelog; + } + + /** + * Retrieve banner information. + * + * @return array{ + * key: string, + * start_datetime: ?DateTimeImmutable, + * end_datetime: ?DateTimeImmutable, + * text_free: string, + * action_url_free: string, + * action_label_free: string, + * text_pro: string, + * action_url_pro: string, + * action_label_pro: string tet + * } + */ + public function get_banner(): array { + return $this->welcome_data['banner'] ?? []; + } + + /** + * Retrieve hero information. + * + * @return array{ + * name: string, + * follow_url: string, + * image_url: string + * } + */ + public function get_hero_item(): array { + return $this->welcome_data['hero-item'] ?? []; + } + + /** + * Retrieve the list of features retrieved from the remote API. + * + * @return array{ + * title: string, + * follow_url: string, + * image_url: string, + * category: string, + * description: string + * }[] Feature details. + */ + public function get_features(): array { + return $this->welcome_data['features'] ?? []; + } + + /** + * Retrieve the list of partners retrieved from the remote API. + * + * @return array{ + * title: string, + * follow_url: string, + * image_url: string + * }[] Partner details. + */ + public function get_partners(): array { + return $this->welcome_data['partners'] ?? []; + } + + /** + * Retrieve a list of latest changes for display. + * + * @return array, + * 'Fixed': ?array<'core' | 'pro', string>, + * 'Improved': ?array<'core' | 'pro', string>, + * 'Other': ?array<'core' | 'pro', string> + * }> + */ + public function get_changelog(): array { + return $this->welcome_data['changelog'] ?? []; + } +} diff --git a/php/cloud/class-cloud-api.php b/src/php/cloud/class-cloud-api.php similarity index 53% rename from php/cloud/class-cloud-api.php rename to src/php/cloud/class-cloud-api.php index 22181a4f..4a6b83cb 100644 --- a/php/cloud/class-cloud-api.php +++ b/src/php/cloud/class-cloud-api.php @@ -17,62 +17,105 @@ class Cloud_API { /** - * Base URL for cloud API. + * Key used to access the local-to-cloud map transient data. + */ + private const CLOUD_MAP_TRANSIENT_KEY = 'cs_local_to_cloud_map'; + + /** + * Days to cache data retrieved from API. + */ + private const DAYS_TO_STORE_CS = 1; + + /** + * Name of key used to cache cloud settings. * * @var string */ - const CLOUD_API_URL = 'https://codesnippets.cloud/api/v1/'; + private const CLOUD_SETTINGS_CACHE_KEY = 'code_snippets_cloud_settings'; /** - * Base URL for cloud API. + * Token used for public API access. * * @var string */ - const CLOUD_SEARCH_API_TOKEN = 'csc-1a2b3c4d5e6f7g8h9i0j'; + private const CLOUD_SEARCH_API_TOKEN = 'csc-1a2b3c4d5e6f7g8h9i0j'; + /** + * Cached list of cloud links. + * + * @var Cloud_Link[]|null + */ + private ?array $cached_cloud_links = null; /** - * Key used to access the local-to-cloud map transient data. + * Retrieve the Cloud URL from wp-config or fallback to default. * - * @var string + * @return string */ - const CLOUD_MAP_TRANSIENT_KEY = 'cs_local_to_cloud_map'; + public static function get_cloud_url(): string { + return defined( 'CS_CLOUD_URL' ) + ? CS_CLOUD_URL + : 'https://codesnippets.cloud/'; + } + /** + * Retrieve the Cloud API URL from wp-config or fallback to default. + * + * @return string + */ + public static function get_cloud_api_url(): string { + return defined( 'CS_CLOUD_API_URL' ) + ? CS_CLOUD_API_URL + : self::get_cloud_url() . 'api/v1/'; + } /** - * Days to cache data retrieved from API. + * Retrieve the cloud local token. * - * @var integer + * @return string */ - const DAYS_TO_STORE_CS = 1; + public static function get_local_token(): string { + return self::CLOUD_SEARCH_API_TOKEN; + } /** - * Local to Cloud Snippets Map Object + * Check that the cloud key is valid and verified. * - * @var Cloud_Link[]|null + * @return boolean + */ + public static function is_cloud_key_verified(): bool { + return false; + } + + /** + * Check if the API key is set and verified. + * + * @return boolean */ - private $local_to_cloud_map = null; + public static function is_cloud_connection_available(): bool { + return false; + } /** * Create local-to-cloud map to keep track of local snippets that have been synced to the cloud. * * @return Cloud_Link[] */ - public function get_local_to_cloud_map(): ?array { + private function get_cloud_links(): ?array { // Return the cached data if available. - if ( $this->local_to_cloud_map ) { - return $this->local_to_cloud_map; + if ( is_array( $this->cached_cloud_links ) ) { + return $this->cached_cloud_links; } // Fetch data from the stored transient, if available. - $stored_data = get_transient( self::CLOUD_MAP_TRANSIENT_KEY ); - if ( $stored_data ) { - $this->local_to_cloud_map = $stored_data; - return $stored_data; + $transient_data = get_transient( self::CLOUD_MAP_TRANSIENT_KEY ); + if ( is_array( $transient_data ) ) { + $this->cached_cloud_links = $transient_data; + return $this->cached_cloud_links; } // Otherwise, regenerate the local-to-cloud-map. - $this->local_to_cloud_map = []; + $this->cached_cloud_links = []; // Fetch and iterate through all local snippets to create the map. foreach ( get_snippets() as $local_snippet ) { @@ -81,30 +124,48 @@ public function get_local_to_cloud_map(): ?array { continue; } - // If the snippet is a token snippet skip it. - $has_valid_cloud_id = boolval( strpos( $local_snippet->cloud_id, '_' ) ); - if ( ! $has_valid_cloud_id ) { - continue; - } - $link = new Cloud_Link(); - $cloud_id = explode( '_', $local_snippet->cloud_id ); - $cloud_id_int = (int) $cloud_id[0] ?? ''; + $cloud_id_owner = $this->get_cloud_id_and_ownership( $local_snippet->cloud_id ); + $cloud_id_int = intval( $cloud_id_owner['cloud_id'] ); $link->local_id = $local_snippet->id; $link->cloud_id = $cloud_id_int; - $link->is_owner = false; - $link->in_codevault = false; + $link->is_owner = $cloud_id_owner['is_owner']; + // Check if cloud id exists in cloud_id_rev array - this shows if the snippet is in the codevault. + $link->in_codevault = $cloud_id_rev[ $cloud_id_int ] ?? false; + + // Get the cloud snippet revision if in codevault get from cloud_id_rev array otherwise get from cloud. + if ( $link->in_codevault ) { + $cloud_snippet_revision = $cloud_id_rev[ $cloud_id_int ] ?? $this->get_cloud_snippet_revision( $local_snippet->cloud_id ); + $link->update_available = $local_snippet->revision < $cloud_snippet_revision; + } - $this->local_to_cloud_map[] = $link; + $this->cached_cloud_links[] = $link; } set_transient( self::CLOUD_MAP_TRANSIENT_KEY, - $this->local_to_cloud_map, + $this->cached_cloud_links, DAY_IN_SECONDS * self::DAYS_TO_STORE_CS ); - return $this->local_to_cloud_map; + return $this->cached_cloud_links; + } + + /** + * Get ownership and Cloud ID of a snippet. + * + * @param string $cloud_id Cloud ID. + * + * @return array + */ + public function get_cloud_id_and_ownership( string $cloud_id ): array { + $cloud_id_owner = explode( '_', $cloud_id ); + + return [ + 'cloud_id' => (int) $cloud_id_owner[0] ?? '', + 'is_owner' => isset( $cloud_id_owner[1] ) && $cloud_id_owner[1], + 'is_owner_string' => isset( $cloud_id_owner[1] ) && $cloud_id_owner[1] ? '1' : '0', + ]; } /** @@ -134,10 +195,10 @@ public static function fetch_search_results( string $search_method, string $sear 's_method' => $search_method, 's' => $search, 'page' => $page, - 'site_token' => self::CLOUD_SEARCH_API_TOKEN, + 'site_token' => self::get_local_token(), 'site_host' => wp_parse_url( get_site_url(), PHP_URL_HOST ), ], - self::CLOUD_API_URL . 'public/search' + self::get_cloud_api_url() . 'public/search' ); $results = self::unpack_request_json( wp_remote_get( $api_url ) ); @@ -148,17 +209,6 @@ public static function fetch_search_results( string $search_method, string $sear return $results; } - /** - * Refresh all stored data. - * - * @return void - */ - public function refresh_synced_data() { - // Simply deleting the data is sufficient, as it will be recreated and stored the next time it is requested. - $this->local_to_cloud_map = null; - delete_transient( self::CLOUD_MAP_TRANSIENT_KEY ); - } - /** * Add a new link item to the local-to-cloud map. * @@ -166,7 +216,7 @@ public function refresh_synced_data() { * * @return void */ - public function add_map_link( Cloud_Link $link ) { + public function add_cloud_link( Cloud_Link $link ) { $local_to_cloud_map = get_transient( self::CLOUD_MAP_TRANSIENT_KEY ); $local_to_cloud_map[] = $link; @@ -180,26 +230,44 @@ public function add_map_link( Cloud_Link $link ) { /** * Delete a snippet from local-to-cloud map. * - * @param integer $snippet_id Local snippet ID. + * @param int $snippet_id Local snippet ID. * - * @return Cloud_Link|null The deleted map link if one was found, null otherwise. + * @return void */ - public function delete_snippet_from_transient_data( int $snippet_id ): ?Cloud_Link { - $this->get_local_to_cloud_map(); - $link_to_delete = null; + public function delete_snippet_from_transient_data( int $snippet_id ) { + if ( ! $this->cached_cloud_links ) { + $this->get_cloud_links(); + } - foreach ( $this->local_to_cloud_map as $link ) { + foreach ( $this->cached_cloud_links as $link ) { if ( $link->local_id === $snippet_id ) { - $link_to_delete = $link; - break; + // Remove the link from the local_to_cloud_map. + $index = array_search( $link, $this->cached_cloud_links, true ); + unset( $this->cached_cloud_links[ $index ] ); + + // Update the transient data. + set_transient( + self::CLOUD_MAP_TRANSIENT_KEY, + $this->cached_cloud_links, + DAY_IN_SECONDS * self::DAYS_TO_STORE_CS + ); } } - if ( $link_to_delete ) { + } - $this->refresh_synced_data(); - } + /** + * Retrieve a single cloud snippet from the API. + * + * @param int $cloud_id Remote cloud snippet ID. + * + * @return Cloud_Snippet Retrieved snippet. + */ + public static function get_single_snippet_from_cloud( int $cloud_id ): Cloud_Snippet { + $url = self::get_cloud_api_url() . sprintf( 'public/getsnippet/%s', $cloud_id ); + $response = wp_remote_get( $url ); + $cloud_snippet = self::unpack_request_json( $response ); - return $link_to_delete; + return new Cloud_Snippet( $cloud_snippet['snippet'] ); } /** @@ -210,7 +278,7 @@ public function delete_snippet_from_transient_data( int $snippet_id ): ?Cloud_Li * @return string|null Revision number on success, null otherwise. */ public static function get_cloud_snippet_revision( string $cloud_id ): ?string { - $api_url = self::CLOUD_API_URL . sprintf( 'public/getsnippetrevision/%s', $cloud_id ); + $api_url = self::get_cloud_api_url() . sprintf( 'public/getsnippetrevision/%s', $cloud_id ); $body = wp_remote_retrieve_body( wp_remote_get( $api_url ) ); if ( ! $body ) { @@ -225,14 +293,17 @@ public static function get_cloud_snippet_revision( string $cloud_id ): ?string { * Download a snippet from the cloud. * * @param int|string $cloud_id The cloud ID of the snippet as string from query args. - * @param string $source The source table of the snippet: 'codevault' or 'search'. + * @param string $source Unused in Core. * @param string $action The action to be performed: 'download' or 'update'. * * @return array Result of operation: an array with `success` and `error_message` keys. + * + * @noinspection PhpUnusedParameterInspection */ public function download_or_update_snippet( int $cloud_id, string $source, string $action ): array { $cloud_id = intval( $cloud_id ); - $snippet_to_store = $this->get_single_cloud_snippet( $cloud_id ); + + $snippet_to_store = $this->get_single_snippet_from_cloud( $cloud_id ); switch ( $action ) { case 'download': @@ -247,96 +318,55 @@ public function download_or_update_snippet( int $cloud_id, string $source, strin } } - /** - * Retrieve a single cloud snippet from the API. - * - * @param int $cloud_id Remote cloud snippet ID. - * - * @return Cloud_Snippet Retrieved snippet. - */ - public static function get_single_cloud_snippet( int $cloud_id ): Cloud_Snippet { - $url = self::CLOUD_API_URL . sprintf( 'public/getsnippet/%s', $cloud_id ); - $response = wp_remote_get( $url ); - $cloud_snippet = self::unpack_request_json( $response ); - - return new Cloud_Snippet( $cloud_snippet['snippet'] ); - } - /** * Download a snippet from the cloud. * - * @param Cloud_Snippet|Cloud_Snippet[] $snippets_to_store The snippet to be downloaded. + * @param Cloud_Snippet $snippet_to_store The snippet to be downloaded. * * @return array The result of the download. */ - public function download_snippet_from_cloud( $snippets_to_store ): array { - $new_snippet = null; - $link = null; - - if ( ! is_array( $snippets_to_store ) ) { - $snippets_to_store = [ $snippets_to_store ]; - } + public function download_snippet_from_cloud( Cloud_Snippet $snippet_to_store ): array { + $snippet = new Snippet( $snippet_to_store ); - foreach ( $snippets_to_store as $snippet_to_store ) { - $snippet = new Snippet( $snippet_to_store ); + // Set the snippet id to 0 to ensure that the snippet is saved as a new snippet. + $ownership = $snippet_to_store->is_owner ? '1' : '0'; + $snippet->id = 0; + $snippet->active = 0; + $snippet->cloud_id = $snippet_to_store->id . '_' . $ownership; + $snippet->desc = $snippet_to_store->description ? $snippet_to_store->description : ''; - // Set the snippet id to 0 to ensure that the snippet is saved as a new snippet. - $ownership = '0'; - $snippet->id = 0; - $snippet->active = 0; - $snippet->cloud_id = $snippet_to_store->id . '_' . $ownership; - $snippet->desc = $snippet_to_store->description ? $snippet_to_store->description : ''; + // Save the snippet to the database. + $new_snippet = save_snippet( $snippet ); - // Save the snippet to the database. - $new_snippet = save_snippet( $snippet ); + $link = new Cloud_Link(); + $link->local_id = $new_snippet->id; + $link->cloud_id = $snippet_to_store->id; + $link->is_owner = $snippet_to_store->is_owner; + $link->in_codevault = false; + $link->update_available = false; - $link = new Cloud_Link(); - $link->local_id = $new_snippet->id; - $link->cloud_id = $snippet->cloud_id; - $link->is_owner = $snippet_to_store->is_owner; - $link->in_codevault = false; - $link->update_available = false; + $this->add_cloud_link( $link ); - $this->add_map_link( $link ); - } - - if ( 1 === count( $snippets_to_store ) && $new_snippet && $link ) { - return [ - 'success' => true, - 'action' => __( 'Single Downloaded', 'code-snippets' ), - 'snippet_id' => $new_snippet->id, - 'link_id' => $link->cloud_id, - ]; - } - - if ( count( $snippets_to_store ) > 1 ) { - return [ - 'success' => true, - 'action' => __( 'Downloaded', 'code-snippets' ), - ]; - } else { - return [ - 'success' => false, - 'error' => __( 'There was a problem saving or no snippets found to download.', 'code-snippets' ), - ]; - } + return [ + 'success' => true, + 'action' => 'Single Downloaded', + 'snippet_id' => $new_snippet->id, + 'link_id' => $link->cloud_id, + ]; } /** * Update a snippet from the cloud. * - * @param Cloud_Snippet|Cloud_Snippet[] $snippet_to_store Array of snippets to be updated. + * @param Cloud_Snippet $snippet_to_store Snippet to be updated. * * @return array The result of the update. */ - public function update_snippet_from_cloud( $snippet_to_store ): array { - if ( is_array( $snippet_to_store ) ) { - $snippet_to_store = reset( $snippet_to_store ); - } + public function update_snippet_from_cloud( Cloud_Snippet $snippet_to_store ): array { + $cloud_id = $snippet_to_store->id . '_' . ( $snippet_to_store->is_owner ? '1' : '0' ); - $ownership = $snippet_to_store->is_owner ? '1' : '0'; - $cloud_id = $snippet_to_store->id . '_' . $ownership; $local_snippet = get_snippet_by_cloud_id( sanitize_key( $cloud_id ) ); + // Only update the code, active and revision fields. $fields = [ 'code' => $snippet_to_store->code, @@ -345,8 +375,7 @@ public function update_snippet_from_cloud( $snippet_to_store ): array { ]; update_snippet_fields( $local_snippet->id, $fields ); - - $this->refresh_synced_data(); + $this->clear_caches(); return [ 'success' => true, @@ -355,57 +384,37 @@ public function update_snippet_from_cloud( $snippet_to_store ): array { } /** - * Check if a snippet has update available using cloud link. + * Find the cloud link for a given cloud snippet identifier. * - * @param int $snippet_id The local ID of the snippet. - * - * @return bool Whether the snippet has update available or not. - */ - public function is_update_available( int $snippet_id ): bool { - $cloud_link = $this->get_local_to_cloud_map(); - - // Find the snippet from the array of objects using snippet id. - $snippet = array_filter( - $cloud_link, - function ( $snippet ) use ( $snippet_id ) { - return $snippet->local_id === $snippet_id; - } - ); - - // Get the first element of the array. - $snippet = reset( $snippet ); - // Return the update available value which is a boolean. - return $snippet->update_available; - } - - /** - * Check if snippet is synced to cloud. - * - * @param int $snippet_id Snippet ID. - * @param string $local_or_cloud Whether the ID is a local ID or cloud ID. + * @param int $cloud_id Cloud ID. * * @return Cloud_Link|null */ - public function get_cloud_link( int $snippet_id, string $local_or_cloud ): ?Cloud_Link { - $local_to_cloud_map = $this->get_local_to_cloud_map(); - - if ( 'local' === $local_or_cloud || 'cloud' === $local_or_cloud ) { - $column = 'cloud' === $local_or_cloud ? 'cloud_id' : 'local_id'; - $local_id_array = array_map( 'intval', array_column( $local_to_cloud_map, $column ) ); - - if ( in_array( $snippet_id, $local_id_array, true ) ) { - $index = array_search( $snippet_id, $local_id_array, true ); - return $local_to_cloud_map[ $index ]; + public function get_link_for_cloud_id( int $cloud_id ): ?Cloud_Link { + $cloud_links = $this->get_cloud_links(); + + if ( $cloud_links ) { + foreach ( $cloud_links as $cloud_link ) { + if ( $cloud_link->cloud_id === $cloud_id ) { + return $cloud_link; + } } } return null; } + /** + * Find the cloud link for a given cloud snippet. * - * Static Helper Methods + * @param Cloud_Snippet $cloud_snippet Cloud snippet. + * + * @return Cloud_Link|null */ + public function get_link_for_cloud_snippet( Cloud_Snippet $cloud_snippet ): ?Cloud_Link { + return $this->get_link_for_cloud_id( $cloud_snippet->id ); + } /** * Translate a snippet scope to a type. @@ -429,29 +438,6 @@ public static function get_type_from_scope( string $scope ): string { } } - /** - * Translate a snippet status to a style class. - * - * @param int $status The scope of the snippet. - * - * @return string The style to be used for the stats badge. - */ - public static function get_style_from_status( int $status ): string { - switch ( $status ) { - case 3: // Private. - return 'css'; - case 4: // Public. - return 'js'; - case 5: // Unverified. - return 'unverified'; - case 6: // AI Verified. - case 8: // Pro Verified. - return 'html'; - default: - return 'php'; - } - } - /** * Translate a snippet status to a status-name. * @@ -493,4 +479,15 @@ public static function render_cloud_snippet_thickbox() { cached_cloud_links = null; + + delete_transient( self::CLOUD_MAP_TRANSIENT_KEY ); + } } diff --git a/php/cloud/class-cloud-link.php b/src/php/cloud/class-cloud-link.php similarity index 100% rename from php/cloud/class-cloud-link.php rename to src/php/cloud/class-cloud-link.php diff --git a/php/cloud/class-cloud-search-list-table.php b/src/php/cloud/class-cloud-search-list-table.php similarity index 86% rename from php/cloud/class-cloud-search-list-table.php rename to src/php/cloud/class-cloud-search-list-table.php index dc99b99a..36bf9821 100644 --- a/php/cloud/class-cloud-search-list-table.php +++ b/src/php/cloud/class-cloud-search-list-table.php @@ -1,10 +1,8 @@ items as $item ) { ?> -
    +
    -

    process_description( $item->description ) ); ?>

    +

    process_description( $item->description ) ); ?>

    %s', + '%s %s', + esc_html__( 'Codevault:', 'code-snippets' ), esc_url( sprintf( 'https://codesnippets.cloud/codevault/%s', $item->codevault ) ), esc_html( $item->codevault ) ); - ?>

    @@ -245,14 +248,22 @@ public function display_rows() {
    - + ', esc_html__( 'Not indicated by author', 'code-snippets' ), ''; + printf( + '%s', + esc_html__( 'Not indicated by author', 'code-snippets' ) + ); } else { - // translators: tested status. - $text = sprintf( __( 'Author states %s', 'code-snippets' ), $wp_tested ); - echo '', esc_html( $text ), ''; + printf( + '%s', + sprintf( + // translators: %s: tested status. + __( 'Author states %s', 'code-snippets' ), + $wp_tested + ) + ); } ?>
    @@ -262,18 +273,6 @@ public function display_rows() { } } - /** - * Define the url for the name anchor tag - * - * @return array The URL to be used. - */ - protected function get_link_for_name(): array { - return [ - 'cloud-snippet-link' => '#TB_inline?&width=700&height=500&inlineId=show-code-preview', - 'cloud-snippet-downloaded' => false, - ]; - } - /** * Process the description text - limit to 150 characters. * diff --git a/php/cloud/class-cloud-snippet.php b/src/php/cloud/class-cloud-snippet.php similarity index 97% rename from php/cloud/class-cloud-snippet.php rename to src/php/cloud/class-cloud-snippet.php index ca7ae2e8..32643490 100644 --- a/php/cloud/class-cloud-snippet.php +++ b/src/php/cloud/class-cloud-snippet.php @@ -34,7 +34,7 @@ class Cloud_Snippet extends Data_Item { * * @param array|null $initial_data Initial snippet data. */ - public function __construct( array $initial_data = null ) { + public function __construct( ?array $initial_data = null ) { parent::__construct( [ 'id' => '', diff --git a/php/cloud/class-cloud-snippets.php b/src/php/cloud/class-cloud-snippets.php similarity index 100% rename from php/cloud/class-cloud-snippets.php rename to src/php/cloud/class-cloud-snippets.php diff --git a/php/cloud/list-table-shared-ops.php b/src/php/cloud/list-table-shared-ops.php similarity index 68% rename from php/cloud/list-table-shared-ops.php rename to src/php/cloud/list-table-shared-ops.php index a78b29fb..1a6ab2bc 100644 --- a/php/cloud/list-table-shared-ops.php +++ b/src/php/cloud/list-table-shared-ops.php @@ -14,6 +14,8 @@ * * @param string $column_name Column name. * @param Cloud_Snippet $snippet Column item. + * + * @return void */ function cloud_lts_display_column_hidden_input( string $column_name, Cloud_Snippet $snippet ) { printf( @@ -25,19 +27,19 @@ function cloud_lts_display_column_hidden_input( string $column_name, Cloud_Snipp ); } - /** * Process the download snippet action * - * @param string $action Action - 'download' or 'update'. - * @param string $source Source - 'search' or 'cloud'. - * @param string $snippet Snippet ID. + * @param string $action Action - 'download' or 'update'. + * @param string $source Source - 'search' or 'cloud'. + * @param string $snippet Snippet ID. + * @param int $codevault_page The current page of the codevault. * * @return void */ -function cloud_lts_process_download_action( string $action, string $source, string $snippet ) { +function cloud_lts_process_download_action( string $action, string $source, string $snippet, int $codevault_page = 0 ) { if ( 'download' === $action || 'update' === $action ) { - $result = code_snippets()->cloud_api->download_or_update_snippet( $snippet, $source, $action ); + $result = code_snippets()->cloud_api->download_or_update_snippet( $snippet, $source, $action, $codevault_page ); if ( $result['success'] ) { $redirect_uri = $result['snippet_id'] ? @@ -53,63 +55,81 @@ function cloud_lts_process_download_action( string $action, string $source, stri /** * Build action links for snippet. * - * @param Cloud_Snippet $snippet Snippet/Column item. - * @param string $source Source - 'search' or 'codevault'. + * @param Cloud_Snippet $cloud_snippet Snippet/Column item. + * @param string $source Source - 'search' or 'codevault'. * * @return string */ -function cloud_lts_build_action_links( Cloud_Snippet $snippet, string $source ): string { - $lang = Cloud_API::get_type_from_scope( $snippet->scope ); +function cloud_lts_build_action_links( Cloud_Snippet $cloud_snippet, string $source ): string { + $lang = Cloud_API::get_type_from_scope( $cloud_snippet->scope ); + $link = code_snippets()->cloud_api->get_link_for_cloud_snippet( $cloud_snippet ); $additional_classes = 'search' === $source ? 'action-button-link' : ''; - $link = code_snippets()->cloud_api->get_cloud_link( $snippet->id, 'cloud' ); + $is_licensed = code_snippets()->licensing->is_licensed(); $download = true; + $action_link = ''; - if ( $link ) { - return sprintf( - '%s', - esc_url( code_snippets()->get_snippet_edit_url( $link->local_id ) ), - $additional_classes, - esc_html__( 'View', 'code-snippets' ) - ); + if ( ! $is_licensed && in_array( $lang, [ 'css', 'js' ], true ) ) { + $download = false; } - if ( in_array( $lang, [ 'css', 'js' ], true ) ) { - $download = false; + if ( $link ) { + if ( $is_licensed && $link->update_available ) { + $download = false; + $update_url = add_query_arg( + [ + 'action' => 'update', + 'snippet' => $cloud_snippet->id, + 'source' => $source, + ] + ); + $action_link = sprintf( + '%s', + $additional_classes, + esc_url( $update_url ), + esc_html__( 'Update Available', 'code-snippets' ) + ); + } else { + return sprintf( + '%s', + esc_url( code_snippets()->get_snippet_edit_url( $link->local_id ) ), + $additional_classes, + esc_html__( 'View', 'code-snippets' ) + ); + } } if ( $download ) { $download_url = add_query_arg( [ 'action' => 'download', - 'snippet' => $snippet->id, + 'snippet' => $cloud_snippet->id, 'source' => $source, ] ); - $action_link = sprintf( - '%s', - $additional_classes, - esc_url( $download_url ), - esc_html__( 'Download', 'code-snippets' ) - ); - } else { - $action_link = sprintf( - '%s%s', - $additional_classes, - 'https://codesnippets.pro/pricing/', - esc_html_x( 'Pro', 'pro only', 'code-snippets' ), - esc_html_x( ' Only', 'pro only', 'code-snippets' ) - ); + $action_link = $is_licensed ? + sprintf( + '%s', + $additional_classes, + esc_url( $download_url ), + esc_html__( 'Download', 'code-snippets' ) + ) : + sprintf( + '%s', + $additional_classes, + 'https://codesnippets.pro/pricing/', + __( 'Pro Only', 'code-snippets' ), + ); } $thickbox_url = '#TB_inline?&width=700&height=500&inlineId=show-code-preview'; $thickbox_link = sprintf( - '%s', + '%s', esc_url( $thickbox_url ), - esc_attr( $snippet->name ), + esc_attr( $cloud_snippet->name ), $additional_classes, - esc_attr( $snippet->id ), + esc_attr( $cloud_snippet->id ), esc_attr( $lang ), esc_html__( 'Preview', 'code-snippets' ) ); @@ -161,10 +181,9 @@ function cloud_lts_pagination( string $which, string $source, int $total_items, $page_links[] = ''; } else { $page_links[] = sprintf( - "%s", + '%s', esc_url( remove_query_arg( $source . '_page', $current_url ) ), - __( 'First page', 'code-snippets' ), - '«' + esc_html__( 'First page', 'code-snippets' ) ); } @@ -172,10 +191,9 @@ function cloud_lts_pagination( string $which, string $source, int $total_items, $page_links[] = ''; } else { $page_links[] = sprintf( - "%s", + '%s', esc_url( add_query_arg( $source . '_page', max( 1, $current - 1 ), $current_url ) ), - __( 'Previous page', 'code-snippets' ), - '‹' + esc_html__( 'Previous page', 'code-snippets' ) ); } @@ -206,7 +224,7 @@ function cloud_lts_pagination( string $which, string $source, int $total_items, $page_links[] = sprintf( '%s', esc_url( add_query_arg( $source . '_page', min( $total_pages, $current + 1 ), $current_url ) ), - __( 'Next page' ), + esc_html__( 'Next page', 'code-snippets' ), '›' ); } @@ -217,7 +235,7 @@ function cloud_lts_pagination( string $which, string $source, int $total_items, $page_links[] = sprintf( '%s', esc_url( add_query_arg( $source . '_page', $total_pages, $current_url ) ), - __( 'Last page', 'code-snippets' ), + esc_html__( 'Last page', 'code-snippets' ), '»' ); } diff --git a/php/deactivation-notice.php b/src/php/deactivation-notice.php similarity index 99% rename from php/deactivation-notice.php rename to src/php/deactivation-notice.php index 864446ba..6003a02e 100644 --- a/php/deactivation-notice.php +++ b/src/php/deactivation-notice.php @@ -7,6 +7,7 @@ * @package Code_Snippets * * @noinspection PhpNestedDirNameCallsCanBeReplacedWithLevelParameterInspection + * * phpcs:disable Modernize.FunctionCalls.Dirname.FileConstant */ diff --git a/php/editor.php b/src/php/editor.php similarity index 100% rename from php/editor.php rename to src/php/editor.php diff --git a/php/export/class-export-attachment.php b/src/php/export/class-export-attachment.php similarity index 100% rename from php/export/class-export-attachment.php rename to src/php/export/class-export-attachment.php diff --git a/php/export/class-export.php b/src/php/export/class-export.php similarity index 95% rename from php/export/class-export.php rename to src/php/export/class-export.php index ec76b400..28d982c6 100644 --- a/php/export/class-export.php +++ b/src/php/export/class-export.php @@ -15,7 +15,7 @@ class Export { * * @var Snippet[] */ - protected $snippets_list; + protected array $snippets_list; /** * Class constructor @@ -82,7 +82,7 @@ public function export_snippets_php(): string { foreach ( $this->snippets_list as $snippet ) { $code = trim( $snippet->code ); - if ( 'php' !== $snippet->type && 'html' !== $snippet->type || ! $code ) { + if ( ( 'php' !== $snippet->type && 'html' !== $snippet->type ) || ! $code ) { continue; } @@ -134,7 +134,7 @@ public function export_snippets_basic_json(): string { * * @param string|null $type Snippet type. Supports 'css' or 'js'. */ - public function export_snippets_code( string $type = null ): string { + public function export_snippets_code( ?string $type = null ): string { $result = ''; if ( ! $type ) { diff --git a/php/export/class-import.php b/src/php/export/class-import.php similarity index 95% rename from php/export/class-import.php rename to src/php/export/class-import.php index f20a71c3..4c2cfb9d 100644 --- a/php/export/class-import.php +++ b/src/php/export/class-import.php @@ -20,21 +20,21 @@ class Import { * * @var string */ - private $file; + private string $file; /** * Whether snippets should be imported into the network-wide or site-wide table. * * @var bool */ - private $multisite; + private bool $multisite; /** * Action to take if duplicate snippets are detected. Can be 'skip', 'ignore', or 'replace'. * * @var string */ - private $dup_action; + private string $dup_action; /** * Class constructor. @@ -78,6 +78,7 @@ public function import_json() { 'priority', 'shared_network', 'modified', + 'cloud_id', ]; foreach ( $import_fields as $field ) { @@ -192,7 +193,10 @@ private function save_snippets( array $snippets ): array { } // Save the snippet and increase the counter if successful. - $snippet_id = save_snippet( $snippet ); + $saved_snippet = save_snippet( $snippet ); + + // Get ID of the saved snippet as save_snippet() returns complete snippet object. + $snippet_id = $saved_snippet->id; if ( $snippet_id ) { $imported[] = $snippet_id; diff --git a/php/front-end/class-frontend.php b/src/php/front-end/class-front-end.php similarity index 88% rename from php/front-end/class-frontend.php rename to src/php/front-end/class-front-end.php index 435084f8..8d76ae8a 100644 --- a/php/front-end/class-frontend.php +++ b/src/php/front-end/class-front-end.php @@ -7,11 +7,11 @@ use WP_REST_Server; /** - * This class manages the shortcodes included with the plugin + * This class manages the shortcodes included with the plugin, * * @package Code_Snippets */ -class Frontend { +class Front_End { /** * Name of the shortcode tag for rendering the code source @@ -28,6 +28,11 @@ class Frontend { */ const PRISM_HANDLE = 'code-snippets-prism'; + /** + * Maximum depth for shortcode recursion. + */ + const MAX_SHORTCODE_DEPTH = 5; + /** * Class constructor */ @@ -131,26 +136,30 @@ public function enqueue_highlighting( $posts ) { return $posts; } - // Concatenate all provided content together, so we can check it all in one go. - $content = implode( ' ', wp_list_pluck( $posts, 'post_content' ) ); + // Loop through the posts, checking for an existing shortcode, short-circuiting if possible. + $found_shortcode_content = null; - // Bail now if the provided post don't contain the source shortcode or block editor block. - if ( false === stripos( $content, '[' . self::SOURCE_SHORTCODE ) && - false === strpos( $content, '