From 25ddbcd19bcdc305ebe8b9033fb5f035e57ab386 Mon Sep 17 00:00:00 2001 From: Angus Hollands Date: Mon, 5 Feb 2024 22:10:37 +0000 Subject: [PATCH] wip: update with copier (#203) * wip: update with copier * wip: more changes * wip: gitignore * linting * fix: checks --- .copier-answers.yml | 14 + .eslintignore | 8 - .eslintrc.js | 38 - .github/workflows/binder-on-pr.yml | 2 +- .github/workflows/build.yml | 244 ++--- .github/workflows/check-release.yml | 7 +- .github/workflows/prep-release.yml | 6 +- .github/workflows/publish-release.yml | 2 +- .../workflows/update-integration-tests.yml | 18 +- .prettierignore | 2 - .prettierrc | 6 - .stylelintignore | 2 +- .stylelintrc | 14 - .yarnrc.yml | 2 - LICENSE | 30 +- RELEASE.md | 48 +- binder/environment.yml | 11 +- package.json | 353 +++++--- pyproject.toml | 4 +- setup.py | 2 +- src/actions.ts | 2 +- src/citations.tsx | 4 +- src/images.ts | 16 +- src/links.tsx | 16 +- src/metadata.ts | 8 +- src/taskItem.tsx | 6 +- src/widget.tsx | 4 +- style/base.css | 4 +- style/index.css | 2 +- style/tailwind.css | 24 +- tsconfig.json | 5 +- tsconfig.test.json | 5 +- ui-tests/README.md | 2 +- ui-tests/package.json | 4 +- yarn.lock | 839 ++++++++++-------- 35 files changed, 1020 insertions(+), 734 deletions(-) create mode 100644 .copier-answers.yml delete mode 100644 .eslintignore delete mode 100644 .eslintrc.js delete mode 100644 .prettierrc delete mode 100644 .stylelintrc diff --git a/.copier-answers.yml b/.copier-answers.yml new file mode 100644 index 0000000..b965153 --- /dev/null +++ b/.copier-answers.yml @@ -0,0 +1,14 @@ +# Changes here will be overwritten by Copier; NEVER EDIT MANUALLY +_commit: v4.2.5 +_src_path: https://github.com/jupyterlab/extension-template +author_email: executablebooks@gmail.com +author_name: Executable Book Project +has_binder: true +has_settings: false +kind: server +labextension_name: jupyterlab-myst +project_short_description: Use MyST in JupyterLab +python_name: jupyterlab_myst +repository: https://github.com/executablebooks/jupyterlab-myst.git +test: true + diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index fffa32f..0000000 --- a/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -node_modules -dist -coverage -**/*.d.ts -tests - -**/__tests__ -ui-tests diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index ff609e0..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,38 +0,0 @@ -module.exports = { - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/eslint-recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:prettier/recommended' - ], - parser: '@typescript-eslint/parser', - parserOptions: { - project: 'tsconfig.json', - sourceType: 'module' - }, - plugins: ['@typescript-eslint'], - rules: { - '@typescript-eslint/naming-convention': [ - 'error', - { - selector: 'interface', - format: ['PascalCase'], - custom: { - regex: '^I[A-Z]', - match: true - } - } - ], - '@typescript-eslint/no-unused-vars': ['warn', { args: 'none' }], - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-namespace': 'off', - '@typescript-eslint/no-use-before-define': 'off', - '@typescript-eslint/quotes': [ - 'error', - 'single', - { avoidEscape: true, allowTemplateLiterals: false } - ], - eqeqeq: 'off', - 'prefer-arrow-callback': 'error' - } -}; diff --git a/.github/workflows/binder-on-pr.yml b/.github/workflows/binder-on-pr.yml index 87e9cd2..c9c2ac6 100644 --- a/.github/workflows/binder-on-pr.yml +++ b/.github/workflows/binder-on-pr.yml @@ -11,4 +11,4 @@ jobs: steps: - uses: jupyterlab/maintainer-tools/.github/actions/binder-link@v1 with: - github_token: ${{ secrets.github_token }} + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e60afba..1dc3d53 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,90 +6,92 @@ on: pull_request: branches: '*' +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + jobs: build: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Base Setup - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - - - name: Install dependencies - run: python -m pip install -U "jupyterlab>=4.0.0,<5" - - - name: Lint the extension - run: | - set -eux - jlpm - jlpm run lint:check - - - name: Test the extension - run: | - set -eux - jlpm run test - - - name: Build the extension - run: | - set -eux - python -m pip install .[test] - - pytest -vv -r ap --cov jupyterlab_myst - jupyter server extension list - jupyter server extension list 2>&1 | grep -ie "jupyterlab_myst.*OK" - - jupyter labextension list - jupyter labextension list 2>&1 | grep -ie "jupyterlab-myst.*OK" - python -m jupyterlab.browser_check - - - name: Package the extension - run: | - set -eux - - pip install build - python -m build - pip uninstall -y "jupyterlab_myst" jupyterlab - - - name: Upload extension packages - uses: actions/upload-artifact@v3 - with: - name: extension-artifacts - path: dist/jupyterlab_myst* - if-no-files-found: error + - name: Checkout + uses: actions/checkout@v3 + + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Install dependencies + run: python -m pip install -U "jupyterlab>=4.0.0,<5" + + - name: Lint the extension + run: | + set -eux + jlpm + jlpm run lint:check + + - name: Test the extension + run: | + set -eux + jlpm run test + + - name: Build the extension + run: | + set -eux + python -m pip install .[test] + + pytest -vv -r ap --cov jupyterlab_myst + jupyter server extension list + jupyter server extension list 2>&1 | grep -ie "jupyterlab_myst.*OK" + + jupyter labextension list + jupyter labextension list 2>&1 | grep -ie "jupyterlab-myst.*OK" + python -m jupyterlab.browser_check + + - name: Package the extension + run: | + set -eux + + pip install build + python -m build + pip uninstall -y "jupyterlab_myst" jupyterlab + + - name: Upload extension packages + uses: actions/upload-artifact@v3 + with: + name: extension-artifacts + path: dist/jupyterlab_myst* + if-no-files-found: error test_isolated: needs: build runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Install Python - uses: actions/setup-python@v4 - with: - python-version: '3.9' - architecture: 'x64' - - uses: actions/download-artifact@v3 - with: - name: extension-artifacts - - name: Install and Test - run: | - set -eux - # Remove NodeJS, twice to take care of system and locally installed node versions. - sudo rm -rf $(which node) - sudo rm -rf $(which node) - - pip install "jupyterlab>=4.0.0b0,<5" jupyterlab_myst*.whl - - - jupyter server extension list - jupyter server extension list 2>&1 | grep -ie "jupyterlab_myst.*OK" - - jupyter labextension list - jupyter labextension list 2>&1 | grep -ie "jupyterlab-myst.*OK" - python -m jupyterlab.browser_check --no-browser-test + - name: Install Python + uses: actions/setup-python@v4 + with: + python-version: '3.9' + architecture: 'x64' + - uses: actions/download-artifact@v3 + with: + name: extension-artifacts + - name: Install and Test + run: | + set -eux + # Remove NodeJS, twice to take care of system and locally installed node versions. + sudo rm -rf $(which node) + sudo rm -rf $(which node) + + pip install "jupyterlab>=4.0.0,<5" jupyterlab_myst*.whl + + + jupyter server extension list + jupyter server extension list 2>&1 | grep -ie "jupyterlab_myst.*OK" + + jupyter labextension list + jupyter labextension list 2>&1 | grep -ie "jupyterlab-myst.*OK" + python -m jupyterlab.browser_check --no-browser-test integration-tests: name: Integration tests @@ -100,52 +102,53 @@ jobs: PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/pw-browsers steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Base Setup - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - - - name: Download extension package - uses: actions/download-artifact@v3 - with: - name: extension-artifacts - - - name: Install the extension - run: | - set -eux - python -m pip install "jupyterlab>=4.0.0b0,<5" jupyterlab_myst*.whl - - - name: Install dependencies - working-directory: ui-tests - env: - PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 - run: jlpm install - - - name: Set up browser cache - uses: actions/cache@v3 - with: - path: | - ${{ github.workspace }}/pw-browsers - key: ${{ runner.os }}-${{ hashFiles('ui-tests/yarn.lock') }} - - - name: Install browser - run: jlpm playwright install chromium - working-directory: ui-tests - - - name: Execute integration tests - working-directory: ui-tests - run: | - jlpm playwright test - - - name: Upload Playwright Test report - if: always() - uses: actions/upload-artifact@v3 - with: - name: jupyterlab_myst-playwright-tests - path: | - ui-tests/test-results - ui-tests/playwright-report + - name: Checkout + uses: actions/checkout@v3 + + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Download extension package + uses: actions/download-artifact@v3 + with: + name: extension-artifacts + + - name: Install the extension + run: | + set -eux + python -m pip install "jupyterlab>=4.0.0,<5" jupyterlab_myst*.whl + + - name: Install dependencies + working-directory: ui-tests + env: + YARN_ENABLE_IMMUTABLE_INSTALLS: 0 + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + run: jlpm install + + - name: Set up browser cache + uses: actions/cache@v3 + with: + path: | + ${{ github.workspace }}/pw-browsers + key: ${{ runner.os }}-${{ hashFiles('ui-tests/yarn.lock') }} + + - name: Install browser + run: jlpm playwright install chromium + working-directory: ui-tests + + - name: Execute integration tests + working-directory: ui-tests + run: | + jlpm playwright test + + - name: Upload Playwright Test report + if: always() + uses: actions/upload-artifact@v3 + with: + name: jupyterlab_myst-playwright-tests + path: | + ui-tests/test-results + ui-tests/playwright-report check_links: name: Check Links @@ -154,7 +157,4 @@ jobs: steps: - uses: actions/checkout@v3 - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - - name: Install missing dependencies - # On May 30, 2023 this wasn't included in the base try removing in future! - run: pip install typing_extensions - uses: jupyterlab/maintainer-tools/.github/actions/check-links@v1 diff --git a/.github/workflows/check-release.yml b/.github/workflows/check-release.yml index 93e41e4..725f602 100644 --- a/.github/workflows/check-release.yml +++ b/.github/workflows/check-release.yml @@ -5,6 +5,10 @@ on: pull_request: branches: ["*"] +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + jobs: check_release: runs-on: ubuntu-latest @@ -13,9 +17,6 @@ jobs: uses: actions/checkout@v3 - name: Base Setup uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - - name: Install Dependencies - run: | - pip install -e . - name: Check Release uses: jupyter-server/jupyter_releaser/.github/actions/check-release@v2 with: diff --git a/.github/workflows/prep-release.yml b/.github/workflows/prep-release.yml index 7a2a18d..83f876f 100644 --- a/.github/workflows/prep-release.yml +++ b/.github/workflows/prep-release.yml @@ -12,6 +12,10 @@ on: post_version_spec: description: "Post Version Specifier" required: false + # silent: + # description: "Set a placeholder in the changelog and don't publish the release." + # required: false + # type: boolean since: description: "Use PRs with activity since this date or git reference" required: false @@ -32,8 +36,8 @@ jobs: token: ${{ secrets.ADMIN_GITHUB_TOKEN }} version_spec: ${{ github.event.inputs.version_spec }} post_version_spec: ${{ github.event.inputs.post_version_spec }} - target: ${{ github.event.inputs.target }} branch: ${{ github.event.inputs.branch }} + # silent: ${{ github.event.inputs.silent }} since: ${{ github.event.inputs.since }} since_last_stable: ${{ github.event.inputs.since_last_stable }} diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 1ddf2e2..cf6d905 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -39,7 +39,7 @@ jobs: # PYPI_TOKEN_MAP: ${{ secrets.PYPI_TOKEN_MAP }} # TWINE_USERNAME: __token__ NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - uses: jupyter-server/jupyter-releaser/.github/actions/finalize-release@v2 + uses: jupyter-server/jupyter_releaser/.github/actions/finalize-release@v2 with: token: ${{ secrets.ADMIN_GITHUB_TOKEN }} release_url: ${{ steps.populate-release.outputs.release_url }} diff --git a/.github/workflows/update-integration-tests.yml b/.github/workflows/update-integration-tests.yml index 5c819df..7ea5a66 100644 --- a/.github/workflows/update-integration-tests.yml +++ b/.github/workflows/update-integration-tests.yml @@ -10,20 +10,23 @@ permissions: jobs: update-snapshots: - if: ${{ github.event.issue.pull_request && contains(github.event.comment.body, 'please update playwright snapshots') }} + if: ${{ github.event.issue.pull_request && contains(github.event.comment.body, 'please update snapshots') }} runs-on: ubuntu-latest steps: + - name: React to the triggering comment + run: | + gh api repos/${{ github.repository }}/issues/comments/${{ github.event.comment.id }}/reactions --raw-field 'content=+1' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: token: ${{ secrets.GITHUB_TOKEN }} - - name: Configure git to use https - run: git config --global hub.protocol https - - name: Checkout the branch from the PR that triggered the job - run: hub pr checkout ${{ github.event.issue.number }} + run: gh pr checkout ${{ github.event.issue.number }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -31,7 +34,7 @@ jobs: uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - name: Install dependencies - run: python -m pip install -U "jupyterlab>=4.0.0b0,<5" + run: python -m pip install -U "jupyterlab>=4.0.0,<5" - name: Install extension run: | @@ -42,7 +45,6 @@ jobs: - uses: jupyterlab/maintainer-tools/.github/actions/update-snapshots@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} - npm_client: jlpm # Playwright knows how to start JupyterLab server start_server_script: 'null' test_folder: ui-tests diff --git a/.prettierignore b/.prettierignore index 0106dea..a5e3bca 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,5 +4,3 @@ node_modules **/package.json !/package.json jupyterlab_myst -.*/ -docs/ diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index d0824a6..0000000 --- a/.prettierrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "singleQuote": true, - "trailingComma": "none", - "arrowParens": "avoid", - "endOfLine": "auto" -} diff --git a/.stylelintignore b/.stylelintignore index 0d35d9e..13696d2 100644 --- a/.stylelintignore +++ b/.stylelintignore @@ -1,3 +1,3 @@ +style/jupyterlab-typography.css style/app.css -style/tailwind.css style/preflight.css diff --git a/.stylelintrc b/.stylelintrc deleted file mode 100644 index 8c1ae52..0000000 --- a/.stylelintrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": [ - "stylelint-config-recommended", - "stylelint-config-standard", - "stylelint-prettier/recommended" - ], - "rules": { - "property-no-vendor-prefix": null, - "selector-no-vendor-prefix": null, - "value-no-vendor-prefix": null, - "at-rule-no-unknown": null, - "selector-class-pattern": null - } -} diff --git a/.yarnrc.yml b/.yarnrc.yml index fe1125f..3186f3f 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -1,3 +1 @@ -enableImmutableInstalls: false - nodeLinker: node-modules diff --git a/LICENSE b/LICENSE index e501b98..6a5ef92 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,29 @@ -Copyright (c) 2022 ExecutableBookProject +BSD 3-Clause License -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Copyright (c) 2024, Executable Book Project +All rights reserved. -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. 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. + +3. 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. diff --git a/RELEASE.md b/RELEASE.md index e0e097c..8f66cc9 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -21,6 +21,18 @@ See the docs on [hatch-nodejs-version](https://github.com/agoose77/hatch-nodejs- hatch version ``` +Make sure to clean up all the development files before building the package: + +```bash +jlpm clean:all +``` + +You could also clean up the local git repository: + +```bash +git clean -dfX +``` + To create a Python source package (`.tar.gz`) and the binary package (`.whl`) in the `dist/` directory, do: ```bash @@ -52,7 +64,41 @@ Check out the [workflow documentation](https://jupyter-releaser.readthedocs.io/e Here is a summary of the steps to cut a new release: -- Add `ADMIN_GITHUB_TOKEN`, `PYPI_TOKEN` and `NPM_TOKEN` to the [Github Secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets) in the repository +- Add tokens to the [Github Secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets) in the repository: + - `ADMIN_GITHUB_TOKEN` (with "public_repo" and "repo:status" permissions); see the [documentation](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) + - `NPM_TOKEN` (with "automation" permission); see the [documentation](https://docs.npmjs.com/creating-and-viewing-access-tokens) +- Set up PyPI + +
Using PyPI trusted publisher (modern way) + +- Set up your PyPI project by [adding a trusted publisher](https://docs.pypi.org/trusted-publishers/adding-a-publisher/) + - The _workflow name_ is `publish-release.yml` and the _environment_ should be left blank. +- Ensure the publish release job as `permissions`: `id-token : write` (see the [documentation](https://docs.pypi.org/trusted-publishers/using-a-publisher/)) + +
+ +
Using PyPI token (legacy way) + +- If the repo generates PyPI release(s), create a scoped PyPI [token](https://packaging.python.org/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/#saving-credentials-on-github). We recommend using a scoped token for security reasons. + +- You can store the token as `PYPI_TOKEN` in your fork's `Secrets`. + + - Advanced usage: if you are releasing multiple repos, you can create a secret named `PYPI_TOKEN_MAP` instead of `PYPI_TOKEN` that is formatted as follows: + + ```text + owner1/repo1,token1 + owner2/repo2,token2 + ``` + + If you have multiple Python packages in the same repository, you can point to them as follows: + + ```text + owner1/repo1/path/to/package1,token1 + owner1/repo1/path/to/package2,token2 + ``` + +
+ - Go to the Actions panel - Run the "Step 1: Prep Release" workflow - Check the draft changelog diff --git a/binder/environment.yml b/binder/environment.yml index a950ac9..6de8839 100644 --- a/binder/environment.yml +++ b/binder/environment.yml @@ -11,14 +11,11 @@ channels: dependencies: # runtime dependencies - - python >=3.8,<3.9.0a0 - - jupyterlab >=3,<4.0.0a0 + - python >=3.10,<3.11.0a0 + - jupyterlab >=4.0.0,<5 # labextension build dependencies - - nodejs >=14,<15 + - nodejs >=18,<19 - pip - wheel # additional packages for demos - - numpy - - matplotlib - - ipywidgets - - sympy + # - ipywidgets diff --git a/package.json b/package.json index 5bc2c04..fbdec40 100644 --- a/package.json +++ b/package.json @@ -1,130 +1,227 @@ { - "name": "jupyterlab-myst", - "version": "2.2.0", - "description": "Use MyST in JupyterLab", - "keywords": [ - "jupyter", - "jupyterlab", - "jupyterlab-extension" - ], - "homepage": "https://github.com/executablebooks/jupyterlab-myst", - "bugs": { - "url": "https://github.com/executablebooks/jupyterlab-myst/issues" - }, - "license": "MIT", - "author": { - "name": "Executable Book Project", - "email": "executablebooks@gmail.com" - }, - "files": [ - "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}", - "style/**/*.{css,js,eot,gif,html,jpg,json,png,svg,woff2,ttf}", - "style/index.js" - ], - "main": "lib/index.js", - "types": "lib/index.d.ts", - "style": "style/index.css", - "repository": { - "type": "git", - "url": "https://github.com/executablebooks/jupyterlab-myst.git" - }, - "scripts": { - "build": "jlpm build:css && jlpm build:lib && jlpm build:labextension:dev", - "build:css": "tailwindcss -m -i ./style/tailwind.css -o style/app.css", - "build:labextension": "jupyter labextension build .", - "build:labextension:dev": "jupyter labextension build --development True .", - "build:lib": "tsc --sourceMap", - "build:lib:prod": "tsc", - "build:prod": "jlpm clean && jlpm build:css && jlpm build:lib:prod && jlpm build:labextension", - "clean": "jlpm clean:lib", - "clean:all": "jlpm clean:lib && jlpm clean:labextension && jlpm clean:lintcache", - "clean:labextension": "rimraf jupyterlab_myst/labextension jupyterlab_myst/_version.py", - "clean:lib": "rimraf lib tsconfig.tsbuildinfo", - "clean:lintcache": "rimraf .eslintcache .stylelintcache", - "eslint": "jlpm eslint:check --fix", - "eslint:check": "eslint . --cache --ext .ts,.tsx", - "install:extension": "jlpm build", - "lint": "jlpm stylelint && jlpm prettier && jlpm eslint", - "lint:check": "jlpm stylelint:check && jlpm prettier:check && jlpm eslint:check", - "prettier": "jlpm prettier:base --write --list-different", - "prettier:base": "prettier \"**/*{.ts,.tsx,.js,.jsx,.json,.md}\"", - "prettier:check": "jlpm prettier:base --check", - "stylelint": "jlpm stylelint:check --fix", - "stylelint:check": "stylelint --cache \"style/**/*.css\"", - "test": "jest --coverage", - "watch": "run-p watch:src watch:css watch:labextension", - "watch:css": "tailwindcss -w -i ./style/tailwind.css -o style/app.css", - "watch:labextension": "jupyter labextension watch .", - "watch:src": "tsc -w" - }, - "dependencies": { - "@jupyterlab/application": "^4.0.0", - "@jupyterlab/apputils": "^4.0.0", - "@jupyterlab/codeeditor": "^4.0.0", - "@jupyterlab/markdownviewer": "^4.0.0", - "@jupyterlab/notebook": "^4.0.0", - "@jupyterlab/rendermime": "^4.0.0", - "@jupyterlab/translation": "^4.0.0", - "@myst-theme/diagrams": "^0.5.21", - "@myst-theme/frontmatter": "^0.5.21", - "@myst-theme/providers": "^0.5.21", - "katex": "^0.15.2", - "myst-common": "^1.1.21", - "myst-ext-card": "^1.0.5", - "myst-ext-exercise": "^1.0.5", - "myst-ext-grid": "^1.0.5", - "myst-ext-proof": "^1.0.7", - "myst-ext-tabs": "^1.0.5", - "myst-frontmatter": "^1.1.21", - "myst-parser": "^1.0.21", - "myst-to-html": "^1.0.21", - "myst-to-react": "^0.5.21", - "myst-transforms": "^1.1.19" - }, - "devDependencies": { - "@babel/core": "^7.0.0", - "@babel/preset-env": "^7.0.0", - "@jupyterlab/builder": "^4.0.0", - "@jupyterlab/testutils": "^4.0.0", - "@myst-theme/styles": "^0.3.3", - "@tailwindcss/typography": "^0.5.8", - "@types/jest": "^29.2.0", - "@types/json-schema": "^7.0.11", - "@types/markdown-it": "^12.2.3", - "@types/react": "^18.0.26", - "@types/react-dom": "^18.0.9", - "@typescript-eslint/eslint-plugin": "^5.55.0", - "@typescript-eslint/parser": "^5.55.0", - "css-loader": "^6.7.1", - "eslint": "^8.36.0", - "eslint-config-prettier": "^8.7.0", - "eslint-plugin-prettier": "^4.2.1", - "jest": "^29.2.0", - "mkdirp": "^1.0.3", - "npm-run-all": "^4.1.5", - "prettier": "^2.8.7", - "rimraf": "^4.4.1", - "style-loader": "^3.3.1", - "stylelint": "^14.9.1", - "stylelint-config-prettier": "^9.0.4", - "stylelint-config-recommended": "^8.0.0", - "stylelint-config-standard": "^26.0.0", - "stylelint-prettier": "^2.0.0", - "tailwindcss": "^3.2.4", - "ts-jest": "^29.1.0", - "typescript": "~5.0.2", - "yjs": "^13.5.40" - }, - "sideEffects": [ - "style/*.css", - "style/index.js" - ], - "styleModule": "style/index.js", - "publishConfig": { - "access": "public" - }, - "jupyterlab": { - "extension": true, - "outputDir": "jupyterlab_myst/labextension" - } + "name": "jupyterlab-myst", + "version": "2.2.0", + "description": "Use MyST in JupyterLab", + "keywords": [ + "jupyter", + "jupyterlab", + "jupyterlab-extension" + ], + "homepage": "https://github.com/executablebooks/jupyterlab-myst", + "bugs": { + "url": "https://github.com/executablebooks/jupyterlab-myst/issues" + }, + "license": "MIT", + "author": { + "name": "Executable Book Project", + "email": "executablebooks@gmail.com" + }, + "files": [ + "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}", + "style/**/*.{css,js,eot,gif,html,jpg,json,png,svg,woff2,ttf}", + "style/index.js" + ], + "main": "lib/index.js", + "types": "lib/index.d.ts", + "style": "style/index.css", + "repository": { + "type": "git", + "url": "https://github.com/executablebooks/jupyterlab-myst.git" + }, + "scripts": { + "build": "jlpm build:css && jlpm build:lib && jlpm build:labextension:dev", + "build:css": "tailwindcss -m -i ./style/tailwind.css -o style/app.css", + "build:labextension": "jupyter labextension build .", + "build:labextension:dev": "jupyter labextension build --development True .", + "build:lib": "tsc --sourceMap", + "build:lib:prod": "tsc", + "build:prod": "jlpm clean && jlpm build:css && jlpm build:lib:prod && jlpm build:labextension", + "clean": "jlpm clean:lib", + "clean:all": "jlpm clean:lib && jlpm clean:labextension && jlpm clean:lintcache", + "clean:labextension": "rimraf jupyterlab_myst/labextension jupyterlab_myst/_version.py", + "clean:lib": "rimraf lib tsconfig.tsbuildinfo", + "clean:lintcache": "rimraf .eslintcache .stylelintcache", + "eslint": "jlpm eslint:check --fix", + "eslint:check": "eslint . --cache --ext .ts,.tsx", + "install:extension": "jlpm build", + "lint": "jlpm stylelint && jlpm prettier && jlpm eslint", + "lint:check": "jlpm stylelint:check && jlpm prettier:check && jlpm eslint:check", + "prettier": "jlpm prettier:base --write --list-different", + "prettier:base": "prettier \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"", + "prettier:check": "jlpm prettier:base --check", + "stylelint": "jlpm stylelint:check --fix", + "stylelint:check": "stylelint --cache \"style/**/*.css\"", + "test": "jest --coverage", + "watch": "run-p watch:css watch:src watch:labextension", + "watch:css": "tailwindcss -w -i ./style/tailwind.css -o style/app.css", + "watch:labextension": "jupyter labextension watch .", + "watch:src": "tsc -w --sourceMap" + }, + "dependencies": { + "@jupyterlab/application": "^4.0.0", + "@jupyterlab/apputils": "^4.0.0", + "@jupyterlab/codeeditor": "^4.0.0", + "@jupyterlab/markdownviewer": "^4.0.0", + "@jupyterlab/notebook": "^4.0.0", + "@jupyterlab/rendermime": "^4.0.0", + "@jupyterlab/translation": "^4.0.0", + "@myst-theme/diagrams": "^0.5.21", + "@myst-theme/frontmatter": "^0.5.21", + "@myst-theme/providers": "^0.5.21", + "katex": "^0.15.2", + "myst-common": "^1.1.21", + "myst-ext-card": "^1.0.5", + "myst-ext-exercise": "^1.0.5", + "myst-ext-grid": "^1.0.5", + "myst-ext-proof": "^1.0.7", + "myst-ext-tabs": "^1.0.5", + "myst-frontmatter": "^1.1.21", + "myst-parser": "^1.0.21", + "myst-to-html": "^1.0.21", + "myst-to-react": "^0.5.21", + "myst-transforms": "^1.1.19" + }, + "devDependencies": { + "@babel/core": "^7.0.0", + "@babel/preset-env": "^7.0.0", + "@jupyterlab/builder": "^4.0.0", + "@jupyterlab/testutils": "^4.0.0", + "@myst-theme/styles": "^0.3.3", + "@tailwindcss/typography": "^0.5.8", + "@types/jest": "^29.2.0", + "@types/json-schema": "^7.0.11", + "@types/markdown-it": "^12.2.3", + "@types/react": "^18.0.26", + "@types/react-addons-linked-state-mixin": "^0.14.22", + "@types/react-dom": "^18.0.9", + "@typescript-eslint/eslint-plugin": "^6.1.0", + "@typescript-eslint/parser": "^6.1.0", + "css-loader": "^6.7.1", + "eslint": "^8.36.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-prettier": "^5.0.0", + "jest": "^29.2.0", + "mkdirp": "^1.0.3", + "npm-run-all": "^4.1.5", + "prettier": "^3.0.0", + "rimraf": "^5.0.1", + "source-map-loader": "^1.0.2", + "style-loader": "^3.3.1", + "stylelint": "^15.10.1", + "stylelint-config-prettier": "^9.0.4", + "stylelint-config-recommended": "^13.0.0", + "stylelint-config-standard": "^34.0.0", + "stylelint-csstree-validator": "^3.0.0", + "stylelint-prettier": "^4.0.0", + "tailwindcss": "^3.2.4", + "ts-jest": "^29.1.0", + "typescript": "~5.0.2", + "yjs": "^13.5.40" + }, + "sideEffects": [ + "style/*.css", + "style/index.js" + ], + "styleModule": "style/index.js", + "publishConfig": { + "access": "public" + }, + "jupyterlab": { + "extension": true, + "outputDir": "jupyterlab_myst/labextension" + }, + "eslintConfig": { + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended", + "plugin:prettier/recommended" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "tsconfig.json", + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint" + ], + "rules": { + "@typescript-eslint/naming-convention": [ + "error", + { + "selector": "interface", + "format": [ + "PascalCase" + ], + "custom": { + "regex": "^I[A-Z]", + "match": true + } + } + ], + "@typescript-eslint/no-unused-vars": [ + "warn", + { + "args": "none" + } + ], + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/quotes": [ + "error", + "single", + { + "avoidEscape": true, + "allowTemplateLiterals": false + } + ], + "curly": [ + "error", + "all" + ], + "eqeqeq": "error", + "prefer-arrow-callback": "error" + } + }, + "eslintIgnore": [ + "node_modules", + "dist", + "coverage", + "**/*.d.ts", + "tests", + "**/__tests__", + "ui-tests" + ], + "prettier": { + "singleQuote": true, + "trailingComma": "none", + "arrowParens": "avoid", + "endOfLine": "auto", + "overrides": [ + { + "files": "package.json", + "options": { + "tabWidth": 4 + } + } + ] + }, + "stylelint": { + "extends": [ + "stylelint-config-recommended", + "stylelint-config-standard", + "stylelint-prettier/recommended" + ], + "plugins": [ + "stylelint-csstree-validator" + ], + "rules": { + "csstree/validator": true, + "property-no-vendor-prefix": null, + "selector-class-pattern": "^([a-z][A-z\\d]*)(-[A-z\\d]+)*$", + "selector-no-vendor-prefix": null, + "value-no-vendor-prefix": null + } + } } diff --git a/pyproject.toml b/pyproject.toml index ca8462e..d8a43bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["hatchling>=1.5.0", "jupyterlab>=4.0.0,<5", "hatch-nodejs-version"] +requires = ["hatchling>=1.5.0", "jupyterlab>=4.0.0,<5", "hatch-nodejs-version>=0.3.2"] build-backend = "hatchling.build" [project] @@ -20,6 +20,7 @@ classifiers = [ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", ] dependencies = [ "jupyter_server>=2.0.1,<3;platform_system!='Emscripten'" @@ -49,7 +50,6 @@ exclude = [".github", "binder"] "jupyterlab_myst/labextension" = "share/jupyter/labextensions/jupyterlab-myst" "install.json" = "share/jupyter/labextensions/jupyterlab-myst/install.json" "jupyter-config/server-config" = "etc/jupyter/jupyter_server_config.d" -"jupyter-config/nb-config" = "etc/jupyter/jupyter_notebook_config.d" [tool.hatch.build.hooks.version] path = "jupyterlab_myst/_version.py" diff --git a/setup.py b/setup.py index bea2337..aefdf20 100644 --- a/setup.py +++ b/setup.py @@ -1 +1 @@ -__import__('setuptools').setup() +__import__("setuptools").setup() diff --git a/src/actions.ts b/src/actions.ts index 9a7ae65..d6fa5d8 100644 --- a/src/actions.ts +++ b/src/actions.ts @@ -45,7 +45,7 @@ export async function executeUserExpressions( ); console.debug('Executing named expressions', namedExpressions); // No expressions! - if (namedExpressions.size == 0) { + if (namedExpressions.size === 0) { return Promise.resolve([]); } diff --git a/src/citations.tsx b/src/citations.tsx index 0728d13..5d54da8 100644 --- a/src/citations.tsx +++ b/src/citations.tsx @@ -9,7 +9,9 @@ import { selectAll } from 'unist-util-select'; export async function addCiteChildrenTransform(tree: Root): Promise { const links = selectAll('cite', tree) as GenericNode[]; links.forEach(async cite => { - if (cite.children && cite.children.length > 0) return; + if (cite.children && cite.children.length > 0) { + return; + } cite.error = true; cite.children = [{ type: 'text', value: cite.label }]; }); diff --git a/src/images.ts b/src/images.ts index 279d303..a843897 100644 --- a/src/images.ts +++ b/src/images.ts @@ -11,15 +11,23 @@ export async function imageUrlSourceTransform( opts: Options ): Promise { const resolver = opts.resolver; - if (!resolver) return; + if (!resolver) { + return; + } const images = selectAll('image', tree) as Image[]; await Promise.all( images.map(async image => { - if (!image || !image.url) return; + if (!image || !image.url) { + return; + } const path = await resolver.resolveUrl(image.url); - if (!path) return; + if (!path) { + return; + } const url = await resolver.getDownloadUrl(path); - if (!url) return; + if (!url) { + return; + } image.url = url; }) ); diff --git a/src/links.tsx b/src/links.tsx index 1eb58a1..9110d8a 100644 --- a/src/links.tsx +++ b/src/links.tsx @@ -65,7 +65,9 @@ export const linkFactory = const ref = React.useRef(null); const { to: url } = props; React.useEffect(() => { - if (!ref || !ref.current || !resolver) return; + if (!ref || !ref.current || !resolver) { + return; + } handleAnchor(ref.current, resolver, linkHandler); }, [ref, url]); return ( @@ -89,15 +91,21 @@ export async function internalLinksTransform( const links = selectAll('link,linkBlock', tree) as Link[]; await Promise.all( links.map(async link => { - if (!link || !link.url) return; + if (!link || !link.url) { + return; + } const resolver = opts.resolver; const href = link.url; updateLinkTextIfEmpty(link, href); const isLocal = resolver?.isLocal ? resolver.isLocal(href) : URLExt.isLocal(href); - if (!isLocal) return; - if (!resolver) return; + if (!isLocal) { + return; + } + if (!resolver) { + return; + } if ((link as any).static) { // TODO: remove hash const urlPath = await resolver.resolveUrl(href); diff --git a/src/metadata.ts b/src/metadata.ts index de25713..f0ebe2c 100644 --- a/src/metadata.ts +++ b/src/metadata.ts @@ -23,7 +23,9 @@ export function setUserExpressions( cell: IMySTMarkdownCell | Cell, expressions: IUserExpressionMetadata[] ) { - if (!cell) return; + if (!cell) { + return; + } if (!cell.model.setMetadata) { // this is JupyterLab 3.6 (cell.model.metadata as any).set(metadataSection, expressions); @@ -33,7 +35,9 @@ export function setUserExpressions( } export function deleteUserExpressions(cell: IMySTMarkdownCell | Cell) { - if (!cell) return; + if (!cell) { + return; + } if (!cell.model.setMetadata) { // this is JupyterLab 3.6 (cell.model.metadata as any).delete(metadataSection); diff --git a/src/taskItem.tsx b/src/taskItem.tsx index b6a88f4..8a1ff13 100644 --- a/src/taskItem.tsx +++ b/src/taskItem.tsx @@ -26,7 +26,9 @@ function TaskItem({ checked={local} onClick={() => { // Bail if no line number was found - if (!controller || line == null) return; + if (!controller || line === undefined) { + return; + } controller({ line, checked: !local }); setLocal(!local); }} @@ -39,7 +41,7 @@ function TaskItem({ export const listItem: NodeRenderer = ({ node }) => { - if (node.checked == null) { + if (node.checked === null) { return (
  • diff --git a/src/widget.tsx b/src/widget.tsx index 5b4922b..4d09267 100644 --- a/src/widget.tsx +++ b/src/widget.tsx @@ -30,7 +30,9 @@ import { SanitizerProvider } from './SanitizerProvider'; export const MIME_TYPE = 'text/markdown'; function getJupyterTheme(): Theme { - if (typeof document === 'undefined') return Theme.light; + if (typeof document === 'undefined') { + return Theme.light; + } return document.body.dataset.jpThemeLight === 'false' ? Theme.dark : Theme.light; diff --git a/style/base.css b/style/base.css index 13898f7..06388bc 100644 --- a/style/base.css +++ b/style/base.css @@ -3,8 +3,8 @@ https://jupyterlab.readthedocs.io/en/stable/developer/css.html */ -@import 'app.css'; -@import '~katex/dist/katex.css'; +@import url('app.css'); +@import url('~katex/dist/katex.css'); /* Allow overflow on input areas for myst */ .jp-MySTMarkdownCell .jp-InputArea, diff --git a/style/index.css b/style/index.css index e98119b..8a7ea29 100644 --- a/style/index.css +++ b/style/index.css @@ -1 +1 @@ -@import 'base.css'; +@import url('base.css'); diff --git a/style/tailwind.css b/style/tailwind.css index 8c78c20..49f680d 100644 --- a/style/tailwind.css +++ b/style/tailwind.css @@ -1,12 +1,12 @@ -@import './preflight.css'; -@import './jupyterlab-typography.css'; -@import '@myst-theme/styles/details.css'; -@import '@myst-theme/styles/citations.css'; -@import '@myst-theme/styles/figures.css'; -@import '@myst-theme/styles/text-spacers.css'; -@import '@myst-theme/styles/code-highlight.css'; -@import '@myst-theme/styles/math.css'; -@import '@myst-theme/styles/cross-references.css'; -@import '@myst-theme/styles/block-styles.css'; -@import '@myst-theme/styles/tasklists.css'; -@import '@myst-theme/styles/hover.css'; +@import url('./preflight.css'); +@import url('./jupyterlab-typography.css'); +@import url('@myst-theme/styles/details.css'); +@import url('@myst-theme/styles/citations.css'); +@import url('@myst-theme/styles/figures.css'); +@import url('@myst-theme/styles/text-spacers.css'); +@import url('@myst-theme/styles/code-highlight.css'); +@import url('@myst-theme/styles/math.css'); +@import url('@myst-theme/styles/cross-references.css'); +@import url('@myst-theme/styles/block-styles.css'); +@import url('@myst-theme/styles/tasklists.css'); +@import url('@myst-theme/styles/hover.css'); diff --git a/tsconfig.json b/tsconfig.json index 663d3cc..9897917 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,15 +10,14 @@ "moduleResolution": "node", "noEmitOnError": true, "noImplicitAny": true, - "noUnusedLocals": false, + "noUnusedLocals": true, "preserveWatchOutput": true, "resolveJsonModule": true, "outDir": "lib", "rootDir": "src", "strict": true, "strictNullChecks": true, - "target": "ES2018", - "types": ["jest"] + "target": "ES2018" }, "include": ["src/*"] } diff --git a/tsconfig.test.json b/tsconfig.test.json index 1c66acf..1de37fd 100644 --- a/tsconfig.test.json +++ b/tsconfig.test.json @@ -1,3 +1,6 @@ { - "extends": "./tsconfig" + "extends": "./tsconfig", + "compilerOptions": { + "types": ["jest"] + } } diff --git a/ui-tests/README.md b/ui-tests/README.md index dbe6e8a..8d377fc 100644 --- a/ui-tests/README.md +++ b/ui-tests/README.md @@ -3,7 +3,7 @@ This folder contains the integration tests of the extension. They are defined using [Playwright](https://playwright.dev/docs/intro) test runner -and [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) helper. +and [Galata](https://github.com/jupyterlab/jupyterlab/tree/main/galata) helper. The Playwright configuration is defined in [playwright.config.js](./playwright.config.js). diff --git a/ui-tests/package.json b/ui-tests/package.json index 0b89ead..502941f 100644 --- a/ui-tests/package.json +++ b/ui-tests/package.json @@ -5,11 +5,11 @@ "private": true, "scripts": { "start": "jupyter lab --config jupyter_server_test_config.py", - "playwright": "npx playwright", "test": "jlpm playwright test", "test:update": "jlpm playwright test --update-snapshots" }, "devDependencies": { - "@jupyterlab/galata": "^5.0.2" + "@jupyterlab/galata": "^5.0.5", + "@playwright/test": "^1.37.0" } } diff --git a/yarn.lock b/yarn.lock index f3d09c1..3f41949 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1621,12 +1621,38 @@ __metadata: languageName: node linkType: hard -"@csstools/selector-specificity@npm:^2.0.2": - version: 2.2.0 - resolution: "@csstools/selector-specificity@npm:2.2.0" +"@csstools/css-parser-algorithms@npm:^2.3.1": + version: 2.5.0 + resolution: "@csstools/css-parser-algorithms@npm:2.5.0" + peerDependencies: + "@csstools/css-tokenizer": ^2.2.3 + checksum: 6bfbdb4052acca48de9db0806a1b18458709103390656634ebe3cf0390048a6e9b304b78173fbcd524e03669dacb5cc3bedbe8008c354ff9511aed4935dcfc6f + languageName: node + linkType: hard + +"@csstools/css-tokenizer@npm:^2.2.0": + version: 2.2.3 + resolution: "@csstools/css-tokenizer@npm:2.2.3" + checksum: a2a69f0de516046f85b8f47916879780f9712bdda8166ab01dd47613515ff5a0771555c78badd220686bc1dae3cb0eea5de6896e1e326247a276cc8965520aa6 + languageName: node + linkType: hard + +"@csstools/media-query-list-parser@npm:^2.1.4": + version: 2.1.7 + resolution: "@csstools/media-query-list-parser@npm:2.1.7" + peerDependencies: + "@csstools/css-parser-algorithms": ^2.5.0 + "@csstools/css-tokenizer": ^2.2.3 + checksum: f910d9c29c84e828d121f451607fe9c275297041f317075ede935ffacdd7fd53fcbc0dd4993585e405b5337b7f991b864d101dff3cb8fc400e8c32a9aedbfe69 + languageName: node + linkType: hard + +"@csstools/selector-specificity@npm:^3.0.0": + version: 3.0.1 + resolution: "@csstools/selector-specificity@npm:3.0.1" peerDependencies: - postcss-selector-parser: ^6.0.10 - checksum: 97c89f23b3b527d7bd51ed299969ed2b9fbb219a367948b44aefec228b8eda6ae0ad74fe8a82f9aac8ff32cfd00bb6d0c98d1daeab2e8fc6d5c4af25e5be5673 + postcss-selector-parser: ^6.0.13 + checksum: e4b5aac3bd3ca1f824cb9578f52b16046a519aa8050ce291da37e611976a83cd3b2b2f908d2678dd4cbbe00bbde8ec28c34fffc40dbbf9a13608dfcaf382ee80 languageName: node linkType: hard @@ -1637,7 +1663,7 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0": +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" dependencies: @@ -1648,7 +1674,14 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.4.0, @eslint-community/regexpp@npm:^4.6.1": +"@eslint-community/regexpp@npm:^4.5.1": + version: 4.10.0 + resolution: "@eslint-community/regexpp@npm:4.10.0" + checksum: 2a6e345429ea8382aaaf3a61f865cae16ed44d31ca917910033c02dc00d505d939f10b81e079fa14d43b51499c640138e153b7e40743c4c094d9df97d4e56f7b + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.6.1": version: 4.9.1 resolution: "@eslint-community/regexpp@npm:4.9.1" checksum: 06fb839e9c756f6375cc545c2f2e05a0a64576bd6370e8e3c07983fd29a3d6e164ef4aa48a361f7d27e6713ab79c83053ff6a2ccb78748bc955e344279c4a3b6 @@ -3149,6 +3182,13 @@ __metadata: languageName: node linkType: hard +"@pkgr/core@npm:^0.1.0": + version: 0.1.1 + resolution: "@pkgr/core@npm:0.1.1" + checksum: 6f25fd2e3008f259c77207ac9915b02f1628420403b2630c92a07ff963129238c9262afc9e84344c7a23b5cc1f3965e2cd17e3798219f5fd78a63d144d3cceba + languageName: node + linkType: hard + "@radix-ui/primitive@npm:1.0.1": version: 1.0.1 resolution: "@radix-ui/primitive@npm:1.0.1" @@ -3683,6 +3723,15 @@ __metadata: languageName: node linkType: hard +"@types/create-react-class@npm:*": + version: 15.6.7 + resolution: "@types/create-react-class@npm:15.6.7" + dependencies: + "@types/react": "*" + checksum: 072c1fe0472217fe80b94965a8c23dd2f53b701c56bcf1e16da4d422aeb3fcba65972768f4b8ac90a5ca1ef8721730fb78fb8da080b9a8b004b6df667acc7ec7 + languageName: node + linkType: hard + "@types/eslint-scope@npm:^3.7.3": version: 3.7.5 resolution: "@types/eslint-scope@npm:3.7.5" @@ -3797,6 +3846,13 @@ __metadata: languageName: node linkType: hard +"@types/json-schema@npm:^7.0.12": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 + languageName: node + linkType: hard + "@types/linkify-it@npm:*": version: 3.0.3 resolution: "@types/linkify-it@npm:3.0.3" @@ -3830,10 +3886,10 @@ __metadata: languageName: node linkType: hard -"@types/minimist@npm:^1.2.0": - version: 1.2.3 - resolution: "@types/minimist@npm:1.2.3" - checksum: 666ea4f8c39dcbdfbc3171fe6b3902157c845cc9cb8cee33c10deb706cda5e0cc80f98ace2d6d29f6774b0dc21180c96cd73c592a1cbefe04777247c7ba0e84b +"@types/minimist@npm:^1.2.2": + version: 1.2.5 + resolution: "@types/minimist@npm:1.2.5" + checksum: 477047b606005058ab0263c4f58097136268007f320003c348794f74adedc3166ffc47c80ec3e94687787f2ab7f4e72c468223946e79892cf0fd9e25e9970a90 languageName: node linkType: hard @@ -3853,13 +3909,6 @@ __metadata: languageName: node linkType: hard -"@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: fd6bce2b674b6efc3db4c7c3d336bd70c90838e8439de639b909ce22f3720d21344f52427f1d9e57b265fcb7f6c018699b99e5e0c208a1a4823014269a6bf35b - languageName: node - linkType: hard - "@types/parse5@npm:^6.0.0": version: 6.0.3 resolution: "@types/parse5@npm:6.0.3" @@ -3874,6 +3923,16 @@ __metadata: languageName: node linkType: hard +"@types/react-addons-linked-state-mixin@npm:^0.14.22": + version: 0.14.27 + resolution: "@types/react-addons-linked-state-mixin@npm:0.14.27" + dependencies: + "@types/create-react-class": "*" + "@types/react": "*" + checksum: a78007698a236335a50c74ddd27669028213ff363219f97a6ea1f000ddb8714c83838002ea07c33024f964112a229e447127b457fa3f9b3db352dd41d6b8d328 + languageName: node + linkType: hard + "@types/react-dom@npm:^18.0.9": version: 18.2.12 resolution: "@types/react-dom@npm:18.2.12" @@ -3901,10 +3960,10 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.3.12": - version: 7.5.3 - resolution: "@types/semver@npm:7.5.3" - checksum: 349fdd1ab6c213bac5c991bac766bd07b8b12e63762462bb058740dcd2eb09c8193d068bb226f134661275f2022976214c0e727a4e5eb83ec1b131127c980d3e +"@types/semver@npm:^7.5.0": + version: 7.5.6 + resolution: "@types/semver@npm:7.5.6" + checksum: 563a0120ec0efcc326567db2ed920d5d98346f3638b6324ea6b50222b96f02a8add3c51a916b6897b51523aad8ac227d21d3dcf8913559f1bfc6c15b14d23037 languageName: node linkType: hard @@ -3970,124 +4029,126 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^5.55.0": - version: 5.62.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" +"@typescript-eslint/eslint-plugin@npm:^6.1.0": + version: 6.21.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" dependencies: - "@eslint-community/regexpp": ^4.4.0 - "@typescript-eslint/scope-manager": 5.62.0 - "@typescript-eslint/type-utils": 5.62.0 - "@typescript-eslint/utils": 5.62.0 + "@eslint-community/regexpp": ^4.5.1 + "@typescript-eslint/scope-manager": 6.21.0 + "@typescript-eslint/type-utils": 6.21.0 + "@typescript-eslint/utils": 6.21.0 + "@typescript-eslint/visitor-keys": 6.21.0 debug: ^4.3.4 graphemer: ^1.4.0 - ignore: ^5.2.0 - natural-compare-lite: ^1.4.0 - semver: ^7.3.7 - tsutils: ^3.21.0 + ignore: ^5.2.4 + natural-compare: ^1.4.0 + semver: ^7.5.4 + ts-api-utils: ^1.0.1 peerDependencies: - "@typescript-eslint/parser": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: fc104b389c768f9fa7d45a48c86d5c1ad522c1d0512943e782a56b1e3096b2cbcc1eea3fcc590647bf0658eef61aac35120a9c6daf979bf629ad2956deb516a1 + checksum: 5ef2c502255e643e98051e87eb682c2a257e87afd8ec3b9f6274277615e1c2caf3131b352244cfb1987b8b2c415645eeacb9113fa841fc4c9b2ac46e8aed6efd languageName: node linkType: hard -"@typescript-eslint/parser@npm:^5.55.0": - version: 5.62.0 - resolution: "@typescript-eslint/parser@npm:5.62.0" +"@typescript-eslint/parser@npm:^6.1.0": + version: 6.21.0 + resolution: "@typescript-eslint/parser@npm:6.21.0" dependencies: - "@typescript-eslint/scope-manager": 5.62.0 - "@typescript-eslint/types": 5.62.0 - "@typescript-eslint/typescript-estree": 5.62.0 + "@typescript-eslint/scope-manager": 6.21.0 + "@typescript-eslint/types": 6.21.0 + "@typescript-eslint/typescript-estree": 6.21.0 + "@typescript-eslint/visitor-keys": 6.21.0 debug: ^4.3.4 peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: d168f4c7f21a7a63f47002e2d319bcbb6173597af5c60c1cf2de046b46c76b4930a093619e69faf2d30214c29ab27b54dcf1efc7046a6a6bd6f37f59a990e752 + checksum: 162fe3a867eeeffda7328bce32dae45b52283c68c8cb23258fb9f44971f761991af61f71b8c9fe1aa389e93dfe6386f8509c1273d870736c507d76dd40647b68 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/scope-manager@npm:5.62.0" +"@typescript-eslint/scope-manager@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/scope-manager@npm:6.21.0" dependencies: - "@typescript-eslint/types": 5.62.0 - "@typescript-eslint/visitor-keys": 5.62.0 - checksum: 6062d6b797fe1ce4d275bb0d17204c827494af59b5eaf09d8a78cdd39dadddb31074dded4297aaf5d0f839016d601032857698b0e4516c86a41207de606e9573 + "@typescript-eslint/types": 6.21.0 + "@typescript-eslint/visitor-keys": 6.21.0 + checksum: 71028b757da9694528c4c3294a96cc80bc7d396e383a405eab3bc224cda7341b88e0fc292120b35d3f31f47beac69f7083196c70616434072fbcd3d3e62d3376 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/type-utils@npm:5.62.0" +"@typescript-eslint/type-utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/type-utils@npm:6.21.0" dependencies: - "@typescript-eslint/typescript-estree": 5.62.0 - "@typescript-eslint/utils": 5.62.0 + "@typescript-eslint/typescript-estree": 6.21.0 + "@typescript-eslint/utils": 6.21.0 debug: ^4.3.4 - tsutils: ^3.21.0 + ts-api-utils: ^1.0.1 peerDependencies: - eslint: "*" + eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: fc41eece5f315dfda14320be0da78d3a971d650ea41300be7196934b9715f3fe1120a80207551eb71d39568275dbbcf359bde540d1ca1439d8be15e9885d2739 + checksum: 77025473f4d80acf1fafcce99c5c283e557686a61861febeba9c9913331f8a41e930bf5cd8b7a54db502a57b6eb8ea6d155cbd4f41349ed00e3d7aeb1f477ddc languageName: node linkType: hard -"@typescript-eslint/types@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/types@npm:5.62.0" - checksum: 48c87117383d1864766486f24de34086155532b070f6264e09d0e6139449270f8a9559cfef3c56d16e3bcfb52d83d42105d61b36743626399c7c2b5e0ac3b670 +"@typescript-eslint/types@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/types@npm:6.21.0" + checksum: 9501b47d7403417af95fc1fb72b2038c5ac46feac0e1598a46bcb43e56a606c387e9dcd8a2a0abe174c91b509f2d2a8078b093786219eb9a01ab2fbf9ee7b684 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" +"@typescript-eslint/typescript-estree@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" dependencies: - "@typescript-eslint/types": 5.62.0 - "@typescript-eslint/visitor-keys": 5.62.0 + "@typescript-eslint/types": 6.21.0 + "@typescript-eslint/visitor-keys": 6.21.0 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 - semver: ^7.3.7 - tsutils: ^3.21.0 + minimatch: 9.0.3 + semver: ^7.5.4 + ts-api-utils: ^1.0.1 peerDependenciesMeta: typescript: optional: true - checksum: 3624520abb5807ed8f57b1197e61c7b1ed770c56dfcaca66372d584ff50175225798bccb701f7ef129d62c5989070e1ee3a0aa2d84e56d9524dcf011a2bb1a52 + checksum: dec02dc107c4a541e14fb0c96148f3764b92117c3b635db3a577b5a56fc48df7a556fa853fb82b07c0663b4bf2c484c9f245c28ba3e17e5cb0918ea4cab2ea21 languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/utils@npm:5.62.0" +"@typescript-eslint/utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/utils@npm:6.21.0" dependencies: - "@eslint-community/eslint-utils": ^4.2.0 - "@types/json-schema": ^7.0.9 - "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.62.0 - "@typescript-eslint/types": 5.62.0 - "@typescript-eslint/typescript-estree": 5.62.0 - eslint-scope: ^5.1.1 - semver: ^7.3.7 + "@eslint-community/eslint-utils": ^4.4.0 + "@types/json-schema": ^7.0.12 + "@types/semver": ^7.5.0 + "@typescript-eslint/scope-manager": 6.21.0 + "@typescript-eslint/types": 6.21.0 + "@typescript-eslint/typescript-estree": 6.21.0 + semver: ^7.5.4 peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: ee9398c8c5db6d1da09463ca7bf36ed134361e20131ea354b2da16a5fdb6df9ba70c62a388d19f6eebb421af1786dbbd79ba95ddd6ab287324fc171c3e28d931 + eslint: ^7.0.0 || ^8.0.0 + checksum: b129b3a4aebec8468259f4589985cb59ea808afbfdb9c54f02fad11e17d185e2bf72bb332f7c36ec3c09b31f18fc41368678b076323e6e019d06f74ee93f7bf2 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" +"@typescript-eslint/visitor-keys@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" dependencies: - "@typescript-eslint/types": 5.62.0 - eslint-visitor-keys: ^3.3.0 - checksum: 976b05d103fe8335bef5c93ad3f76d781e3ce50329c0243ee0f00c0fcfb186c81df50e64bfdd34970148113f8ade90887f53e3c4938183afba830b4ba8e30a35 + "@typescript-eslint/types": 6.21.0 + eslint-visitor-keys: ^3.4.1 + checksum: 67c7e6003d5af042d8703d11538fca9d76899f0119130b373402819ae43f0bc90d18656aa7add25a24427ccf1a0efd0804157ba83b0d4e145f06107d7d1b7433 languageName: node linkType: hard @@ -4289,7 +4350,7 @@ __metadata: languageName: node linkType: hard -"abab@npm:^2.0.3, abab@npm:^2.0.6": +"abab@npm:^2.0.3, abab@npm:^2.0.5, abab@npm:^2.0.6": version: 2.0.6 resolution: "abab@npm:2.0.6" checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e @@ -4903,14 +4964,15 @@ __metadata: languageName: node linkType: hard -"camelcase-keys@npm:^6.2.2": - version: 6.2.2 - resolution: "camelcase-keys@npm:6.2.2" +"camelcase-keys@npm:^7.0.0": + version: 7.0.2 + resolution: "camelcase-keys@npm:7.0.2" dependencies: - camelcase: ^5.3.1 - map-obj: ^4.0.0 - quick-lru: ^4.0.1 - checksum: 43c9af1adf840471e54c68ab3e5fe8a62719a6b7dbf4e2e86886b7b0ff96112c945736342b837bd2529ec9d1c7d1934e5653318478d98e0cf22c475c04658e2a + camelcase: ^6.3.0 + map-obj: ^4.1.0 + quick-lru: ^5.1.1 + type-fest: ^1.2.1 + checksum: b5821cc48dd00e8398a30c5d6547f06837ab44de123f1b3a603d0a03399722b2fc67a485a7e47106eb02ef543c3b50c5ebaabc1242cde4b63a267c3258d2365b languageName: node linkType: hard @@ -4921,7 +4983,7 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^6.2.0": +"camelcase@npm:^6.2.0, camelcase@npm:^6.3.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d @@ -5314,16 +5376,20 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^7.1.0": - version: 7.1.0 - resolution: "cosmiconfig@npm:7.1.0" +"cosmiconfig@npm:^8.2.0": + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" dependencies: - "@types/parse-json": ^4.0.0 - import-fresh: ^3.2.1 - parse-json: ^5.0.0 + import-fresh: ^3.3.0 + js-yaml: ^4.1.0 + parse-json: ^5.2.0 path-type: ^4.0.0 - yaml: ^1.10.0 - checksum: c53bf7befc1591b2651a22414a5e786cd5f2eeaa87f3678a3d49d6069835a9d8d1aef223728e98aa8fec9a95bf831120d245096db12abe019fecb51f5696c96f + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: dc339ebea427898c9e03bf01b56ba7afbac07fc7d2a2d5a15d6e9c14de98275a9565da949375aee1809591c152c0a3877bb86dbeaf74d5bd5aaa79955ad9e7a0 languageName: node linkType: hard @@ -5382,10 +5448,10 @@ __metadata: languageName: node linkType: hard -"css-functions-list@npm:^3.1.0": - version: 3.2.0 - resolution: "css-functions-list@npm:3.2.0" - checksum: fe912ea852fad500aef9a4f04db9a0371c7b0eb1ac1a45fbd8df0156ae0538cee7492ebd620b9bb502fe5bf2b5ed3bf3c16b6659cf67c7144eff0b597bcc3891 +"css-functions-list@npm:^3.2.1": + version: 3.2.1 + resolution: "css-functions-list@npm:3.2.1" + checksum: 57d7deb3b05e84d95b88ba9b3244cf60d33b40652b3357f084c805b24a9febda5987ade44ef25a56be41e73249a7dcc157abd704d8a0e998b2c1c2e2d5de6461 languageName: node linkType: hard @@ -5414,6 +5480,16 @@ __metadata: languageName: node linkType: hard +"css-tree@npm:^2.3.1": + version: 2.3.1 + resolution: "css-tree@npm:2.3.1" + dependencies: + mdn-data: 2.0.30 + source-map-js: ^1.0.1 + checksum: 493cc24b5c22b05ee5314b8a0d72d8a5869491c1458017ae5ed75aeb6c3596637dbe1b11dac2548974624adec9f7a1f3a6cf40593dc1f9185eb0e8279543fbc0 + languageName: node + linkType: hard + "cssesc@npm:^3.0.0": version: 3.0.0 resolution: "cssesc@npm:3.0.0" @@ -5878,13 +5954,20 @@ __metadata: languageName: node linkType: hard -"decamelize@npm:^1.1.0, decamelize@npm:^1.2.0": +"decamelize@npm:^1.1.0": version: 1.2.0 resolution: "decamelize@npm:1.2.0" checksum: ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa languageName: node linkType: hard +"decamelize@npm:^5.0.0": + version: 5.0.1 + resolution: "decamelize@npm:5.0.1" + checksum: 7c3b1ed4b3e60e7fbc00a35fb248298527c1cdfe603e41dfcf05e6c4a8cb9efbee60630deb677ed428908fb4e74e322966c687a094d1478ddc9c3a74e9dc7140 + languageName: node + linkType: hard + "decimal.js@npm:^10.4.2": version: 10.4.3 resolution: "decimal.js@npm:10.4.3" @@ -6362,7 +6445,7 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:^8.7.0": +"eslint-config-prettier@npm:^8.8.0": version: 8.10.0 resolution: "eslint-config-prettier@npm:8.10.0" peerDependencies: @@ -6373,22 +6456,27 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-prettier@npm:^4.2.1": - version: 4.2.1 - resolution: "eslint-plugin-prettier@npm:4.2.1" +"eslint-plugin-prettier@npm:^5.0.0": + version: 5.1.3 + resolution: "eslint-plugin-prettier@npm:5.1.3" dependencies: prettier-linter-helpers: ^1.0.0 + synckit: ^0.8.6 peerDependencies: - eslint: ">=7.28.0" - prettier: ">=2.0.0" + "@types/eslint": ">=8.0.0" + eslint: ">=8.0.0" + eslint-config-prettier: "*" + prettier: ">=3.0.0" peerDependenciesMeta: + "@types/eslint": + optional: true eslint-config-prettier: optional: true - checksum: b9e839d2334ad8ec7a5589c5cb0f219bded260839a857d7a486997f9870e95106aa59b8756ff3f37202085ebab658de382b0267cae44c3a7f0eb0bcc03a4f6d6 + checksum: eb2a7d46a1887e1b93788ee8f8eb81e0b6b2a6f5a66a62bc6f375b033fc4e7ca16448da99380be800042786e76cf5c0df9c87a51a2c9b960ed47acbd7c0b9381 languageName: node linkType: hard -"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": +"eslint-scope@npm:5.1.1": version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" dependencies: @@ -6607,6 +6695,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:^3.3.1": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" + 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 + checksum: 900e4979f4dbc3313840078419245621259f349950411ca2fa445a2f9a1a6d98c3b5e7e0660c5ccd563aa61abe133a21765c6c0dec8e57da1ba71d8000b05ec1 + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -6674,6 +6775,15 @@ __metadata: languageName: node linkType: hard +"file-entry-cache@npm:^7.0.0": + version: 7.0.2 + resolution: "file-entry-cache@npm:7.0.2" + dependencies: + flat-cache: ^3.2.0 + checksum: 283c674fc26bed1c44e74cf25c2640c813e222ea30a2536404b53511ca311d4a2502ee8145a01aecd12b9a910eb4162364776be27a9683e8447332054e9d712f + languageName: node + linkType: hard + "fill-range@npm:^7.0.1": version: 7.0.1 resolution: "fill-range@npm:7.0.1" @@ -6721,6 +6831,17 @@ __metadata: languageName: node linkType: hard +"flat-cache@npm:^3.2.0": + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" + dependencies: + flatted: ^3.2.9 + keyv: ^4.5.3 + rimraf: ^3.0.2 + checksum: e7e0f59801e288b54bee5cb9681e9ee21ee28ef309f886b312c9d08415b79fc0f24ac842f84356ce80f47d6a53de62197ce0e6e148dc42d5db005992e2a756ec + languageName: node + linkType: hard + "flatted@npm:^3.2.9": version: 3.2.9 resolution: "flatted@npm:3.2.9" @@ -6974,7 +7095,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2": +"glob@npm:^10.2.2, glob@npm:^10.3.7": version: 10.3.10 resolution: "glob@npm:10.3.10" dependencies: @@ -7003,18 +7124,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^9.2.0": - version: 9.3.5 - resolution: "glob@npm:9.3.5" - dependencies: - fs.realpath: ^1.0.0 - minimatch: ^8.0.2 - minipass: ^4.2.4 - path-scurry: ^1.6.1 - checksum: 94b093adbc591bc36b582f77927d1fb0dbf3ccc231828512b017601408be98d1fe798fc8c0b19c6f2d1a7660339c3502ce698de475e9d938ccbb69b47b647c84 - languageName: node - linkType: hard - "glob@npm:~7.1.6": version: 7.1.7 resolution: "glob@npm:7.1.7" @@ -7514,7 +7623,7 @@ __metadata: languageName: node linkType: hard -"html-tags@npm:^3.2.0": +"html-tags@npm:^3.3.1": version: 3.3.1 resolution: "html-tags@npm:3.3.1" checksum: b4ef1d5a76b678e43cce46e3783d563607b1d550cab30b4f511211564574770aa8c658a400b100e588bc60b8234e59b35ff72c7851cc28f3b5403b13a2c6cbce @@ -7625,14 +7734,21 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0, ignore@npm:^5.2.1": +"ignore@npm:^5.2.0": version: 5.2.4 resolution: "ignore@npm:5.2.4" checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef languageName: node linkType: hard -"import-fresh@npm:^3.2.1": +"ignore@npm:^5.2.4": + version: 5.3.1 + resolution: "ignore@npm:5.3.1" + checksum: 71d7bb4c1dbe020f915fd881108cbe85a0db3d636a0ea3ba911393c53946711d13a9b1143c7e70db06d571a5822c0a324a6bcde5c9904e7ca5047f01f1bf8cd3 + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -7675,6 +7791,13 @@ __metadata: languageName: node linkType: hard +"indent-string@npm:^5.0.0": + version: 5.0.0 + resolution: "indent-string@npm:5.0.0" + checksum: e466c27b6373440e6d84fbc19e750219ce25865cb82d578e41a6053d727e5520dc5725217d6eb1cc76005a1bb1696a0f106d84ce7ebda3033b963a38583fb3b3 + languageName: node + linkType: hard + "inflight@npm:^1.0.4": version: 1.0.6 resolution: "inflight@npm:1.0.6" @@ -8830,13 +8953,14 @@ __metadata: "@types/json-schema": ^7.0.11 "@types/markdown-it": ^12.2.3 "@types/react": ^18.0.26 + "@types/react-addons-linked-state-mixin": ^0.14.22 "@types/react-dom": ^18.0.9 - "@typescript-eslint/eslint-plugin": ^5.55.0 - "@typescript-eslint/parser": ^5.55.0 + "@typescript-eslint/eslint-plugin": ^6.1.0 + "@typescript-eslint/parser": ^6.1.0 css-loader: ^6.7.1 eslint: ^8.36.0 - eslint-config-prettier: ^8.7.0 - eslint-plugin-prettier: ^4.2.1 + eslint-config-prettier: ^8.8.0 + eslint-plugin-prettier: ^5.0.0 jest: ^29.2.0 katex: ^0.15.2 mkdirp: ^1.0.3 @@ -8852,14 +8976,16 @@ __metadata: myst-to-react: ^0.5.21 myst-transforms: ^1.1.19 npm-run-all: ^4.1.5 - prettier: ^2.8.7 - rimraf: ^4.4.1 + prettier: ^3.0.0 + rimraf: ^5.0.1 + source-map-loader: ^1.0.2 style-loader: ^3.3.1 - stylelint: ^14.9.1 + stylelint: ^15.10.1 stylelint-config-prettier: ^9.0.4 - stylelint-config-recommended: ^8.0.0 - stylelint-config-standard: ^26.0.0 - stylelint-prettier: ^2.0.0 + stylelint-config-recommended: ^13.0.0 + stylelint-config-standard: ^34.0.0 + stylelint-csstree-validator: ^3.0.0 + stylelint-prettier: ^4.0.0 tailwindcss: ^3.2.4 ts-jest: ^29.1.0 typescript: ~5.0.2 @@ -8908,10 +9034,10 @@ __metadata: languageName: node linkType: hard -"known-css-properties@npm:^0.26.0": - version: 0.26.0 - resolution: "known-css-properties@npm:0.26.0" - checksum: e706f4af9d2683202df9f717e7d713f0f8c3330f155842c40d8f3b2a5837956c34aeb7ba08760977ccde1afce8b5377e29b40eb3e5c0b42bef28ddd108543cfb +"known-css-properties@npm:^0.29.0": + version: 0.29.0 + resolution: "known-css-properties@npm:0.29.0" + checksum: daa6562e907f856cbfd58a00c42f532c9bba283388984da6a3bffb494e56612e5f23c52f30b0d9885f0ea07ad5d88bfa0470ee65017a6ce6c565289a1afd78af languageName: node linkType: hard @@ -9229,7 +9355,7 @@ __metadata: languageName: node linkType: hard -"map-obj@npm:^4.0.0": +"map-obj@npm:^4.1.0": version: 4.3.0 resolution: "map-obj@npm:4.3.0" checksum: fbc554934d1a27a1910e842bc87b177b1a556609dd803747c85ece420692380827c6ae94a95cce4407c054fa0964be3bf8226f7f2cb2e9eeee432c7c1985684e @@ -9413,6 +9539,13 @@ __metadata: languageName: node linkType: hard +"mdn-data@npm:2.0.30": + version: 2.0.30 + resolution: "mdn-data@npm:2.0.30" + checksum: d6ac5ac7439a1607df44b22738ecf83f48e66a0874e4482d6424a61c52da5cde5750f1d1229b6f5fa1b80a492be89465390da685b11f97d62b8adcc6e88189aa + languageName: node + linkType: hard + "mdurl@npm:^1.0.1": version: 1.0.1 resolution: "mdurl@npm:1.0.1" @@ -9427,23 +9560,23 @@ __metadata: languageName: node linkType: hard -"meow@npm:^9.0.0": - version: 9.0.0 - resolution: "meow@npm:9.0.0" +"meow@npm:^10.1.5": + version: 10.1.5 + resolution: "meow@npm:10.1.5" dependencies: - "@types/minimist": ^1.2.0 - camelcase-keys: ^6.2.2 - decamelize: ^1.2.0 + "@types/minimist": ^1.2.2 + camelcase-keys: ^7.0.0 + decamelize: ^5.0.0 decamelize-keys: ^1.1.0 hard-rejection: ^2.1.0 minimist-options: 4.1.0 - normalize-package-data: ^3.0.0 - read-pkg-up: ^7.0.1 - redent: ^3.0.0 - trim-newlines: ^3.0.0 - type-fest: ^0.18.0 - yargs-parser: ^20.2.3 - checksum: 99799c47247f4daeee178e3124f6ef6f84bde2ba3f37652865d5d8f8b8adcf9eedfc551dd043e2455cd8206545fd848e269c0c5ab6b594680a0ad4d3617c9639 + normalize-package-data: ^3.0.2 + read-pkg-up: ^8.0.0 + redent: ^4.0.0 + trim-newlines: ^4.0.2 + type-fest: ^1.2.2 + yargs-parser: ^20.2.9 + checksum: dd5f0caa4af18517813547dc66741dcbf52c4c23def5062578d39b11189fd9457aee5c1f2263a5cd6592a465023df8357e8ac876b685b64dbcf545e3f66c23a7 languageName: node linkType: hard @@ -9560,7 +9693,7 @@ __metadata: languageName: node linkType: hard -"min-indent@npm:^1.0.0": +"min-indent@npm:^1.0.1": version: 1.0.1 resolution: "min-indent@npm:1.0.1" checksum: bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 @@ -9587,30 +9720,21 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: ^1.1.7 - checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a - languageName: node - linkType: hard - -"minimatch@npm:^8.0.2": - version: 8.0.4 - resolution: "minimatch@npm:8.0.4" +"minimatch@npm:9.0.3, minimatch@npm:^9.0.1": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" dependencies: brace-expansion: ^2.0.1 - checksum: 2e46cffb86bacbc524ad45a6426f338920c529dd13f3a732cc2cf7618988ee1aae88df4ca28983285aca9e0f45222019ac2d14ebd17c1edadd2ee12221ab801a + checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 languageName: node linkType: hard -"minimatch@npm:^9.0.1": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" +"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" dependencies: - brace-expansion: ^2.0.1 - checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 + brace-expansion: ^1.1.7 + checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a languageName: node linkType: hard @@ -9692,13 +9816,6 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^4.2.4": - version: 4.2.8 - resolution: "minipass@npm:4.2.8" - checksum: 7f4914d5295a9a30807cae5227a37a926e6d910c03f315930fde52332cf0575dfbc20295318f91f0baf0e6bb11a6f668e30cde8027dea7a11b9d159867a3c830 - languageName: node - linkType: hard - "minipass@npm:^5.0.0": version: 5.0.0 resolution: "minipass@npm:5.0.0" @@ -10013,6 +10130,15 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: d36c427e530713e4ac6567d488b489a36582ef89da1d6d4e3b87eded11eb10d7042a877958c6f104929809b2ab0bafa17652b076cdf84324aa75b30b722204f2 + languageName: node + linkType: hard + "nanoid@npm:^4.0.0, nanoid@npm:^4.0.2": version: 4.0.2 resolution: "nanoid@npm:4.0.2" @@ -10022,13 +10148,6 @@ __metadata: languageName: node linkType: hard -"natural-compare-lite@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare-lite@npm:1.4.0" - checksum: 5222ac3986a2b78dd6069ac62cbb52a7bf8ffc90d972ab76dfe7b01892485d229530ed20d0c62e79a6b363a663b273db3bde195a1358ce9e5f779d4453887225 - languageName: node - linkType: hard - "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -10149,7 +10268,7 @@ __metadata: languageName: node linkType: hard -"normalize-package-data@npm:^2.3.2, normalize-package-data@npm:^2.5.0": +"normalize-package-data@npm:^2.3.2": version: 2.5.0 resolution: "normalize-package-data@npm:2.5.0" dependencies: @@ -10161,7 +10280,7 @@ __metadata: languageName: node linkType: hard -"normalize-package-data@npm:^3.0.0": +"normalize-package-data@npm:^3.0.2": version: 3.0.3 resolution: "normalize-package-data@npm:3.0.3" dependencies: @@ -10404,7 +10523,7 @@ __metadata: languageName: node linkType: hard -"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": +"parse-json@npm:^5.2.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" dependencies: @@ -10481,7 +10600,7 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.10.1, path-scurry@npm:^1.6.1": +"path-scurry@npm:^1.10.1": version: 1.10.1 resolution: "path-scurry@npm:1.10.1" dependencies: @@ -10602,13 +10721,6 @@ __metadata: languageName: node linkType: hard -"postcss-media-query-parser@npm:^0.2.3": - version: 0.2.3 - resolution: "postcss-media-query-parser@npm:0.2.3" - checksum: 8000d4d95b912994928ff86137f5ab0ed4c4ee1498af2336e93d708ae8827a690cd7acbaed55d14684cf44d82c8d44b031c1c69ae6bcd2f9620ea67573888090 - languageName: node - linkType: hard - "postcss-modules-extract-imports@npm:^3.0.0": version: 3.0.0 resolution: "postcss-modules-extract-imports@npm:3.0.0" @@ -10700,6 +10812,16 @@ __metadata: languageName: node linkType: hard +"postcss-selector-parser@npm:^6.0.13": + version: 6.0.15 + resolution: "postcss-selector-parser@npm:6.0.15" + dependencies: + cssesc: ^3.0.0 + util-deprecate: ^1.0.2 + checksum: 57decb94152111004f15e27b9c61131eb50ee10a3288e7fcf424cebbb4aba82c2817517ae718f8b5d704ee9e02a638d4a2acff8f47685c295a33ecee4fd31055 + languageName: node + linkType: hard + "postcss-value-parser@npm:^4.0.0, postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": version: 4.2.0 resolution: "postcss-value-parser@npm:4.2.0" @@ -10707,7 +10829,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.3.11, postcss@npm:^8.4.19, postcss@npm:^8.4.21, postcss@npm:^8.4.23": +"postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.23": version: 8.4.31 resolution: "postcss@npm:8.4.31" dependencies: @@ -10718,6 +10840,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.4.28": + version: 8.4.34 + resolution: "postcss@npm:8.4.34" + dependencies: + nanoid: ^3.3.7 + picocolors: ^1.0.0 + source-map-js: ^1.0.2 + checksum: 46c32b51810a23060288c86fdb5195237c497f952c674167fd1cbb3f0c628389a3fd48ae0b289447e5368b4abbc95f81e2d318bfdc5554063b2a7e8192e1a540 + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -10734,12 +10867,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^2.8.7": - version: 2.8.8 - resolution: "prettier@npm:2.8.8" +"prettier@npm:^3.0.0": + version: 3.2.5 + resolution: "prettier@npm:3.2.5" bin: - prettier: bin-prettier.js - checksum: b49e409431bf129dd89238d64299ba80717b57ff5a6d1c1a8b1a28b590d998a34e083fa13573bc732bb8d2305becb4c9a4407f8486c81fa7d55100eb08263cf8 + prettier: bin/prettier.cjs + checksum: 2ee4e1417572372afb7a13bb446b34f20f1bf1747db77cf6ccaf57a9be005f2f15c40f903d41a6b79eec3f57fff14d32a20fb6dee1f126da48908926fe43c311 languageName: node linkType: hard @@ -10864,10 +10997,10 @@ __metadata: languageName: node linkType: hard -"quick-lru@npm:^4.0.1": - version: 4.0.1 - resolution: "quick-lru@npm:4.0.1" - checksum: bea46e1abfaa07023e047d3cf1716a06172c4947886c053ede5c50321893711577cb6119360f810cc3ffcd70c4d7db4069c3cee876b358ceff8596e062bd1154 +"quick-lru@npm:^5.1.1": + version: 5.1.1 + resolution: "quick-lru@npm:5.1.1" + checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed languageName: node linkType: hard @@ -10991,14 +11124,14 @@ __metadata: languageName: node linkType: hard -"read-pkg-up@npm:^7.0.1": - version: 7.0.1 - resolution: "read-pkg-up@npm:7.0.1" +"read-pkg-up@npm:^8.0.0": + version: 8.0.0 + resolution: "read-pkg-up@npm:8.0.0" dependencies: - find-up: ^4.1.0 - read-pkg: ^5.2.0 - type-fest: ^0.8.1 - checksum: e4e93ce70e5905b490ca8f883eb9e48b5d3cebc6cd4527c25a0d8f3ae2903bd4121c5ab9c5a3e217ada0141098eeb661313c86fa008524b089b8ed0b7f165e44 + find-up: ^5.0.0 + read-pkg: ^6.0.0 + type-fest: ^1.0.1 + checksum: fe4c80401656b40b408884457fffb5a8015c03b1018cfd8e48f8d82a5e9023e24963603aeb2755608d964593e046c15b34d29b07d35af9c7aa478be81805209c languageName: node linkType: hard @@ -11013,15 +11146,15 @@ __metadata: languageName: node linkType: hard -"read-pkg@npm:^5.2.0": - version: 5.2.0 - resolution: "read-pkg@npm:5.2.0" +"read-pkg@npm:^6.0.0": + version: 6.0.0 + resolution: "read-pkg@npm:6.0.0" dependencies: "@types/normalize-package-data": ^2.4.0 - normalize-package-data: ^2.5.0 - parse-json: ^5.0.0 - type-fest: ^0.6.0 - checksum: eb696e60528b29aebe10e499ba93f44991908c57d70f2d26f369e46b8b9afc208ef11b4ba64f67630f31df8b6872129e0a8933c8c53b7b4daf0eace536901222 + normalize-package-data: ^3.0.2 + parse-json: ^5.2.0 + type-fest: ^1.0.1 + checksum: 0cebdff381128e923815c643074a87011070e5fc352bee575d327d6485da3317fab6d802a7b03deeb0be7be8d3ad1640397b3d5d2f044452caf4e8d1736bf94f languageName: node linkType: hard @@ -11054,13 +11187,13 @@ __metadata: languageName: node linkType: hard -"redent@npm:^3.0.0": - version: 3.0.0 - resolution: "redent@npm:3.0.0" +"redent@npm:^4.0.0": + version: 4.0.0 + resolution: "redent@npm:4.0.0" dependencies: - indent-string: ^4.0.0 - strip-indent: ^3.0.0 - checksum: fa1ef20404a2d399235e83cc80bd55a956642e37dd197b4b612ba7327bf87fa32745aeb4a1634b2bab25467164ab4ed9c15be2c307923dd08b0fe7c52431ae6b + indent-string: ^5.0.0 + strip-indent: ^4.0.0 + checksum: 6944e7b1d8f3fd28c2515f5c605b9f7f0ea0f4edddf41890bbbdd4d9ee35abb7540c3b278f03ff827bd278bb6ff4a5bd8692ca406b748c5c1c3ce7355e9fbf8f languageName: node linkType: hard @@ -11311,14 +11444,14 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^4.4.1": - version: 4.4.1 - resolution: "rimraf@npm:4.4.1" +"rimraf@npm:^5.0.1": + version: 5.0.5 + resolution: "rimraf@npm:5.0.5" dependencies: - glob: ^9.2.0 + glob: ^10.3.7 bin: - rimraf: dist/cjs/src/bin.js - checksum: b786adc02651e2e24bbedb04bbdea80652fc9612632931ff2d9f898c5e4708fe30956186597373c568bd5230a4dc2fadfc816ccacba8a1daded3a006a6b74f1a + rimraf: dist/esm/bin.mjs + checksum: d66eef829b2e23b16445f34e73d75c7b7cf4cbc8834b04720def1c8f298eb0753c3d76df77325fad79d0a2c60470525d95f89c2475283ad985fd7441c32732d1 languageName: node linkType: hard @@ -11466,7 +11599,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4": +"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -11653,13 +11786,29 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:^1.0.2": +"source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c languageName: node linkType: hard +"source-map-loader@npm:^1.0.2": + version: 1.1.3 + resolution: "source-map-loader@npm:1.1.3" + dependencies: + abab: ^2.0.5 + iconv-lite: ^0.6.2 + loader-utils: ^2.0.0 + schema-utils: ^3.0.0 + source-map: ^0.6.1 + whatwg-mimetype: ^2.3.0 + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 0ca16a1458f206e12925f242ce52913b5f35de657d2ec17fd60ab3de7fa85b72b6707951b7a18899bdf05679d679a8b9edeb660c557aafa66453886d6907e3ec + languageName: node + linkType: hard + "source-map-loader@npm:~1.0.2": version: 1.0.2 resolution: "source-map-loader@npm:1.0.2" @@ -11909,12 +12058,12 @@ __metadata: languageName: node linkType: hard -"strip-indent@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-indent@npm:3.0.0" +"strip-indent@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-indent@npm:4.0.0" dependencies: - min-indent: ^1.0.0 - checksum: 18f045d57d9d0d90cd16f72b2313d6364fd2cb4bf85b9f593523ad431c8720011a4d5f08b6591c9d580f446e78855c5334a30fb91aa1560f5d9f95ed1b4a0530 + min-indent: ^1.0.1 + checksum: 06cbcd93da721c46bc13caeb1c00af93a9b18146a1c95927672d2decab6a25ad83662772417cea9317a2507fb143253ecc23c4415b64f5828cef9b638a744598 languageName: node linkType: hard @@ -11960,83 +12109,96 @@ __metadata: languageName: node linkType: hard -"stylelint-config-recommended@npm:^8.0.0": - version: 8.0.0 - resolution: "stylelint-config-recommended@npm:8.0.0" +"stylelint-config-recommended@npm:^13.0.0": + version: 13.0.0 + resolution: "stylelint-config-recommended@npm:13.0.0" peerDependencies: - stylelint: ^14.8.0 - checksum: 0c5ca94625e5308a7afb8315bb350a2b48f46fdd8d8922dd9a8c2e37b3407f2294794d930726ad6bf2007abcde1abd34084808cf83adf150efe3a643e0eb5ac4 + stylelint: ^15.10.0 + checksum: a56eb6d1a7c7f3a7a172b54bc34218859ba22a5a06816fb4d0964f66cb83cf372062f2c97830e994ad68243548e15fc49abf28887c3261ab1b471b3aa69f8e82 languageName: node linkType: hard -"stylelint-config-standard@npm:^26.0.0": - version: 26.0.0 - resolution: "stylelint-config-standard@npm:26.0.0" +"stylelint-config-standard@npm:^34.0.0": + version: 34.0.0 + resolution: "stylelint-config-standard@npm:34.0.0" dependencies: - stylelint-config-recommended: ^8.0.0 + stylelint-config-recommended: ^13.0.0 peerDependencies: - stylelint: ^14.9.0 - checksum: c1fe44df1755bcccc740b385a24acffa922d331d9f9ba39dafad81cc9643e6c1f870abd1ee73b2737d6903e06efb83b2a1ee26d786faef0123fc22e1f09c13fe + stylelint: ^15.10.0 + checksum: 536249800c04b48a9c354067765f042713982e8222be17bb897a27d26546e50adfb87e6f1e4541807d720de3554345da99ab470e13e8d7ab0ab326c73ae3df61 languageName: node linkType: hard -"stylelint-prettier@npm:^2.0.0": - version: 2.0.0 - resolution: "stylelint-prettier@npm:2.0.0" +"stylelint-csstree-validator@npm:^3.0.0": + version: 3.0.0 + resolution: "stylelint-csstree-validator@npm:3.0.0" + dependencies: + css-tree: ^2.3.1 + peerDependencies: + stylelint: ">=7.0.0 <16.0.0" + checksum: e518c8c17714022946b7637c23a6816fd2ccdd6052a19c5a138b3f7ce9b913ead9c612ac4401e102f14800a19967dbfd4b588b44cbf3f3c6a5984bef7bda4017 + languageName: node + linkType: hard + +"stylelint-prettier@npm:^4.0.0": + version: 4.1.0 + resolution: "stylelint-prettier@npm:4.1.0" dependencies: prettier-linter-helpers: ^1.0.0 peerDependencies: - prettier: ">=2.0.0" - stylelint: ">=14.0.0" - checksum: 6ce7628517a492e0c2e6104f654c9bc710f1aaf035c8b5274e187b68e8d510e70bae5ded2cb65df76aa01096460b9dfe02f844fea13bfba7e3dcca13baec2ff4 + prettier: ">=3.0.0" + stylelint: ">=15.8.0" + checksum: bbeb7e0dd49099c43297e88a61385b39f4b5810c8bfcc972d5b2706b6a7e14a8eefd5f9e623841cf3127111a8859eb624a3e7cc1bc5197c83c55c6c9a616a4d2 languageName: node linkType: hard -"stylelint@npm:^14.9.1": - version: 14.16.1 - resolution: "stylelint@npm:14.16.1" +"stylelint@npm:^15.10.1": + version: 15.11.0 + resolution: "stylelint@npm:15.11.0" dependencies: - "@csstools/selector-specificity": ^2.0.2 + "@csstools/css-parser-algorithms": ^2.3.1 + "@csstools/css-tokenizer": ^2.2.0 + "@csstools/media-query-list-parser": ^2.1.4 + "@csstools/selector-specificity": ^3.0.0 balanced-match: ^2.0.0 colord: ^2.9.3 - cosmiconfig: ^7.1.0 - css-functions-list: ^3.1.0 + cosmiconfig: ^8.2.0 + css-functions-list: ^3.2.1 + css-tree: ^2.3.1 debug: ^4.3.4 - fast-glob: ^3.2.12 + fast-glob: ^3.3.1 fastest-levenshtein: ^1.0.16 - file-entry-cache: ^6.0.1 + file-entry-cache: ^7.0.0 global-modules: ^2.0.0 globby: ^11.1.0 globjoin: ^0.1.4 - html-tags: ^3.2.0 - ignore: ^5.2.1 + html-tags: ^3.3.1 + ignore: ^5.2.4 import-lazy: ^4.0.0 imurmurhash: ^0.1.4 is-plain-object: ^5.0.0 - known-css-properties: ^0.26.0 + known-css-properties: ^0.29.0 mathml-tag-names: ^2.1.3 - meow: ^9.0.0 + meow: ^10.1.5 micromatch: ^4.0.5 normalize-path: ^3.0.0 picocolors: ^1.0.0 - postcss: ^8.4.19 - postcss-media-query-parser: ^0.2.3 + postcss: ^8.4.28 postcss-resolve-nested-selector: ^0.1.1 postcss-safe-parser: ^6.0.0 - postcss-selector-parser: ^6.0.11 + postcss-selector-parser: ^6.0.13 postcss-value-parser: ^4.2.0 resolve-from: ^5.0.0 string-width: ^4.2.3 strip-ansi: ^6.0.1 style-search: ^0.1.0 - supports-hyperlinks: ^2.3.0 + supports-hyperlinks: ^3.0.0 svg-tags: ^1.0.0 table: ^6.8.1 - v8-compile-cache: ^2.3.0 - write-file-atomic: ^4.0.2 + write-file-atomic: ^5.0.1 bin: - stylelint: bin/stylelint.js - checksum: bc24050415e3c357a76d8ca2799e74ce31f33c9158b4086462512b0191db5d6a161b81ef35b064039c6eacf98a5553e45fca4c5f21eb4d45e7f1d44b2d226e9b + stylelint: bin/stylelint.mjs + checksum: 9835f8a3e3976a3b81a35569d08f5f4a9c3b5cff415f1345a505870afc0c3231acff27f119d937c5bb11fdbc98d554af564c2a648a52604280a59a11974fcbfc languageName: node linkType: hard @@ -12092,13 +12254,13 @@ __metadata: languageName: node linkType: hard -"supports-hyperlinks@npm:^2.3.0": - version: 2.3.0 - resolution: "supports-hyperlinks@npm:2.3.0" +"supports-hyperlinks@npm:^3.0.0": + version: 3.0.0 + resolution: "supports-hyperlinks@npm:3.0.0" dependencies: has-flag: ^4.0.0 supports-color: ^7.0.0 - checksum: 9ee0de3c8ce919d453511b2b1588a8205bd429d98af94a01df87411391010fe22ca463f268c84b2ce2abad019dfff8452aa02806eeb5c905a8d7ad5c4f4c52b8 + checksum: 41021305de5255b10d821bf93c7a781f783e1693d0faec293d7fc7ccf17011b90bde84b0295fa92ba75c6c390351fe84fdd18848cad4bf656e464a958243c3e7 languageName: node linkType: hard @@ -12135,6 +12297,16 @@ __metadata: languageName: node linkType: hard +"synckit@npm:^0.8.6": + version: 0.8.8 + resolution: "synckit@npm:0.8.8" + dependencies: + "@pkgr/core": ^0.1.0 + tslib: ^2.6.2 + checksum: 9ed5d33abb785f5f24e2531efd53b2782ca77abf7912f734d170134552b99001915531be5a50297aa45c5701b5c9041e8762e6cd7a38e41e2461c1e7fccdedf8 + languageName: node + linkType: hard + "table@npm:^6.8.1": version: 6.8.1 resolution: "table@npm:6.8.1" @@ -12341,10 +12513,10 @@ __metadata: languageName: node linkType: hard -"trim-newlines@npm:^3.0.0": - version: 3.0.1 - resolution: "trim-newlines@npm:3.0.1" - checksum: b530f3fadf78e570cf3c761fb74fef655beff6b0f84b29209bac6c9622db75ad1417f4a7b5d54c96605dcd72734ad44526fef9f396807b90839449eb543c6206 +"trim-newlines@npm:^4.0.2": + version: 4.1.1 + resolution: "trim-newlines@npm:4.1.1" + checksum: 5b09f8e329e8f33c1111ef26906332ba7ba7248cde3e26fc054bb3d69f2858bf5feedca9559c572ff91f33e52977c28e0d41c387df6a02a633cbb8c2d8238627 languageName: node linkType: hard @@ -12362,6 +12534,15 @@ __metadata: languageName: node linkType: hard +"ts-api-utils@npm:^1.0.1": + version: 1.2.0 + resolution: "ts-api-utils@npm:1.2.0" + peerDependencies: + typescript: ">=4.2.0" + checksum: 9f11d4fdb8171e68cca664ae7b9c0438a2f57f66283f2e5aec8eb7ca3cb5126fb35be9cdf8884b35bf75bbf4cf222d7ea5f30e12bc7b984a720e42a4e44524bb + languageName: node + linkType: hard + "ts-dedent@npm:^2.2.0": version: 2.2.0 resolution: "ts-dedent@npm:2.2.0" @@ -12409,31 +12590,13 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.8.1": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd - languageName: node - linkType: hard - -"tslib@npm:^2.0.0, tslib@npm:^2.1.0": +"tslib@npm:^2.0.0, tslib@npm:^2.1.0, tslib@npm:^2.6.2": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad languageName: node linkType: hard -"tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: ^1.8.1 - 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" - checksum: 1843f4c1b2e0f975e08c4c21caa4af4f7f65a12ac1b81b3b8489366826259323feb3fc7a243123453d2d1a02314205a7634e048d4a8009921da19f99755cdc48 - languageName: node - linkType: hard - "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -12450,13 +12613,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.18.0": - version: 0.18.1 - resolution: "type-fest@npm:0.18.1" - checksum: e96dcee18abe50ec82dab6cbc4751b3a82046da54c52e3b2d035b3c519732c0b3dd7a2fa9df24efd1a38d953d8d4813c50985f215f1957ee5e4f26b0fe0da395 - languageName: node - linkType: hard - "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" @@ -12471,17 +12627,10 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.6.0": - version: 0.6.0 - resolution: "type-fest@npm:0.6.0" - checksum: b2188e6e4b21557f6e92960ec496d28a51d68658018cba8b597bd3ef757721d1db309f120ae987abeeda874511d14b776157ff809f23c6d1ce8f83b9b2b7d60f - languageName: node - linkType: hard - -"type-fest@npm:^0.8.1": - version: 0.8.1 - resolution: "type-fest@npm:0.8.1" - checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 +"type-fest@npm:^1.0.1, type-fest@npm:^1.2.1, type-fest@npm:^1.2.2": + version: 1.4.0 + resolution: "type-fest@npm:1.4.0" + checksum: b011c3388665b097ae6a109a437a04d6f61d81b7357f74cbcb02246f2f5bd72b888ae33631b99871388122ba0a87f4ff1c94078e7119ff22c70e52c0ff828201 languageName: node linkType: hard @@ -12889,13 +13038,6 @@ __metadata: languageName: node linkType: hard -"v8-compile-cache@npm:^2.3.0": - version: 2.4.0 - resolution: "v8-compile-cache@npm:2.4.0" - checksum: 8eb6ddb59d86f24566503f1e6ca98f3e6f43599f05359bd3ab737eaaf1585b338091478a4d3d5c2646632cf8030288d7888684ea62238cdce15a65ae2416718f - languageName: node - linkType: hard - "v8-to-istanbul@npm:^9.0.1": version: 9.1.3 resolution: "v8-to-istanbul@npm:9.1.3" @@ -13402,6 +13544,16 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^5.0.1": + version: 5.0.1 + resolution: "write-file-atomic@npm:5.0.1" + dependencies: + imurmurhash: ^0.1.4 + signal-exit: ^4.0.1 + checksum: 8dbb0e2512c2f72ccc20ccedab9986c7d02d04039ed6e8780c987dc4940b793339c50172a1008eed7747001bfacc0ca47562668a069a7506c46c77d7ba3926a9 + languageName: node + linkType: hard + "ws@npm:^8.11.0": version: 8.14.2 resolution: "ws@npm:8.14.2" @@ -13477,13 +13629,6 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^1.10.0": - version: 1.10.2 - resolution: "yaml@npm:1.10.2" - checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f - languageName: node - linkType: hard - "yaml@npm:^2.1.1": version: 2.3.2 resolution: "yaml@npm:2.3.2" @@ -13491,7 +13636,7 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:^20.2.3": +"yargs-parser@npm:^20.2.9": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3