├── .editorconfig ├── .eslintignore ├── .eslintrc.yaml ├── .gitattributes ├── .github ├── CODEOWNERS └── workflows │ └── deploy.yml ├── .gitignore ├── .ncurc.yaml ├── .npmrc ├── .prettierignore ├── .prettierrc.yaml ├── .vscode ├── extensions.json └── settings.json ├── LICENSE.txt ├── README.md ├── cspell.config.yaml ├── jsconfig.json ├── package.json ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── src └── index.js └── wrangler.toml /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.eslintrc.yaml: -------------------------------------------------------------------------------- 1 | root: true 2 | parserOptions: 3 | requireConfigFile: false 4 | sourceType: module 5 | ecmaVersion: latest 6 | extends: 7 | - airbnb-base 8 | - prettier 9 | - plugin:jsdoc/recommended 10 | plugins: 11 | - jsdoc 12 | ignorePatterns: 13 | - "*.cjs" 14 | env: 15 | browser: true 16 | es2022: true 17 | node: true 18 | rules: 19 | class-methods-use-this: off 20 | import/extensions: off 21 | import/no-extraneous-dependencies: off 22 | import/no-mutable-exports: off 23 | import/no-unresolved: off 24 | import/prefer-default-export: off 25 | jsdoc/no-undefined-types: off 26 | jsdoc/require-jsdoc: 27 | - warn 28 | - require: 29 | ArrowFunctionExpression: true 30 | ClassDeclaration: true 31 | ClassExpression: true 32 | FunctionDeclaration: true 33 | FunctionExpression: true 34 | MethodDefinition: true 35 | # Other JSDoc rules not in the recommended list 36 | jsdoc/check-indentation: 1 37 | jsdoc/check-line-alignment: 1 38 | jsdoc/check-syntax: 1 39 | jsdoc/match-description: 1 40 | jsdoc/no-bad-blocks: 1 41 | jsdoc/no-blank-block-descriptions: 1 42 | jsdoc/no-defaults: 1 43 | jsdoc/require-asterisk-prefix: 1 44 | jsdoc/require-description: 1 45 | jsdoc/require-description-complete-sentence: 1 46 | jsdoc/require-hyphen-before-param-description: 47 | - error 48 | - always 49 | - tags: 50 | property: always 51 | jsdoc/require-throws: 1 52 | jsdoc/sort-tags: 1 53 | max-len: 54 | - error 55 | - code: 100 56 | tabWidth: 2 57 | ignoreUrls: true 58 | ignoreStrings: true 59 | no-param-reassign: off 60 | no-underscore-dangle: off 61 | # https://github.com/airbnb/javascript/issues/1660#issuecomment-353018874 + small tweaks 62 | padding-line-between-statements: 63 | - error 64 | - blankLine: always 65 | prev: "*" 66 | next: 67 | - block 68 | - block-like 69 | - cjs-export 70 | - class 71 | - const 72 | - export 73 | - import 74 | - let 75 | - var 76 | - blankLine: always 77 | prev: 78 | - block 79 | - block-like 80 | - cjs-export 81 | - class 82 | - const 83 | - export 84 | - import 85 | - let 86 | - var 87 | next: "*" 88 | - blankLine: never 89 | prev: 90 | - singleline-const 91 | - singleline-let 92 | - singleline-var 93 | next: 94 | - singleline-const 95 | - singleline-let 96 | - singleline-var 97 | - blankLine: any 98 | prev: 99 | - export 100 | - import 101 | next: 102 | - export 103 | - import 104 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @kyoshino 2 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | # Allow deploying the project to Cloudflare Workers 2 | # https://developers.cloudflare.com/workers/tutorials/deploy-button/ 3 | 4 | name: Build 5 | on: 6 | repository_dispatch: 7 | jobs: 8 | deploy: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout the branch 12 | uses: actions/checkout@v5 13 | - name: Install pnpm 14 | uses: pnpm/action-setup@v4 15 | with: 16 | version: latest 17 | - name: Build & Deploy Worker 18 | uses: cloudflare/wrangler-action@v3 19 | with: 20 | apiToken: ${{ secrets.CF_API_TOKEN }} 21 | accountId: ${{ secrets.CF_ACCOUNT_ID }} 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .dev.vars 3 | .wrangler/ 4 | -------------------------------------------------------------------------------- /.ncurc.yaml: -------------------------------------------------------------------------------- 1 | cooldown: 1 2 | reject: 3 | # blocked by the ESLint v9 support of eslint-config-airbnb-base 4 | # https://github.com/airbnb/javascript/issues/2961 5 | - eslint 6 | - eslint-plugin-svelte 7 | # https://github.com/gajus/eslint-plugin-jsdoc/issues/1478 8 | - eslint-plugin-jsdoc 9 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | pnpm-lock.yaml 3 | -------------------------------------------------------------------------------- /.prettierrc.yaml: -------------------------------------------------------------------------------- 1 | useTabs: false 2 | singleQuote: true 3 | trailingComma: all 4 | printWidth: 100 5 | overrides: 6 | - files: 7 | - "*.yaml" 8 | options: 9 | singleQuote: false 10 | - files: 11 | - "*.md" 12 | options: 13 | proseWrap: never 14 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "dbaeumer.vscode-eslint", 4 | "editorconfig.editorconfig", 5 | "esbenp.prettier-vscode" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.codeActionsOnSave": ["source.formatDocument", "source.organizeImports", "source.fixAll"], 3 | "editor.defaultFormatter": "esbenp.prettier-vscode", 4 | "editor.formatOnSave": true, 5 | "eslint.validate": ["javascript"], 6 | "javascript.validate.enable": true, 7 | "[javascript]": { 8 | "editor.defaultFormatter": "esbenp.prettier-vscode" 9 | }, 10 | "[yaml]": { 11 | "editor.defaultFormatter": "esbenp.prettier-vscode" 12 | }, 13 | "yaml.schemas": { 14 | "https://json.schemastore.org/github-workflow.json": ".github/workflows/*.yml" 15 | }, 16 | "[markdown]": { 17 | "editor.defaultFormatter": "esbenp.prettier-vscode" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Kohei Yoshino. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Sveltia CMS Authenticator 2 | 3 | This simple [Cloudflare Workers](https://workers.cloudflare.com/) script allows [Sveltia CMS](https://github.com/sveltia/sveltia-cms) (or Netlify/Decap CMS) users to authenticate with [GitHub](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps) or [GitLab](https://docs.gitlab.com/ee/api/oauth2.html#authorization-code-flow). 4 | 5 | You don’t have to use it if you previously had Netlify/Decap CMS and your site is still being deployed to Netlify or if you have already used [another 3rd party OAuth client](https://decapcms.org/docs/external-oauth-clients/). 6 | 7 | You can use it if your site is hosted (or has been moved to) somewhere else, such as [Cloudflare Pages](https://pages.cloudflare.com/) or [GitHub Pages](https://pages.github.com/), and you don’t have any other 3rd party client yet. 8 | 9 | ## How to use it 10 | 11 | ### Step 1. Deploy this project to Cloudflare Workers 12 | 13 | Sign up with Cloudflare, and click the button below to start deploying. 14 | 15 | [![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/sveltia/sveltia-cms-auth) 16 | 17 | Alternatively, you can clone the project and run [`wrangler deploy`](https://developers.cloudflare.com/workers/wrangler/commands/#deploy) locally. 18 | 19 | Once deployed, open your Cloudflare Workers dashboard, select the `sveltia-cms-auth` service, then the worker URL (`https://sveltia-cms-auth..workers.dev`) will be displayed. Copy it for Step 2. It will also be used in Step 4. 20 | 21 | ### Step 2. Register the Worker as an OAuth app 22 | 23 | #### GitHub 24 | 25 | [Register a new OAuth application](https://github.com/settings/applications/new) on GitHub ([details](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app)) with the following properties, including your Worker URL from Step 1: 26 | 27 | - Application name: `Sveltia CMS Authenticator` (or whatever) 28 | - Homepage URL: `https://github.com/sveltia/sveltia-cms-auth` (or whatever) 29 | - Application description: (can be left empty) 30 | - Authorization callback URL: `/callback` 31 | 32 | Once registered, click on the **Generate a new client secret** button. The app’s **Client ID** and **Client Secret** will be displayed. We’ll use them in Step 3 below. 33 | 34 | #### GitLab 35 | 36 | [Register a new OAuth application](https://gitlab.com/-/user_settings/applications) on GitLab ([details](https://docs.gitlab.com/ee/integration/oauth_provider.html#create-a-user-owned-application)) with the following properties, including your Worker URL from Step 1: 37 | 38 | - Name: `Sveltia CMS Authenticator` (or whatever) 39 | - Redirect URI: `/callback` 40 | - Confidential: Yes 41 | - Scopes: `api` only 42 | 43 | Once registered, the app’s **Application ID** and **Secret** will be displayed. We’ll use them in Step 3 below. 44 | 45 | ### Step 3. Configure the Worker 46 | 47 | Go back to the `sveltia-cms-auth` service page on the Cloudflare dashboard, select **Settings** > **Variables**, and add the following Environment Variables to your worker ([details](https://developers.cloudflare.com/workers/platform/environment-variables/#environment-variables-via-the-dashboard)): 48 | 49 | #### GitHub 50 | 51 | - `GITHUB_CLIENT_ID`: **Client ID** from Step 2 52 | - `GITHUB_CLIENT_SECRET`: **Client Secret** from Step 2; click the **Encrypt** button to hide it 53 | - `GITHUB_HOSTNAME`: Required only if you’re using GitHub Enterprise Server. Default: `github.com` 54 | 55 | #### GitLab 56 | 57 | - `GITLAB_CLIENT_ID`: **Application ID** from Step 2 58 | - `GITLAB_CLIENT_SECRET`: **Secret** from Step 2; click the **Encrypt** button to hide it 59 | - `GITLAB_HOSTNAME`: Required only if you’re using a self-hosted instance. Default: `gitlab.com` 60 | 61 | #### Both GitHub and GitLab 62 | 63 | - `ALLOWED_DOMAINS`: (Optional) Your site’s hostname, e.g. `www.example.com` 64 | - Multiple hostnames can be defined as a comma-separated list, e.g. `www.example.com, www.example.org` 65 | - A wildcard (`*`) can be used to match any subdomain, e.g. `*.example.com` that will match `www.example.com`, `blog.example.com`, `docs.api.example.com`, etc. (but not `example.com`) 66 | - To match a `www`-less naked domain and all the subdomains, use `example.com, *.example.com` 67 | 68 | Save and deploy. 69 | 70 | ### Step 4. Update your CMS configuration 71 | 72 | Open `admin/config.yml` locally or remotely, and add your Worker URL from Step 1 as the new `base_url` property under `backend`: 73 | 74 | ```diff 75 | backend: 76 | name: github # or gitlab 77 | repo: username/repo 78 | branch: main 79 | + base_url: 80 | ``` 81 | 82 | Commit the change. Once deployed, you can sign into Sveltia CMS remotely with GitHub or GitLab! 83 | 84 | ## FAQ 85 | 86 | ### Why do I have to set this thing up in the first place? 87 | 88 | Technically, we could host Sveltia CMS Authenticator on our own server and let anyone use it, just like Netlify does. The cost probably wouldn’t matter because it’s just a small, short-lived script. However, running such a **service** certainly comes with legal, privacy and security liabilities that we cannot afford. Remember that Sveltia CMS is nothing more than [@kyoshino](https://github.com/kyoshino)’s personal project. That’s why the authenticator is not offered as SaaS and you have to install it yourself. 89 | 90 | ## Acknowledgements 91 | 92 | This project was inspired by [`netlify-cms-oauth-firebase`](https://github.com/Herohtar/netlify-cms-oauth-firebase). 93 | -------------------------------------------------------------------------------- /cspell.config.yaml: -------------------------------------------------------------------------------- 1 | version: "0.2" 2 | language: en 3 | dictionaries: 4 | - css 5 | - html 6 | - typescript 7 | enableFiletypes: 8 | - ignore 9 | - properties 10 | - xml 11 | files: 12 | - "**/.*" 13 | - "**/*.{css,js,json,jsonc,html,md,scss,svelte,svg,yaml,yml,xml}" 14 | useGitignore: true 15 | ignorePaths: 16 | - pnpm-lock.yaml 17 | words: 18 | - cooldown 19 | - CVEs 20 | - Decap 21 | - esbuild 22 | - hostnames 23 | - jsdoc 24 | - kyoshino 25 | - singleline 26 | - Sveltia 27 | - workerd 28 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "Node", 4 | "target": "ESNext", 5 | "module": "ESNext", 6 | "checkJs": true, 7 | "strict": true, 8 | "types": ["node"] 9 | }, 10 | "include": ["src/**/*.js"] 11 | } 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sveltia-cms-auth", 3 | "version": "0.1.0", 4 | "license": "MIT", 5 | "type": "module", 6 | "private": true, 7 | "scripts": { 8 | "start": "wrangler dev", 9 | "deploy": "wrangler deploy", 10 | "check": "pnpm run '/^check:.*/'", 11 | "check:audit": "pnpm audit", 12 | "check:cspell": "cspell --no-progress", 13 | "check:prettier": "prettier --check .", 14 | "check:eslint": "eslint ." 15 | }, 16 | "devDependencies": { 17 | "@types/node": "^24.9.1", 18 | "cspell": "^9.2.2", 19 | "eslint": "^8.57.1", 20 | "eslint-config-airbnb-base": "^15.0.0", 21 | "eslint-config-prettier": "^10.1.8", 22 | "eslint-plugin-jsdoc": "^56.1.2", 23 | "prettier": "^3.6.2", 24 | "wrangler": "4.45.0" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | '@types/node': 12 | specifier: ^24.9.1 13 | version: 24.9.1 14 | cspell: 15 | specifier: ^9.2.2 16 | version: 9.2.2 17 | eslint: 18 | specifier: ^8.57.1 19 | version: 8.57.1 20 | eslint-config-airbnb-base: 21 | specifier: ^15.0.0 22 | version: 15.0.0(eslint-plugin-import@2.27.5(eslint@8.57.1))(eslint@8.57.1) 23 | eslint-config-prettier: 24 | specifier: ^10.1.8 25 | version: 10.1.8(eslint@8.57.1) 26 | eslint-plugin-jsdoc: 27 | specifier: ^56.1.2 28 | version: 56.1.2(eslint@8.57.1) 29 | prettier: 30 | specifier: ^3.6.2 31 | version: 3.6.2 32 | wrangler: 33 | specifier: 4.45.0 34 | version: 4.45.0 35 | 36 | packages: 37 | 38 | '@cloudflare/kv-asset-handler@0.4.0': 39 | resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} 40 | engines: {node: '>=18.0.0'} 41 | 42 | '@cloudflare/unenv-preset@2.7.8': 43 | resolution: {integrity: sha512-Ky929MfHh+qPhwCapYrRPwPVHtA2Ioex/DbGZyskGyNRDe9Ru3WThYZivyNVaPy5ergQSgMs9OKrM9Ajtz9F6w==} 44 | peerDependencies: 45 | unenv: 2.0.0-rc.21 46 | workerd: ^1.20250927.0 47 | peerDependenciesMeta: 48 | workerd: 49 | optional: true 50 | 51 | '@cloudflare/workerd-darwin-64@1.20251011.0': 52 | resolution: {integrity: sha512-0DirVP+Z82RtZLlK2B+VhLOkk+ShBqDYO/jhcRw4oVlp0TOvk3cOVZChrt3+y3NV8Y/PYgTEywzLKFSziK4wCg==} 53 | engines: {node: '>=16'} 54 | cpu: [x64] 55 | os: [darwin] 56 | 57 | '@cloudflare/workerd-darwin-arm64@1.20251011.0': 58 | resolution: {integrity: sha512-1WuFBGwZd15p4xssGN/48OE2oqokIuc51YvHvyNivyV8IYnAs3G9bJNGWth1X7iMDPe4g44pZrKhRnISS2+5dA==} 59 | engines: {node: '>=16'} 60 | cpu: [arm64] 61 | os: [darwin] 62 | 63 | '@cloudflare/workerd-linux-64@1.20251011.0': 64 | resolution: {integrity: sha512-BccMiBzFlWZyFghIw2szanmYJrJGBGHomw2y/GV6pYXChFzMGZkeCEMfmCyJj29xczZXxcZmUVJxNy4eJxO8QA==} 65 | engines: {node: '>=16'} 66 | cpu: [x64] 67 | os: [linux] 68 | 69 | '@cloudflare/workerd-linux-arm64@1.20251011.0': 70 | resolution: {integrity: sha512-79o/216lsbAbKEVDZYXR24ivEIE2ysDL9jvo0rDTkViLWju9dAp3CpyetglpJatbSi3uWBPKZBEOqN68zIjVsQ==} 71 | engines: {node: '>=16'} 72 | cpu: [arm64] 73 | os: [linux] 74 | 75 | '@cloudflare/workerd-windows-64@1.20251011.0': 76 | resolution: {integrity: sha512-RIXUQRchFdqEvaUqn1cXZXSKjpqMaSaVAkI5jNZ8XzAw/bw2bcdOVUtakrflgxDprltjFb0PTNtuss1FKtH9Jg==} 77 | engines: {node: '>=16'} 78 | cpu: [x64] 79 | os: [win32] 80 | 81 | '@cspell/cspell-bundled-dicts@9.2.2': 82 | resolution: {integrity: sha512-W3FKgb89DwMuQEVWz0dPH9uZqC8w+ylpbtmXuevflw3SLtGPyllMvf/1T6tcqIkg3KEWoRYFxjpJWyoOjJkZGw==} 83 | engines: {node: '>=20'} 84 | 85 | '@cspell/cspell-json-reporter@9.2.2': 86 | resolution: {integrity: sha512-7nTqnnRCyQB+bTmIuBR4aRwV5JHymckmz1snCF+ItjDSvlc3qzjxldG8ao5zm34h+b/8YCvdMU9B92eHBt803w==} 87 | engines: {node: '>=20'} 88 | 89 | '@cspell/cspell-pipe@9.2.2': 90 | resolution: {integrity: sha512-YOdbp1uoKMkYy92qxMjoOxcqcR6LEVDus+72C4X9L8eJ2b+CBO3VaVqU16Y7OQGjYMnukYgB6eyTh8YFo9uBRw==} 91 | engines: {node: '>=20'} 92 | 93 | '@cspell/cspell-resolver@9.2.2': 94 | resolution: {integrity: sha512-5tST2xoU8xbXihr1bdQ6pfcScQ3PkFpKKhFGClVfqS0yf/CKYURqzJlRDVjrFZsl+PT6tw/Jdt0E9Wwp1X1Qgw==} 95 | engines: {node: '>=20'} 96 | 97 | '@cspell/cspell-service-bus@9.2.2': 98 | resolution: {integrity: sha512-AxJuw/YPJkz1Ali5mA+OW9y4JiJzb2U7H4pGYq0nRB/mWwI/xtFjuWVkI+BhwrA2P6hHdifu0JdxSLqW4IYpPQ==} 99 | engines: {node: '>=20'} 100 | 101 | '@cspell/cspell-types@9.2.2': 102 | resolution: {integrity: sha512-/1dRFQ3sEY9Yo+f3w0A8MFJ0BOapQc1uFjlMF19c3uoD/e4PpNLpL1qXY4FeLWKDk1D9VT8SL93J+lIwEi5bvg==} 103 | engines: {node: '>=20'} 104 | 105 | '@cspell/dict-ada@4.1.1': 106 | resolution: {integrity: sha512-E+0YW9RhZod/9Qy2gxfNZiHJjCYFlCdI69br1eviQQWB8yOTJX0JHXLs79kOYhSW0kINPVUdvddEBe6Lu6CjGQ==} 107 | 108 | '@cspell/dict-al@1.1.1': 109 | resolution: {integrity: sha512-sD8GCaZetgQL4+MaJLXqbzWcRjfKVp8x+px3HuCaaiATAAtvjwUQ5/Iubiqwfd1boIh2Y1/3EgM3TLQ7Q8e0wQ==} 110 | 111 | '@cspell/dict-aws@4.0.15': 112 | resolution: {integrity: sha512-aPY7VVR5Os4rz36EaqXBAEy14wR4Rqv+leCJ2Ug/Gd0IglJpM30LalF3e2eJChnjje3vWoEC0Rz3+e5gpZG+Kg==} 113 | 114 | '@cspell/dict-bash@4.2.1': 115 | resolution: {integrity: sha512-SBnzfAyEAZLI9KFS7DUG6Xc1vDFuLllY3jz0WHvmxe8/4xV3ufFE3fGxalTikc1VVeZgZmxYiABw4iGxVldYEg==} 116 | 117 | '@cspell/dict-companies@3.2.6': 118 | resolution: {integrity: sha512-cVWBk4DSUOthCsgOsoB+5L5F1Wk8lWGHnw5de75YCKSjOEV8/6kskwwDrPTIHkoGVzpIzIIQ/OdXhYwa2G+16A==} 119 | 120 | '@cspell/dict-cpp@6.0.12': 121 | resolution: {integrity: sha512-N4NsCTttVpMqQEYbf0VQwCj6np+pJESov0WieCN7R/0aByz4+MXEiDieWWisaiVi8LbKzs1mEj4ZTw5K/6O2UQ==} 122 | 123 | '@cspell/dict-cryptocurrencies@5.0.5': 124 | resolution: {integrity: sha512-R68hYYF/rtlE6T/dsObStzN5QZw+0aQBinAXuWCVqwdS7YZo0X33vGMfChkHaiCo3Z2+bkegqHlqxZF4TD3rUA==} 125 | 126 | '@cspell/dict-csharp@4.0.7': 127 | resolution: {integrity: sha512-H16Hpu8O/1/lgijFt2lOk4/nnldFtQ4t8QHbyqphqZZVE5aS4J/zD/WvduqnLY21aKhZS6jo/xF5PX9jyqPKUA==} 128 | 129 | '@cspell/dict-css@4.0.18': 130 | resolution: {integrity: sha512-EF77RqROHL+4LhMGW5NTeKqfUd/e4OOv6EDFQ/UQQiFyWuqkEKyEz0NDILxOFxWUEVdjT2GQ2cC7t12B6pESwg==} 131 | 132 | '@cspell/dict-dart@2.3.1': 133 | resolution: {integrity: sha512-xoiGnULEcWdodXI6EwVyqpZmpOoh8RA2Xk9BNdR7DLamV/QMvEYn8KJ7NlRiTSauJKPNkHHQ5EVHRM6sTS7jdg==} 134 | 135 | '@cspell/dict-data-science@2.0.10': 136 | resolution: {integrity: sha512-vZSsz7845ugW6mY65966Ki2bMS/ZnAZoTVvpuXQ07a2rYxJhUC+6WuBMD80hFLlKwjC5T/5Llv4F/VlB00swpw==} 137 | 138 | '@cspell/dict-django@4.1.5': 139 | resolution: {integrity: sha512-AvTWu99doU3T8ifoMYOMLW2CXKvyKLukPh1auOPwFGHzueWYvBBN+OxF8wF7XwjTBMMeRleVdLh3aWCDEX/ZWg==} 140 | 141 | '@cspell/dict-docker@1.1.16': 142 | resolution: {integrity: sha512-UiVQ5RmCg6j0qGIxrBnai3pIB+aYKL3zaJGvXk1O/ertTKJif9RZikKXCEgqhaCYMweM4fuLqWSVmw3hU164Iw==} 143 | 144 | '@cspell/dict-dotnet@5.0.10': 145 | resolution: {integrity: sha512-ooar8BP/RBNP1gzYfJPStKEmpWy4uv/7JCq6FOnJLeD1yyfG3d/LFMVMwiJo+XWz025cxtkM3wuaikBWzCqkmg==} 146 | 147 | '@cspell/dict-elixir@4.0.8': 148 | resolution: {integrity: sha512-CyfphrbMyl4Ms55Vzuj+mNmd693HjBFr9hvU+B2YbFEZprE5AG+EXLYTMRWrXbpds4AuZcvN3deM2XVB80BN/Q==} 149 | 150 | '@cspell/dict-en-common-misspellings@2.1.6': 151 | resolution: {integrity: sha512-xV9yryOqZizbSqxRS7kSVRrxVEyWHUqwdY56IuT7eAWGyTCJNmitXzXa4p+AnEbhL+AB2WLynGVSbNoUC3ceFA==} 152 | 153 | '@cspell/dict-en-gb-mit@3.1.11': 154 | resolution: {integrity: sha512-uC+iZ1+0RGHNrLQ+NuEyzfwlyAoJc69cgQGTfUiJMzaRPWt7bLlHDEpDiOzQ0D2NbEERCma1Ud1G7hqWCDUN2Q==} 155 | 156 | '@cspell/dict-en_us@4.4.21': 157 | resolution: {integrity: sha512-VG5nxhBJeOBCZAKbk6DNFi4oce4mFDNQrQTusFfBvdqLt0VIg8ylUrvAtDJyfYGDUYPSrZQlzME6YVBdowT7Iw==} 158 | 159 | '@cspell/dict-filetypes@3.0.14': 160 | resolution: {integrity: sha512-KSXaSMYYNMLLdHEnju1DyRRH3eQWPRYRnOXpuHUdOh2jC44VgQoxyMU7oB3NAhDhZKBPCihabzECsAGFbdKfEA==} 161 | 162 | '@cspell/dict-flutter@1.1.1': 163 | resolution: {integrity: sha512-UlOzRcH2tNbFhZmHJN48Za/2/MEdRHl2BMkCWZBYs+30b91mWvBfzaN4IJQU7dUZtowKayVIF9FzvLZtZokc5A==} 164 | 165 | '@cspell/dict-fonts@4.0.5': 166 | resolution: {integrity: sha512-BbpkX10DUX/xzHs6lb7yzDf/LPjwYIBJHJlUXSBXDtK/1HaeS+Wqol4Mlm2+NAgZ7ikIE5DQMViTgBUY3ezNoQ==} 167 | 168 | '@cspell/dict-fsharp@1.1.1': 169 | resolution: {integrity: sha512-imhs0u87wEA4/cYjgzS0tAyaJpwG7vwtC8UyMFbwpmtw+/bgss+osNfyqhYRyS/ehVCWL17Ewx2UPkexjKyaBA==} 170 | 171 | '@cspell/dict-fullstack@3.2.7': 172 | resolution: {integrity: sha512-IxEk2YAwAJKYCUEgEeOg3QvTL4XLlyArJElFuMQevU1dPgHgzWElFevN5lsTFnvMFA1riYsVinqJJX0BanCFEg==} 173 | 174 | '@cspell/dict-gaming-terms@1.1.2': 175 | resolution: {integrity: sha512-9XnOvaoTBscq0xuD6KTEIkk9hhdfBkkvJAIsvw3JMcnp1214OCGW8+kako5RqQ2vTZR3Tnf3pc57o7VgkM0q1Q==} 176 | 177 | '@cspell/dict-git@3.0.7': 178 | resolution: {integrity: sha512-odOwVKgfxCQfiSb+nblQZc4ErXmnWEnv8XwkaI4sNJ7cNmojnvogYVeMqkXPjvfrgEcizEEA4URRD2Ms5PDk1w==} 179 | 180 | '@cspell/dict-golang@6.0.23': 181 | resolution: {integrity: sha512-oXqUh/9dDwcmVlfUF5bn3fYFqbUzC46lXFQmi5emB0vYsyQXdNWsqi6/yH3uE7bdRE21nP7Yo0mR1jjFNyLamg==} 182 | 183 | '@cspell/dict-google@1.0.9': 184 | resolution: {integrity: sha512-biL65POqialY0i4g6crj7pR6JnBkbsPovB2WDYkj3H4TuC/QXv7Pu5pdPxeUJA6TSCHI7T5twsO4VSVyRxD9CA==} 185 | 186 | '@cspell/dict-haskell@4.0.6': 187 | resolution: {integrity: sha512-ib8SA5qgftExpYNjWhpYIgvDsZ/0wvKKxSP+kuSkkak520iPvTJumEpIE+qPcmJQo4NzdKMN8nEfaeci4OcFAQ==} 188 | 189 | '@cspell/dict-html-symbol-entities@4.0.4': 190 | resolution: {integrity: sha512-afea+0rGPDeOV9gdO06UW183Qg6wRhWVkgCFwiO3bDupAoyXRuvupbb5nUyqSTsLXIKL8u8uXQlJ9pkz07oVXw==} 191 | 192 | '@cspell/dict-html@4.0.12': 193 | resolution: {integrity: sha512-JFffQ1dDVEyJq6tCDWv0r/RqkdSnV43P2F/3jJ9rwLgdsOIXwQbXrz6QDlvQLVvNSnORH9KjDtenFTGDyzfCaA==} 194 | 195 | '@cspell/dict-java@5.0.12': 196 | resolution: {integrity: sha512-qPSNhTcl7LGJ5Qp6VN71H8zqvRQK04S08T67knMq9hTA8U7G1sTKzLmBaDOFhq17vNX/+rT+rbRYp+B5Nwza1A==} 197 | 198 | '@cspell/dict-julia@1.1.1': 199 | resolution: {integrity: sha512-WylJR9TQ2cgwd5BWEOfdO3zvDB+L7kYFm0I9u0s9jKHWQ6yKmfKeMjU9oXxTBxIufhCXm92SKwwVNAC7gjv+yA==} 200 | 201 | '@cspell/dict-k8s@1.0.12': 202 | resolution: {integrity: sha512-2LcllTWgaTfYC7DmkMPOn9GsBWsA4DZdlun4po8s2ysTP7CPEnZc1ZfK6pZ2eI4TsZemlUQQ+NZxMe9/QutQxg==} 203 | 204 | '@cspell/dict-kotlin@1.1.1': 205 | resolution: {integrity: sha512-J3NzzfgmxRvEeOe3qUXnSJQCd38i/dpF9/t3quuWh6gXM+krsAXP75dY1CzDmS8mrJAlBdVBeAW5eAZTD8g86Q==} 206 | 207 | '@cspell/dict-latex@4.0.4': 208 | resolution: {integrity: sha512-YdTQhnTINEEm/LZgTzr9Voz4mzdOXH7YX+bSFs3hnkUHCUUtX/mhKgf1CFvZ0YNM2afjhQcmLaR9bDQVyYBvpA==} 209 | 210 | '@cspell/dict-lorem-ipsum@4.0.5': 211 | resolution: {integrity: sha512-9a4TJYRcPWPBKkQAJ/whCu4uCAEgv/O2xAaZEI0n4y1/l18Yyx8pBKoIX5QuVXjjmKEkK7hi5SxyIsH7pFEK9Q==} 212 | 213 | '@cspell/dict-lua@4.0.8': 214 | resolution: {integrity: sha512-N4PkgNDMu9JVsRu7JBS/3E/dvfItRgk9w5ga2dKq+JupP2Y3lojNaAVFhXISh4Y0a6qXDn2clA6nvnavQ/jjLA==} 215 | 216 | '@cspell/dict-makefile@1.0.5': 217 | resolution: {integrity: sha512-4vrVt7bGiK8Rx98tfRbYo42Xo2IstJkAF4tLLDMNQLkQ86msDlYSKG1ZCk8Abg+EdNcFAjNhXIiNO+w4KflGAQ==} 218 | 219 | '@cspell/dict-markdown@2.0.12': 220 | resolution: {integrity: sha512-ufwoliPijAgWkD/ivAMC+A9QD895xKiJRF/fwwknQb7kt7NozTLKFAOBtXGPJAB4UjhGBpYEJVo2elQ0FCAH9A==} 221 | peerDependencies: 222 | '@cspell/dict-css': ^4.0.18 223 | '@cspell/dict-html': ^4.0.12 224 | '@cspell/dict-html-symbol-entities': ^4.0.4 225 | '@cspell/dict-typescript': ^3.2.3 226 | 227 | '@cspell/dict-monkeyc@1.0.11': 228 | resolution: {integrity: sha512-7Q1Ncu0urALI6dPTrEbSTd//UK0qjRBeaxhnm8uY5fgYNFYAG+u4gtnTIo59S6Bw5P++4H3DiIDYoQdY/lha8w==} 229 | 230 | '@cspell/dict-node@5.0.8': 231 | resolution: {integrity: sha512-AirZcN2i84ynev3p2/1NCPEhnNsHKMz9zciTngGoqpdItUb2bDt1nJBjwlsrFI78GZRph/VaqTVFwYikmncpXg==} 232 | 233 | '@cspell/dict-npm@5.2.19': 234 | resolution: {integrity: sha512-fg23oFvKTsGjGB6DkwCUzZrLZPwp+ItSV0UXS+n6JbcH5dj3CP6MDmdwNX6s6oaAovIFKmwFBP73GUqnjMmnpQ==} 235 | 236 | '@cspell/dict-php@4.1.0': 237 | resolution: {integrity: sha512-dTDeabyOj7eFvn2Q4Za3uVXM2+SzeFMqX8ly2P0XTo4AzbCmI2hulFD/QIADwWmwiRrInbbf8cxwFHNIYrXl4w==} 238 | 239 | '@cspell/dict-powershell@5.0.15': 240 | resolution: {integrity: sha512-l4S5PAcvCFcVDMJShrYD0X6Huv9dcsQPlsVsBGbH38wvuN7gS7+GxZFAjTNxDmTY1wrNi1cCatSg6Pu2BW4rgg==} 241 | 242 | '@cspell/dict-public-licenses@2.0.15': 243 | resolution: {integrity: sha512-cJEOs901H13Pfy0fl4dCD1U+xpWIMaEPq8MeYU83FfDZvellAuSo4GqWCripfIqlhns/L6+UZEIJSOZnjgy7Wg==} 244 | 245 | '@cspell/dict-python@4.2.20': 246 | resolution: {integrity: sha512-c1wbfb3MDMSY4UTNdGnA18NkrcX6cMlYER0HSpGYh2jLK43gS1QL3j2B49qgnRYfcLUp4xgeA05vzCQsjGbwuQ==} 247 | 248 | '@cspell/dict-r@2.1.1': 249 | resolution: {integrity: sha512-71Ka+yKfG4ZHEMEmDxc6+blFkeTTvgKbKAbwiwQAuKl3zpqs1Y0vUtwW2N4b3LgmSPhV3ODVY0y4m5ofqDuKMw==} 250 | 251 | '@cspell/dict-ruby@5.0.9': 252 | resolution: {integrity: sha512-H2vMcERMcANvQshAdrVx0XoWaNX8zmmiQN11dZZTQAZaNJ0xatdJoSqY8C8uhEMW89bfgpN+NQgGuDXW2vmXEw==} 253 | 254 | '@cspell/dict-rust@4.0.12': 255 | resolution: {integrity: sha512-z2QiH+q9UlNhobBJArvILRxV8Jz0pKIK7gqu4TgmEYyjiu1TvnGZ1tbYHeu9w3I/wOP6UMDoCBTty5AlYfW0mw==} 256 | 257 | '@cspell/dict-scala@5.0.8': 258 | resolution: {integrity: sha512-YdftVmumv8IZq9zu1gn2U7A4bfM2yj9Vaupydotyjuc+EEZZSqAafTpvW/jKLWji2TgybM1L2IhmV0s/Iv9BTw==} 259 | 260 | '@cspell/dict-shell@1.1.1': 261 | resolution: {integrity: sha512-T37oYxE7OV1x/1D4/13Y8JZGa1QgDCXV7AVt3HLXjn0Fe3TaNDvf5sU0fGnXKmBPqFFrHdpD3uutAQb1dlp15g==} 262 | 263 | '@cspell/dict-software-terms@5.1.9': 264 | resolution: {integrity: sha512-lpiSpS1iTF2n8barqVkPmhe5qXs5291IqcDUPr5ttFRxPMZ7pgrMUdvcdNUdkajymjDOyWfUNhdYXW7JndThZw==} 265 | 266 | '@cspell/dict-sql@2.2.1': 267 | resolution: {integrity: sha512-qDHF8MpAYCf4pWU8NKbnVGzkoxMNrFqBHyG/dgrlic5EQiKANCLELYtGlX5auIMDLmTf1inA0eNtv74tyRJ/vg==} 268 | 269 | '@cspell/dict-svelte@1.0.7': 270 | resolution: {integrity: sha512-hGZsGqP0WdzKkdpeVLBivRuSNzOTvN036EBmpOwxH+FTY2DuUH7ecW+cSaMwOgmq5JFSdTcbTNFlNC8HN8lhaQ==} 271 | 272 | '@cspell/dict-swift@2.0.6': 273 | resolution: {integrity: sha512-PnpNbrIbex2aqU1kMgwEKvCzgbkHtj3dlFLPMqW1vSniop7YxaDTtvTUO4zA++ugYAEL+UK8vYrBwDPTjjvSnA==} 274 | 275 | '@cspell/dict-terraform@1.1.3': 276 | resolution: {integrity: sha512-gr6wxCydwSFyyBKhBA2xkENXtVFToheqYYGFvlMZXWjviynXmh+NK/JTvTCk/VHk3+lzbO9EEQKee6VjrAUSbA==} 277 | 278 | '@cspell/dict-typescript@3.2.3': 279 | resolution: {integrity: sha512-zXh1wYsNljQZfWWdSPYwQhpwiuW0KPW1dSd8idjMRvSD0aSvWWHoWlrMsmZeRl4qM4QCEAjua8+cjflm41cQBg==} 280 | 281 | '@cspell/dict-vue@3.0.5': 282 | resolution: {integrity: sha512-Mqutb8jbM+kIcywuPQCCaK5qQHTdaByoEO2J9LKFy3sqAdiBogNkrplqUK0HyyRFgCfbJUgjz3N85iCMcWH0JA==} 283 | 284 | '@cspell/dynamic-import@9.2.2': 285 | resolution: {integrity: sha512-RHQLp0iYcWuK0MGiUBA6dgEOCdI29kZTiBRVcJM/Pzvhvs8j9pzBTkMesZAJ7XOSFz2kU+skRMBsFd774dmYTA==} 286 | engines: {node: '>=20'} 287 | 288 | '@cspell/filetypes@9.2.2': 289 | resolution: {integrity: sha512-oM+cqipbZ4PNxQcKP9sKOeRKBG+oM3NKO3To1FyxYxvnUG7DukW2yH6BS0/GUY7qK+oSftuq5d6DXEAl9wzbEQ==} 290 | engines: {node: '>=20'} 291 | 292 | '@cspell/strong-weak-map@9.2.2': 293 | resolution: {integrity: sha512-Z7rd7NwHaoH/d/Ds97Rv042WS9PgpVdqgO2X0ehYZmgj2E0LIq2MTkIJMheUrSn37D0PW/suroKh6hN15pJtpQ==} 294 | engines: {node: '>=20'} 295 | 296 | '@cspell/url@9.2.2': 297 | resolution: {integrity: sha512-gvLprhrArvLP/rnC8b766dA80EXwBbzXqb9tNDRk1esQV7d3uS1Ftk1970MRlAfLg1pG6V+3C4UrB6WOB/rMCQ==} 298 | engines: {node: '>=20'} 299 | 300 | '@cspotcode/source-map-support@0.8.1': 301 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 302 | engines: {node: '>=12'} 303 | 304 | '@emnapi/runtime@1.6.0': 305 | resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} 306 | 307 | '@es-joy/jsdoccomment@0.58.0': 308 | resolution: {integrity: sha512-smMc5pDht/UVsCD3hhw/a/e/p8m0RdRYiluXToVfd+d4yaQQh7nn9bACjkk6nXJvat7EWPAxuFkMEFfrxeGa3Q==} 309 | engines: {node: '>=20.11.0'} 310 | 311 | '@esbuild/aix-ppc64@0.25.4': 312 | resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} 313 | engines: {node: '>=18'} 314 | cpu: [ppc64] 315 | os: [aix] 316 | 317 | '@esbuild/android-arm64@0.25.4': 318 | resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} 319 | engines: {node: '>=18'} 320 | cpu: [arm64] 321 | os: [android] 322 | 323 | '@esbuild/android-arm@0.25.4': 324 | resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} 325 | engines: {node: '>=18'} 326 | cpu: [arm] 327 | os: [android] 328 | 329 | '@esbuild/android-x64@0.25.4': 330 | resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} 331 | engines: {node: '>=18'} 332 | cpu: [x64] 333 | os: [android] 334 | 335 | '@esbuild/darwin-arm64@0.25.4': 336 | resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} 337 | engines: {node: '>=18'} 338 | cpu: [arm64] 339 | os: [darwin] 340 | 341 | '@esbuild/darwin-x64@0.25.4': 342 | resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} 343 | engines: {node: '>=18'} 344 | cpu: [x64] 345 | os: [darwin] 346 | 347 | '@esbuild/freebsd-arm64@0.25.4': 348 | resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} 349 | engines: {node: '>=18'} 350 | cpu: [arm64] 351 | os: [freebsd] 352 | 353 | '@esbuild/freebsd-x64@0.25.4': 354 | resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} 355 | engines: {node: '>=18'} 356 | cpu: [x64] 357 | os: [freebsd] 358 | 359 | '@esbuild/linux-arm64@0.25.4': 360 | resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} 361 | engines: {node: '>=18'} 362 | cpu: [arm64] 363 | os: [linux] 364 | 365 | '@esbuild/linux-arm@0.25.4': 366 | resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} 367 | engines: {node: '>=18'} 368 | cpu: [arm] 369 | os: [linux] 370 | 371 | '@esbuild/linux-ia32@0.25.4': 372 | resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} 373 | engines: {node: '>=18'} 374 | cpu: [ia32] 375 | os: [linux] 376 | 377 | '@esbuild/linux-loong64@0.25.4': 378 | resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} 379 | engines: {node: '>=18'} 380 | cpu: [loong64] 381 | os: [linux] 382 | 383 | '@esbuild/linux-mips64el@0.25.4': 384 | resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} 385 | engines: {node: '>=18'} 386 | cpu: [mips64el] 387 | os: [linux] 388 | 389 | '@esbuild/linux-ppc64@0.25.4': 390 | resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} 391 | engines: {node: '>=18'} 392 | cpu: [ppc64] 393 | os: [linux] 394 | 395 | '@esbuild/linux-riscv64@0.25.4': 396 | resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} 397 | engines: {node: '>=18'} 398 | cpu: [riscv64] 399 | os: [linux] 400 | 401 | '@esbuild/linux-s390x@0.25.4': 402 | resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} 403 | engines: {node: '>=18'} 404 | cpu: [s390x] 405 | os: [linux] 406 | 407 | '@esbuild/linux-x64@0.25.4': 408 | resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} 409 | engines: {node: '>=18'} 410 | cpu: [x64] 411 | os: [linux] 412 | 413 | '@esbuild/netbsd-arm64@0.25.4': 414 | resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} 415 | engines: {node: '>=18'} 416 | cpu: [arm64] 417 | os: [netbsd] 418 | 419 | '@esbuild/netbsd-x64@0.25.4': 420 | resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} 421 | engines: {node: '>=18'} 422 | cpu: [x64] 423 | os: [netbsd] 424 | 425 | '@esbuild/openbsd-arm64@0.25.4': 426 | resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} 427 | engines: {node: '>=18'} 428 | cpu: [arm64] 429 | os: [openbsd] 430 | 431 | '@esbuild/openbsd-x64@0.25.4': 432 | resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} 433 | engines: {node: '>=18'} 434 | cpu: [x64] 435 | os: [openbsd] 436 | 437 | '@esbuild/sunos-x64@0.25.4': 438 | resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} 439 | engines: {node: '>=18'} 440 | cpu: [x64] 441 | os: [sunos] 442 | 443 | '@esbuild/win32-arm64@0.25.4': 444 | resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} 445 | engines: {node: '>=18'} 446 | cpu: [arm64] 447 | os: [win32] 448 | 449 | '@esbuild/win32-ia32@0.25.4': 450 | resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} 451 | engines: {node: '>=18'} 452 | cpu: [ia32] 453 | os: [win32] 454 | 455 | '@esbuild/win32-x64@0.25.4': 456 | resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} 457 | engines: {node: '>=18'} 458 | cpu: [x64] 459 | os: [win32] 460 | 461 | '@eslint-community/eslint-utils@4.9.0': 462 | resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} 463 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 464 | peerDependencies: 465 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 466 | 467 | '@eslint-community/regexpp@4.12.2': 468 | resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} 469 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 470 | 471 | '@eslint/eslintrc@2.1.4': 472 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 473 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 474 | 475 | '@eslint/js@8.57.1': 476 | resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} 477 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 478 | 479 | '@humanwhocodes/config-array@0.13.0': 480 | resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} 481 | engines: {node: '>=10.10.0'} 482 | deprecated: Use @eslint/config-array instead 483 | 484 | '@humanwhocodes/module-importer@1.0.1': 485 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 486 | engines: {node: '>=12.22'} 487 | 488 | '@humanwhocodes/object-schema@2.0.3': 489 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} 490 | deprecated: Use @eslint/object-schema instead 491 | 492 | '@img/sharp-darwin-arm64@0.33.5': 493 | resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} 494 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 495 | cpu: [arm64] 496 | os: [darwin] 497 | 498 | '@img/sharp-darwin-x64@0.33.5': 499 | resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} 500 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 501 | cpu: [x64] 502 | os: [darwin] 503 | 504 | '@img/sharp-libvips-darwin-arm64@1.0.4': 505 | resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} 506 | cpu: [arm64] 507 | os: [darwin] 508 | 509 | '@img/sharp-libvips-darwin-x64@1.0.4': 510 | resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} 511 | cpu: [x64] 512 | os: [darwin] 513 | 514 | '@img/sharp-libvips-linux-arm64@1.0.4': 515 | resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} 516 | cpu: [arm64] 517 | os: [linux] 518 | libc: [glibc] 519 | 520 | '@img/sharp-libvips-linux-arm@1.0.5': 521 | resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} 522 | cpu: [arm] 523 | os: [linux] 524 | libc: [glibc] 525 | 526 | '@img/sharp-libvips-linux-s390x@1.0.4': 527 | resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} 528 | cpu: [s390x] 529 | os: [linux] 530 | libc: [glibc] 531 | 532 | '@img/sharp-libvips-linux-x64@1.0.4': 533 | resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} 534 | cpu: [x64] 535 | os: [linux] 536 | libc: [glibc] 537 | 538 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 539 | resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} 540 | cpu: [arm64] 541 | os: [linux] 542 | libc: [musl] 543 | 544 | '@img/sharp-libvips-linuxmusl-x64@1.0.4': 545 | resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} 546 | cpu: [x64] 547 | os: [linux] 548 | libc: [musl] 549 | 550 | '@img/sharp-linux-arm64@0.33.5': 551 | resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} 552 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 553 | cpu: [arm64] 554 | os: [linux] 555 | libc: [glibc] 556 | 557 | '@img/sharp-linux-arm@0.33.5': 558 | resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} 559 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 560 | cpu: [arm] 561 | os: [linux] 562 | libc: [glibc] 563 | 564 | '@img/sharp-linux-s390x@0.33.5': 565 | resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} 566 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 567 | cpu: [s390x] 568 | os: [linux] 569 | libc: [glibc] 570 | 571 | '@img/sharp-linux-x64@0.33.5': 572 | resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} 573 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 574 | cpu: [x64] 575 | os: [linux] 576 | libc: [glibc] 577 | 578 | '@img/sharp-linuxmusl-arm64@0.33.5': 579 | resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} 580 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 581 | cpu: [arm64] 582 | os: [linux] 583 | libc: [musl] 584 | 585 | '@img/sharp-linuxmusl-x64@0.33.5': 586 | resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} 587 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 588 | cpu: [x64] 589 | os: [linux] 590 | libc: [musl] 591 | 592 | '@img/sharp-wasm32@0.33.5': 593 | resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} 594 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 595 | cpu: [wasm32] 596 | 597 | '@img/sharp-win32-ia32@0.33.5': 598 | resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} 599 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 600 | cpu: [ia32] 601 | os: [win32] 602 | 603 | '@img/sharp-win32-x64@0.33.5': 604 | resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} 605 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 606 | cpu: [x64] 607 | os: [win32] 608 | 609 | '@jridgewell/resolve-uri@3.1.2': 610 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 611 | engines: {node: '>=6.0.0'} 612 | 613 | '@jridgewell/sourcemap-codec@1.5.5': 614 | resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 615 | 616 | '@jridgewell/trace-mapping@0.3.9': 617 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 618 | 619 | '@nodelib/fs.scandir@2.1.5': 620 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 621 | engines: {node: '>= 8'} 622 | 623 | '@nodelib/fs.stat@2.0.5': 624 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 625 | engines: {node: '>= 8'} 626 | 627 | '@nodelib/fs.walk@1.2.8': 628 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 629 | engines: {node: '>= 8'} 630 | 631 | '@poppinss/colors@4.1.5': 632 | resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==} 633 | 634 | '@poppinss/dumper@0.6.4': 635 | resolution: {integrity: sha512-iG0TIdqv8xJ3Lt9O8DrPRxw1MRLjNpoqiSGU03P/wNLP/s0ra0udPJ1J2Tx5M0J3H/cVyEgpbn8xUKRY9j59kQ==} 636 | 637 | '@poppinss/exception@1.2.2': 638 | resolution: {integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==} 639 | 640 | '@sindresorhus/is@7.1.0': 641 | resolution: {integrity: sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA==} 642 | engines: {node: '>=18'} 643 | 644 | '@speed-highlight/core@1.2.8': 645 | resolution: {integrity: sha512-IGytNtnUnPIobIbOq5Y6LIlqiHNX+vnToQIS7lj6L5819C+rA8TXRDkkG8vePsiBOGcoW9R6i+dp2YBUKdB09Q==} 646 | 647 | '@types/estree@1.0.8': 648 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 649 | 650 | '@types/json5@0.0.29': 651 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 652 | 653 | '@types/node@24.9.1': 654 | resolution: {integrity: sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==} 655 | 656 | '@typescript-eslint/types@8.46.2': 657 | resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} 658 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 659 | 660 | '@ungap/structured-clone@1.3.0': 661 | resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} 662 | 663 | acorn-jsx@5.3.2: 664 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 665 | peerDependencies: 666 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 667 | 668 | acorn-walk@8.3.2: 669 | resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} 670 | engines: {node: '>=0.4.0'} 671 | 672 | acorn@8.14.0: 673 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 674 | engines: {node: '>=0.4.0'} 675 | hasBin: true 676 | 677 | acorn@8.15.0: 678 | resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 679 | engines: {node: '>=0.4.0'} 680 | hasBin: true 681 | 682 | ajv@6.12.6: 683 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 684 | 685 | ansi-regex@5.0.1: 686 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 687 | engines: {node: '>=8'} 688 | 689 | ansi-styles@4.3.0: 690 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 691 | engines: {node: '>=8'} 692 | 693 | are-docs-informative@0.0.2: 694 | resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} 695 | engines: {node: '>=14'} 696 | 697 | argparse@2.0.1: 698 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 699 | 700 | array-buffer-byte-length@1.0.2: 701 | resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} 702 | engines: {node: '>= 0.4'} 703 | 704 | array-includes@3.1.9: 705 | resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} 706 | engines: {node: '>= 0.4'} 707 | 708 | array-timsort@1.0.3: 709 | resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} 710 | 711 | array.prototype.flat@1.3.3: 712 | resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} 713 | engines: {node: '>= 0.4'} 714 | 715 | array.prototype.flatmap@1.3.3: 716 | resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} 717 | engines: {node: '>= 0.4'} 718 | 719 | arraybuffer.prototype.slice@1.0.4: 720 | resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} 721 | engines: {node: '>= 0.4'} 722 | 723 | async-function@1.0.0: 724 | resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} 725 | engines: {node: '>= 0.4'} 726 | 727 | available-typed-arrays@1.0.7: 728 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} 729 | engines: {node: '>= 0.4'} 730 | 731 | balanced-match@1.0.2: 732 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 733 | 734 | blake3-wasm@2.1.5: 735 | resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} 736 | 737 | brace-expansion@1.1.12: 738 | resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} 739 | 740 | call-bind-apply-helpers@1.0.2: 741 | resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 742 | engines: {node: '>= 0.4'} 743 | 744 | call-bind@1.0.8: 745 | resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} 746 | engines: {node: '>= 0.4'} 747 | 748 | call-bound@1.0.4: 749 | resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} 750 | engines: {node: '>= 0.4'} 751 | 752 | callsites@3.1.0: 753 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 754 | engines: {node: '>=6'} 755 | 756 | chalk-template@1.1.2: 757 | resolution: {integrity: sha512-2bxTP2yUH7AJj/VAXfcA+4IcWGdQ87HwBANLt5XxGTeomo8yG0y95N1um9i5StvhT/Bl0/2cARA5v1PpPXUxUA==} 758 | engines: {node: '>=14.16'} 759 | 760 | chalk@4.1.2: 761 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 762 | engines: {node: '>=10'} 763 | 764 | chalk@5.6.2: 765 | resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} 766 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 767 | 768 | clear-module@4.1.2: 769 | resolution: {integrity: sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==} 770 | engines: {node: '>=8'} 771 | 772 | color-convert@2.0.1: 773 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 774 | engines: {node: '>=7.0.0'} 775 | 776 | color-name@1.1.4: 777 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 778 | 779 | color-string@1.9.1: 780 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} 781 | 782 | color@4.2.3: 783 | resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} 784 | engines: {node: '>=12.5.0'} 785 | 786 | commander@14.0.2: 787 | resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} 788 | engines: {node: '>=20'} 789 | 790 | comment-json@4.4.1: 791 | resolution: {integrity: sha512-r1To31BQD5060QdkC+Iheai7gHwoSZobzunqkf2/kQ6xIAfJyrKNAFUwdKvkK7Qgu7pVTKQEa7ok7Ed3ycAJgg==} 792 | engines: {node: '>= 6'} 793 | 794 | comment-parser@1.4.1: 795 | resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} 796 | engines: {node: '>= 12.0.0'} 797 | 798 | concat-map@0.0.1: 799 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 800 | 801 | confusing-browser-globals@1.0.11: 802 | resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} 803 | 804 | cookie@1.0.2: 805 | resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} 806 | engines: {node: '>=18'} 807 | 808 | core-util-is@1.0.3: 809 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 810 | 811 | cross-spawn@7.0.6: 812 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 813 | engines: {node: '>= 8'} 814 | 815 | cspell-config-lib@9.2.2: 816 | resolution: {integrity: sha512-Fp3jdFxb5gxcQP146TfNVmDqXKfm3xmcEUr1K829DmAFwhc7s+/pCRjhBPoGfQt6U7ugpxjkSx2gGKSbLhp7Mg==} 817 | engines: {node: '>=20'} 818 | 819 | cspell-dictionary@9.2.2: 820 | resolution: {integrity: sha512-lnoCFoCAaiFJi+Hz22t+tdTj76jyTA76EYFKhmf/dbj5UO6kVy8by08uFfUbbMaC9Oi09YHnI62P/e+LBx1v8Q==} 821 | engines: {node: '>=20'} 822 | 823 | cspell-gitignore@9.2.2: 824 | resolution: {integrity: sha512-Idx3IVKTpnGoyRlkj8F/lSWtWiJpqLhXmZglTzfGWxzbik8E0aQmSyT3blbNWhZL/K1JqlTjbSiAICVMoWTkhA==} 825 | engines: {node: '>=20'} 826 | hasBin: true 827 | 828 | cspell-glob@9.2.2: 829 | resolution: {integrity: sha512-6mhUk4iLu5YzY9PE86ZyAjNFjM7TD8Oh4btJ7ZV+edzJjdVjFugXWyefPXCGNfuvpaJqpuoLDwMvNHJxUmLwbg==} 830 | engines: {node: '>=20'} 831 | 832 | cspell-grammar@9.2.2: 833 | resolution: {integrity: sha512-m0aozo5gjZYL5Vm3/9D0/yLZJTsVJAP8VeRVljN4u5T7w+WY+LsnvKSZhnkOvsT3kCJDhcKEkMVkCo8d/7EcAQ==} 834 | engines: {node: '>=20'} 835 | hasBin: true 836 | 837 | cspell-io@9.2.2: 838 | resolution: {integrity: sha512-Rpky4woeB6/1VUCk7DtRm94A6c5XRbhcj5dUZh851EpZ0ItEz3S9+MhkX8g1sTVkDg6Hln1pu+Nbm9dFIpGkGA==} 839 | engines: {node: '>=20'} 840 | 841 | cspell-lib@9.2.2: 842 | resolution: {integrity: sha512-ksy+5vCSZz7ECUDlLA8ZGNEcWmnzl5bMe4IEPHAMaPFY3iWNsG7dXBrae1dj/b/3HqVqOdXPdwjnGAyZciissg==} 843 | engines: {node: '>=20'} 844 | 845 | cspell-trie-lib@9.2.2: 846 | resolution: {integrity: sha512-84L0Or6xkfnDMmxx2BtuaqsM4LOVCgnG4ZzMMgwQJU+9nSOAHs0ULNWQTHLbsCF+FFG/siILpUkIc3z+UxjGFw==} 847 | engines: {node: '>=20'} 848 | 849 | cspell@9.2.2: 850 | resolution: {integrity: sha512-D9jxXlYWIxUw4IjicxrmK83n5BzuQVZaIhsDsfRiH7iP4F71gDtKR9b+UgmXevvseN7OH4LkdyaPKzjNliGAbg==} 851 | engines: {node: '>=20'} 852 | hasBin: true 853 | 854 | data-view-buffer@1.0.2: 855 | resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} 856 | engines: {node: '>= 0.4'} 857 | 858 | data-view-byte-length@1.0.2: 859 | resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} 860 | engines: {node: '>= 0.4'} 861 | 862 | data-view-byte-offset@1.0.1: 863 | resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} 864 | engines: {node: '>= 0.4'} 865 | 866 | debug@3.2.7: 867 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 868 | peerDependencies: 869 | supports-color: '*' 870 | peerDependenciesMeta: 871 | supports-color: 872 | optional: true 873 | 874 | debug@4.4.3: 875 | resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 876 | engines: {node: '>=6.0'} 877 | peerDependencies: 878 | supports-color: '*' 879 | peerDependenciesMeta: 880 | supports-color: 881 | optional: true 882 | 883 | deep-is@0.1.4: 884 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 885 | 886 | define-data-property@1.1.4: 887 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 888 | engines: {node: '>= 0.4'} 889 | 890 | define-properties@1.2.1: 891 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 892 | engines: {node: '>= 0.4'} 893 | 894 | defu@6.1.4: 895 | resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 896 | 897 | detect-libc@2.1.2: 898 | resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} 899 | engines: {node: '>=8'} 900 | 901 | doctrine@2.1.0: 902 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 903 | engines: {node: '>=0.10.0'} 904 | 905 | doctrine@3.0.0: 906 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 907 | engines: {node: '>=6.0.0'} 908 | 909 | dunder-proto@1.0.1: 910 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 911 | engines: {node: '>= 0.4'} 912 | 913 | env-paths@3.0.0: 914 | resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} 915 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 916 | 917 | error-stack-parser-es@1.0.5: 918 | resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} 919 | 920 | es-abstract@1.24.0: 921 | resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} 922 | engines: {node: '>= 0.4'} 923 | 924 | es-define-property@1.0.1: 925 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 926 | engines: {node: '>= 0.4'} 927 | 928 | es-errors@1.3.0: 929 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 930 | engines: {node: '>= 0.4'} 931 | 932 | es-object-atoms@1.1.1: 933 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 934 | engines: {node: '>= 0.4'} 935 | 936 | es-set-tostringtag@2.1.0: 937 | resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} 938 | engines: {node: '>= 0.4'} 939 | 940 | es-shim-unscopables@1.1.0: 941 | resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} 942 | engines: {node: '>= 0.4'} 943 | 944 | es-to-primitive@1.3.0: 945 | resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} 946 | engines: {node: '>= 0.4'} 947 | 948 | esbuild@0.25.4: 949 | resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} 950 | engines: {node: '>=18'} 951 | hasBin: true 952 | 953 | escape-string-regexp@4.0.0: 954 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 955 | engines: {node: '>=10'} 956 | 957 | eslint-config-airbnb-base@15.0.0: 958 | resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} 959 | engines: {node: ^10.12.0 || >=12.0.0} 960 | peerDependencies: 961 | eslint: ^7.32.0 || ^8.2.0 962 | eslint-plugin-import: ^2.25.2 963 | 964 | eslint-config-prettier@10.1.8: 965 | resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} 966 | hasBin: true 967 | peerDependencies: 968 | eslint: '>=7.0.0' 969 | 970 | eslint-import-resolver-node@0.3.9: 971 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 972 | 973 | eslint-module-utils@2.12.1: 974 | resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} 975 | engines: {node: '>=4'} 976 | peerDependencies: 977 | '@typescript-eslint/parser': '*' 978 | eslint: '*' 979 | eslint-import-resolver-node: '*' 980 | eslint-import-resolver-typescript: '*' 981 | eslint-import-resolver-webpack: '*' 982 | peerDependenciesMeta: 983 | '@typescript-eslint/parser': 984 | optional: true 985 | eslint: 986 | optional: true 987 | eslint-import-resolver-node: 988 | optional: true 989 | eslint-import-resolver-typescript: 990 | optional: true 991 | eslint-import-resolver-webpack: 992 | optional: true 993 | 994 | eslint-plugin-import@2.27.5: 995 | resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} 996 | engines: {node: '>=4'} 997 | peerDependencies: 998 | '@typescript-eslint/parser': '*' 999 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1000 | peerDependenciesMeta: 1001 | '@typescript-eslint/parser': 1002 | optional: true 1003 | 1004 | eslint-plugin-jsdoc@56.1.2: 1005 | resolution: {integrity: sha512-g30LmgNkpKsKNge4NKtoARCvGvGYHeCQjEWCs5xlNwHxdwVvd0rZaovHmD/D0of0H1bqcyFYv6WXDVAezndstw==} 1006 | engines: {node: '>=20.11.0'} 1007 | peerDependencies: 1008 | eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 1009 | 1010 | eslint-scope@7.2.2: 1011 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1012 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1013 | 1014 | eslint-visitor-keys@3.4.3: 1015 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1016 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1017 | 1018 | eslint-visitor-keys@4.2.1: 1019 | resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 1020 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1021 | 1022 | eslint@8.57.1: 1023 | resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} 1024 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1025 | deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. 1026 | hasBin: true 1027 | 1028 | espree@10.4.0: 1029 | resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} 1030 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1031 | 1032 | espree@9.6.1: 1033 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1034 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1035 | 1036 | esprima@4.0.1: 1037 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1038 | engines: {node: '>=4'} 1039 | hasBin: true 1040 | 1041 | esquery@1.6.0: 1042 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1043 | engines: {node: '>=0.10'} 1044 | 1045 | esrecurse@4.3.0: 1046 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1047 | engines: {node: '>=4.0'} 1048 | 1049 | estraverse@5.3.0: 1050 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1051 | engines: {node: '>=4.0'} 1052 | 1053 | esutils@2.0.3: 1054 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1055 | engines: {node: '>=0.10.0'} 1056 | 1057 | exit-hook@2.2.1: 1058 | resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} 1059 | engines: {node: '>=6'} 1060 | 1061 | exsolve@1.0.7: 1062 | resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} 1063 | 1064 | fast-deep-equal@3.1.3: 1065 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1066 | 1067 | fast-equals@5.3.2: 1068 | resolution: {integrity: sha512-6rxyATwPCkaFIL3JLqw8qXqMpIZ942pTX/tbQFkRsDGblS8tNGtlUauA/+mt6RUfqn/4MoEr+WDkYoIQbibWuQ==} 1069 | engines: {node: '>=6.0.0'} 1070 | 1071 | fast-json-stable-stringify@2.1.0: 1072 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1073 | 1074 | fast-levenshtein@2.0.6: 1075 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1076 | 1077 | fastq@1.19.1: 1078 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 1079 | 1080 | fdir@6.5.0: 1081 | resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 1082 | engines: {node: '>=12.0.0'} 1083 | peerDependencies: 1084 | picomatch: ^3 || ^4 1085 | peerDependenciesMeta: 1086 | picomatch: 1087 | optional: true 1088 | 1089 | file-entry-cache@6.0.1: 1090 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1091 | engines: {node: ^10.12.0 || >=12.0.0} 1092 | 1093 | find-up@5.0.0: 1094 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1095 | engines: {node: '>=10'} 1096 | 1097 | flat-cache@3.2.0: 1098 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 1099 | engines: {node: ^10.12.0 || >=12.0.0} 1100 | 1101 | flatted@3.3.3: 1102 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 1103 | 1104 | for-each@0.3.5: 1105 | resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} 1106 | engines: {node: '>= 0.4'} 1107 | 1108 | fs.realpath@1.0.0: 1109 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1110 | 1111 | fsevents@2.3.3: 1112 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1113 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1114 | os: [darwin] 1115 | 1116 | function-bind@1.1.2: 1117 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1118 | 1119 | function.prototype.name@1.1.8: 1120 | resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} 1121 | engines: {node: '>= 0.4'} 1122 | 1123 | functions-have-names@1.2.3: 1124 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1125 | 1126 | generator-function@2.0.1: 1127 | resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} 1128 | engines: {node: '>= 0.4'} 1129 | 1130 | gensequence@7.0.0: 1131 | resolution: {integrity: sha512-47Frx13aZh01afHJTB3zTtKIlFI6vWY+MYCN9Qpew6i52rfKjnhCF/l1YlC8UmEMvvntZZ6z4PiCcmyuedR2aQ==} 1132 | engines: {node: '>=18'} 1133 | 1134 | get-intrinsic@1.3.0: 1135 | resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} 1136 | engines: {node: '>= 0.4'} 1137 | 1138 | get-proto@1.0.1: 1139 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 1140 | engines: {node: '>= 0.4'} 1141 | 1142 | get-symbol-description@1.1.0: 1143 | resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} 1144 | engines: {node: '>= 0.4'} 1145 | 1146 | glob-parent@6.0.2: 1147 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1148 | engines: {node: '>=10.13.0'} 1149 | 1150 | glob-to-regexp@0.4.1: 1151 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 1152 | 1153 | glob@7.2.3: 1154 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1155 | deprecated: Glob versions prior to v9 are no longer supported 1156 | 1157 | global-directory@4.0.1: 1158 | resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} 1159 | engines: {node: '>=18'} 1160 | 1161 | globals@13.24.0: 1162 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 1163 | engines: {node: '>=8'} 1164 | 1165 | globalthis@1.0.4: 1166 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} 1167 | engines: {node: '>= 0.4'} 1168 | 1169 | gopd@1.2.0: 1170 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 1171 | engines: {node: '>= 0.4'} 1172 | 1173 | graphemer@1.4.0: 1174 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1175 | 1176 | has-bigints@1.1.0: 1177 | resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} 1178 | engines: {node: '>= 0.4'} 1179 | 1180 | has-flag@4.0.0: 1181 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1182 | engines: {node: '>=8'} 1183 | 1184 | has-property-descriptors@1.0.2: 1185 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 1186 | 1187 | has-proto@1.2.0: 1188 | resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} 1189 | engines: {node: '>= 0.4'} 1190 | 1191 | has-symbols@1.1.0: 1192 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 1193 | engines: {node: '>= 0.4'} 1194 | 1195 | has-tostringtag@1.0.2: 1196 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} 1197 | engines: {node: '>= 0.4'} 1198 | 1199 | has@1.0.4: 1200 | resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} 1201 | engines: {node: '>= 0.4.0'} 1202 | 1203 | hasown@2.0.2: 1204 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1205 | engines: {node: '>= 0.4'} 1206 | 1207 | ignore@5.3.2: 1208 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1209 | engines: {node: '>= 4'} 1210 | 1211 | import-fresh@3.3.1: 1212 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 1213 | engines: {node: '>=6'} 1214 | 1215 | import-meta-resolve@4.2.0: 1216 | resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} 1217 | 1218 | imurmurhash@0.1.4: 1219 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1220 | engines: {node: '>=0.8.19'} 1221 | 1222 | inflight@1.0.6: 1223 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1224 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. 1225 | 1226 | inherits@2.0.4: 1227 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1228 | 1229 | ini@4.1.1: 1230 | resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} 1231 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1232 | 1233 | internal-slot@1.1.0: 1234 | resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} 1235 | engines: {node: '>= 0.4'} 1236 | 1237 | is-array-buffer@3.0.5: 1238 | resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} 1239 | engines: {node: '>= 0.4'} 1240 | 1241 | is-arrayish@0.3.4: 1242 | resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} 1243 | 1244 | is-async-function@2.1.1: 1245 | resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} 1246 | engines: {node: '>= 0.4'} 1247 | 1248 | is-bigint@1.1.0: 1249 | resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} 1250 | engines: {node: '>= 0.4'} 1251 | 1252 | is-boolean-object@1.2.2: 1253 | resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} 1254 | engines: {node: '>= 0.4'} 1255 | 1256 | is-callable@1.2.7: 1257 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1258 | engines: {node: '>= 0.4'} 1259 | 1260 | is-core-module@2.16.1: 1261 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 1262 | engines: {node: '>= 0.4'} 1263 | 1264 | is-data-view@1.0.2: 1265 | resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} 1266 | engines: {node: '>= 0.4'} 1267 | 1268 | is-date-object@1.1.0: 1269 | resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} 1270 | engines: {node: '>= 0.4'} 1271 | 1272 | is-extglob@2.1.1: 1273 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1274 | engines: {node: '>=0.10.0'} 1275 | 1276 | is-finalizationregistry@1.1.1: 1277 | resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} 1278 | engines: {node: '>= 0.4'} 1279 | 1280 | is-generator-function@1.1.2: 1281 | resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} 1282 | engines: {node: '>= 0.4'} 1283 | 1284 | is-glob@4.0.3: 1285 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1286 | engines: {node: '>=0.10.0'} 1287 | 1288 | is-map@2.0.3: 1289 | resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} 1290 | engines: {node: '>= 0.4'} 1291 | 1292 | is-negative-zero@2.0.3: 1293 | resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} 1294 | engines: {node: '>= 0.4'} 1295 | 1296 | is-number-object@1.1.1: 1297 | resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} 1298 | engines: {node: '>= 0.4'} 1299 | 1300 | is-path-inside@3.0.3: 1301 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1302 | engines: {node: '>=8'} 1303 | 1304 | is-regex@1.2.1: 1305 | resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} 1306 | engines: {node: '>= 0.4'} 1307 | 1308 | is-set@2.0.3: 1309 | resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} 1310 | engines: {node: '>= 0.4'} 1311 | 1312 | is-shared-array-buffer@1.0.4: 1313 | resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} 1314 | engines: {node: '>= 0.4'} 1315 | 1316 | is-string@1.1.1: 1317 | resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} 1318 | engines: {node: '>= 0.4'} 1319 | 1320 | is-symbol@1.1.1: 1321 | resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} 1322 | engines: {node: '>= 0.4'} 1323 | 1324 | is-typed-array@1.1.15: 1325 | resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} 1326 | engines: {node: '>= 0.4'} 1327 | 1328 | is-weakmap@2.0.2: 1329 | resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} 1330 | engines: {node: '>= 0.4'} 1331 | 1332 | is-weakref@1.1.1: 1333 | resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} 1334 | engines: {node: '>= 0.4'} 1335 | 1336 | is-weakset@2.0.4: 1337 | resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} 1338 | engines: {node: '>= 0.4'} 1339 | 1340 | isarray@2.0.5: 1341 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 1342 | 1343 | isexe@2.0.0: 1344 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1345 | 1346 | js-yaml@4.1.0: 1347 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1348 | hasBin: true 1349 | 1350 | jsdoc-type-pratt-parser@5.4.0: 1351 | resolution: {integrity: sha512-F9GQ+F1ZU6qvSrZV8fNFpjDNf614YzR2eF6S0+XbDjAcUI28FSoXnYZFjQmb1kFx3rrJb5PnxUH3/Yti6fcM+g==} 1352 | engines: {node: '>=12.0.0'} 1353 | 1354 | json-buffer@3.0.1: 1355 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1356 | 1357 | json-schema-traverse@0.4.1: 1358 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1359 | 1360 | json-stable-stringify-without-jsonify@1.0.1: 1361 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1362 | 1363 | json5@1.0.2: 1364 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 1365 | hasBin: true 1366 | 1367 | keyv@4.5.4: 1368 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1369 | 1370 | kleur@4.1.5: 1371 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1372 | engines: {node: '>=6'} 1373 | 1374 | levn@0.4.1: 1375 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1376 | engines: {node: '>= 0.8.0'} 1377 | 1378 | locate-path@6.0.0: 1379 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1380 | engines: {node: '>=10'} 1381 | 1382 | lodash.merge@4.6.2: 1383 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1384 | 1385 | math-intrinsics@1.1.0: 1386 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 1387 | engines: {node: '>= 0.4'} 1388 | 1389 | mime@3.0.0: 1390 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1391 | engines: {node: '>=10.0.0'} 1392 | hasBin: true 1393 | 1394 | miniflare@4.20251011.1: 1395 | resolution: {integrity: sha512-Qbw1Z8HTYM1adWl6FAtzhrj34/6dPRDPwdYOx21dkae8a/EaxbMzRIPbb4HKVGMVvtqbK1FaRCgDLVLolNzGHg==} 1396 | engines: {node: '>=18.0.0'} 1397 | hasBin: true 1398 | 1399 | minimatch@3.1.2: 1400 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1401 | 1402 | minimist@1.2.8: 1403 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1404 | 1405 | ms@2.1.3: 1406 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1407 | 1408 | natural-compare@1.4.0: 1409 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1410 | 1411 | object-deep-merge@1.0.5: 1412 | resolution: {integrity: sha512-3DioFgOzetbxbeUq8pB2NunXo8V0n4EvqsWM/cJoI6IA9zghd7cl/2pBOuWRf4dlvA+fcg5ugFMZaN2/RuoaGg==} 1413 | 1414 | object-inspect@1.13.4: 1415 | resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} 1416 | engines: {node: '>= 0.4'} 1417 | 1418 | object-keys@1.1.1: 1419 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1420 | engines: {node: '>= 0.4'} 1421 | 1422 | object.assign@4.1.7: 1423 | resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} 1424 | engines: {node: '>= 0.4'} 1425 | 1426 | object.entries@1.1.9: 1427 | resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} 1428 | engines: {node: '>= 0.4'} 1429 | 1430 | object.values@1.2.1: 1431 | resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} 1432 | engines: {node: '>= 0.4'} 1433 | 1434 | ohash@2.0.11: 1435 | resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 1436 | 1437 | once@1.4.0: 1438 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1439 | 1440 | optionator@0.9.4: 1441 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1442 | engines: {node: '>= 0.8.0'} 1443 | 1444 | own-keys@1.0.1: 1445 | resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} 1446 | engines: {node: '>= 0.4'} 1447 | 1448 | p-limit@3.1.0: 1449 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1450 | engines: {node: '>=10'} 1451 | 1452 | p-locate@5.0.0: 1453 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1454 | engines: {node: '>=10'} 1455 | 1456 | parent-module@1.0.1: 1457 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1458 | engines: {node: '>=6'} 1459 | 1460 | parent-module@2.0.0: 1461 | resolution: {integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==} 1462 | engines: {node: '>=8'} 1463 | 1464 | parse-imports-exports@0.2.4: 1465 | resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} 1466 | 1467 | parse-statements@1.0.11: 1468 | resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} 1469 | 1470 | path-exists@4.0.0: 1471 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1472 | engines: {node: '>=8'} 1473 | 1474 | path-is-absolute@1.0.1: 1475 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1476 | engines: {node: '>=0.10.0'} 1477 | 1478 | path-key@3.1.1: 1479 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1480 | engines: {node: '>=8'} 1481 | 1482 | path-parse@1.0.7: 1483 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1484 | 1485 | path-to-regexp@6.3.0: 1486 | resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} 1487 | 1488 | pathe@2.0.3: 1489 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1490 | 1491 | picomatch@4.0.3: 1492 | resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 1493 | engines: {node: '>=12'} 1494 | 1495 | possible-typed-array-names@1.1.0: 1496 | resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} 1497 | engines: {node: '>= 0.4'} 1498 | 1499 | prelude-ls@1.2.1: 1500 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1501 | engines: {node: '>= 0.8.0'} 1502 | 1503 | prettier@3.6.2: 1504 | resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} 1505 | engines: {node: '>=14'} 1506 | hasBin: true 1507 | 1508 | punycode@2.3.1: 1509 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1510 | engines: {node: '>=6'} 1511 | 1512 | queue-microtask@1.2.3: 1513 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1514 | 1515 | reflect.getprototypeof@1.0.10: 1516 | resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} 1517 | engines: {node: '>= 0.4'} 1518 | 1519 | regexp.prototype.flags@1.5.4: 1520 | resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} 1521 | engines: {node: '>= 0.4'} 1522 | 1523 | resolve-from@4.0.0: 1524 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1525 | engines: {node: '>=4'} 1526 | 1527 | resolve-from@5.0.0: 1528 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1529 | engines: {node: '>=8'} 1530 | 1531 | resolve@1.22.11: 1532 | resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} 1533 | engines: {node: '>= 0.4'} 1534 | hasBin: true 1535 | 1536 | reusify@1.1.0: 1537 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1538 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1539 | 1540 | rimraf@3.0.2: 1541 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1542 | deprecated: Rimraf versions prior to v4 are no longer supported 1543 | hasBin: true 1544 | 1545 | run-parallel@1.2.0: 1546 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1547 | 1548 | safe-array-concat@1.1.3: 1549 | resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} 1550 | engines: {node: '>=0.4'} 1551 | 1552 | safe-push-apply@1.0.0: 1553 | resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} 1554 | engines: {node: '>= 0.4'} 1555 | 1556 | safe-regex-test@1.1.0: 1557 | resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} 1558 | engines: {node: '>= 0.4'} 1559 | 1560 | semver@6.3.1: 1561 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1562 | hasBin: true 1563 | 1564 | semver@7.7.3: 1565 | resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} 1566 | engines: {node: '>=10'} 1567 | hasBin: true 1568 | 1569 | set-function-length@1.2.2: 1570 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} 1571 | engines: {node: '>= 0.4'} 1572 | 1573 | set-function-name@2.0.2: 1574 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} 1575 | engines: {node: '>= 0.4'} 1576 | 1577 | set-proto@1.0.0: 1578 | resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} 1579 | engines: {node: '>= 0.4'} 1580 | 1581 | sharp@0.33.5: 1582 | resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} 1583 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1584 | 1585 | shebang-command@2.0.0: 1586 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1587 | engines: {node: '>=8'} 1588 | 1589 | shebang-regex@3.0.0: 1590 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1591 | engines: {node: '>=8'} 1592 | 1593 | side-channel-list@1.0.0: 1594 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} 1595 | engines: {node: '>= 0.4'} 1596 | 1597 | side-channel-map@1.0.1: 1598 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 1599 | engines: {node: '>= 0.4'} 1600 | 1601 | side-channel-weakmap@1.0.2: 1602 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 1603 | engines: {node: '>= 0.4'} 1604 | 1605 | side-channel@1.1.0: 1606 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 1607 | engines: {node: '>= 0.4'} 1608 | 1609 | simple-swizzle@0.2.4: 1610 | resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} 1611 | 1612 | smol-toml@1.4.2: 1613 | resolution: {integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==} 1614 | engines: {node: '>= 18'} 1615 | 1616 | spdx-exceptions@2.5.0: 1617 | resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} 1618 | 1619 | spdx-expression-parse@4.0.0: 1620 | resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} 1621 | 1622 | spdx-license-ids@3.0.22: 1623 | resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} 1624 | 1625 | stop-iteration-iterator@1.1.0: 1626 | resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} 1627 | engines: {node: '>= 0.4'} 1628 | 1629 | stoppable@1.1.0: 1630 | resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} 1631 | engines: {node: '>=4', npm: '>=6'} 1632 | 1633 | string.prototype.trim@1.2.10: 1634 | resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} 1635 | engines: {node: '>= 0.4'} 1636 | 1637 | string.prototype.trimend@1.0.9: 1638 | resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} 1639 | engines: {node: '>= 0.4'} 1640 | 1641 | string.prototype.trimstart@1.0.8: 1642 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} 1643 | engines: {node: '>= 0.4'} 1644 | 1645 | strip-ansi@6.0.1: 1646 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1647 | engines: {node: '>=8'} 1648 | 1649 | strip-bom@3.0.0: 1650 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 1651 | engines: {node: '>=4'} 1652 | 1653 | strip-json-comments@3.1.1: 1654 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1655 | engines: {node: '>=8'} 1656 | 1657 | supports-color@10.2.2: 1658 | resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} 1659 | engines: {node: '>=18'} 1660 | 1661 | supports-color@7.2.0: 1662 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1663 | engines: {node: '>=8'} 1664 | 1665 | supports-preserve-symlinks-flag@1.0.0: 1666 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1667 | engines: {node: '>= 0.4'} 1668 | 1669 | text-table@0.2.0: 1670 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1671 | 1672 | tinyglobby@0.2.15: 1673 | resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 1674 | engines: {node: '>=12.0.0'} 1675 | 1676 | tsconfig-paths@3.15.0: 1677 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} 1678 | 1679 | tslib@2.8.1: 1680 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1681 | 1682 | type-check@0.4.0: 1683 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1684 | engines: {node: '>= 0.8.0'} 1685 | 1686 | type-fest@0.20.2: 1687 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 1688 | engines: {node: '>=10'} 1689 | 1690 | type-fest@4.2.0: 1691 | resolution: {integrity: sha512-5zknd7Dss75pMSED270A1RQS3KloqRJA9XbXLe0eCxyw7xXFb3rd+9B0UQ/0E+LQT6lnrLviEolYORlRWamn4w==} 1692 | engines: {node: '>=16'} 1693 | 1694 | typed-array-buffer@1.0.3: 1695 | resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} 1696 | engines: {node: '>= 0.4'} 1697 | 1698 | typed-array-byte-length@1.0.3: 1699 | resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} 1700 | engines: {node: '>= 0.4'} 1701 | 1702 | typed-array-byte-offset@1.0.4: 1703 | resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} 1704 | engines: {node: '>= 0.4'} 1705 | 1706 | typed-array-length@1.0.7: 1707 | resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} 1708 | engines: {node: '>= 0.4'} 1709 | 1710 | ufo@1.6.1: 1711 | resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} 1712 | 1713 | unbox-primitive@1.1.0: 1714 | resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} 1715 | engines: {node: '>= 0.4'} 1716 | 1717 | undici-types@7.16.0: 1718 | resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} 1719 | 1720 | undici@7.14.0: 1721 | resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==} 1722 | engines: {node: '>=20.18.1'} 1723 | 1724 | unenv@2.0.0-rc.21: 1725 | resolution: {integrity: sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==} 1726 | 1727 | uri-js@4.4.1: 1728 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1729 | 1730 | vscode-languageserver-textdocument@1.0.12: 1731 | resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} 1732 | 1733 | vscode-uri@3.1.0: 1734 | resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} 1735 | 1736 | which-boxed-primitive@1.1.1: 1737 | resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} 1738 | engines: {node: '>= 0.4'} 1739 | 1740 | which-builtin-type@1.2.1: 1741 | resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} 1742 | engines: {node: '>= 0.4'} 1743 | 1744 | which-collection@1.0.2: 1745 | resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} 1746 | engines: {node: '>= 0.4'} 1747 | 1748 | which-typed-array@1.1.19: 1749 | resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} 1750 | engines: {node: '>= 0.4'} 1751 | 1752 | which@2.0.2: 1753 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1754 | engines: {node: '>= 8'} 1755 | hasBin: true 1756 | 1757 | word-wrap@1.2.5: 1758 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1759 | engines: {node: '>=0.10.0'} 1760 | 1761 | workerd@1.20251011.0: 1762 | resolution: {integrity: sha512-Dq35TLPEJAw7BuYQMkN3p9rge34zWMU2Gnd4DSJFeVqld4+DAO2aPG7+We2dNIAyM97S8Y9BmHulbQ00E0HC7Q==} 1763 | engines: {node: '>=16'} 1764 | hasBin: true 1765 | 1766 | wrangler@4.45.0: 1767 | resolution: {integrity: sha512-2qM6bHw8l7r89Z9Y5A7Wn4L9U+dFoLjYgEUVpqy7CcmXpppL3QIYqU6rU5lre7/SRzBuPu/H93Vwfh538gZ3iw==} 1768 | engines: {node: '>=18.0.0'} 1769 | hasBin: true 1770 | peerDependencies: 1771 | '@cloudflare/workers-types': ^4.20251011.0 1772 | peerDependenciesMeta: 1773 | '@cloudflare/workers-types': 1774 | optional: true 1775 | 1776 | wrappy@1.0.2: 1777 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1778 | 1779 | ws@8.18.0: 1780 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 1781 | engines: {node: '>=10.0.0'} 1782 | peerDependencies: 1783 | bufferutil: ^4.0.1 1784 | utf-8-validate: '>=5.0.2' 1785 | peerDependenciesMeta: 1786 | bufferutil: 1787 | optional: true 1788 | utf-8-validate: 1789 | optional: true 1790 | 1791 | xdg-basedir@5.1.0: 1792 | resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} 1793 | engines: {node: '>=12'} 1794 | 1795 | yaml@2.8.1: 1796 | resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} 1797 | engines: {node: '>= 14.6'} 1798 | hasBin: true 1799 | 1800 | yocto-queue@0.1.0: 1801 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1802 | engines: {node: '>=10'} 1803 | 1804 | youch-core@0.3.3: 1805 | resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} 1806 | 1807 | youch@4.1.0-beta.10: 1808 | resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} 1809 | 1810 | zod@3.22.3: 1811 | resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} 1812 | 1813 | snapshots: 1814 | 1815 | '@cloudflare/kv-asset-handler@0.4.0': 1816 | dependencies: 1817 | mime: 3.0.0 1818 | 1819 | '@cloudflare/unenv-preset@2.7.8(unenv@2.0.0-rc.21)(workerd@1.20251011.0)': 1820 | dependencies: 1821 | unenv: 2.0.0-rc.21 1822 | optionalDependencies: 1823 | workerd: 1.20251011.0 1824 | 1825 | '@cloudflare/workerd-darwin-64@1.20251011.0': 1826 | optional: true 1827 | 1828 | '@cloudflare/workerd-darwin-arm64@1.20251011.0': 1829 | optional: true 1830 | 1831 | '@cloudflare/workerd-linux-64@1.20251011.0': 1832 | optional: true 1833 | 1834 | '@cloudflare/workerd-linux-arm64@1.20251011.0': 1835 | optional: true 1836 | 1837 | '@cloudflare/workerd-windows-64@1.20251011.0': 1838 | optional: true 1839 | 1840 | '@cspell/cspell-bundled-dicts@9.2.2': 1841 | dependencies: 1842 | '@cspell/dict-ada': 4.1.1 1843 | '@cspell/dict-al': 1.1.1 1844 | '@cspell/dict-aws': 4.0.15 1845 | '@cspell/dict-bash': 4.2.1 1846 | '@cspell/dict-companies': 3.2.6 1847 | '@cspell/dict-cpp': 6.0.12 1848 | '@cspell/dict-cryptocurrencies': 5.0.5 1849 | '@cspell/dict-csharp': 4.0.7 1850 | '@cspell/dict-css': 4.0.18 1851 | '@cspell/dict-dart': 2.3.1 1852 | '@cspell/dict-data-science': 2.0.10 1853 | '@cspell/dict-django': 4.1.5 1854 | '@cspell/dict-docker': 1.1.16 1855 | '@cspell/dict-dotnet': 5.0.10 1856 | '@cspell/dict-elixir': 4.0.8 1857 | '@cspell/dict-en-common-misspellings': 2.1.6 1858 | '@cspell/dict-en-gb-mit': 3.1.11 1859 | '@cspell/dict-en_us': 4.4.21 1860 | '@cspell/dict-filetypes': 3.0.14 1861 | '@cspell/dict-flutter': 1.1.1 1862 | '@cspell/dict-fonts': 4.0.5 1863 | '@cspell/dict-fsharp': 1.1.1 1864 | '@cspell/dict-fullstack': 3.2.7 1865 | '@cspell/dict-gaming-terms': 1.1.2 1866 | '@cspell/dict-git': 3.0.7 1867 | '@cspell/dict-golang': 6.0.23 1868 | '@cspell/dict-google': 1.0.9 1869 | '@cspell/dict-haskell': 4.0.6 1870 | '@cspell/dict-html': 4.0.12 1871 | '@cspell/dict-html-symbol-entities': 4.0.4 1872 | '@cspell/dict-java': 5.0.12 1873 | '@cspell/dict-julia': 1.1.1 1874 | '@cspell/dict-k8s': 1.0.12 1875 | '@cspell/dict-kotlin': 1.1.1 1876 | '@cspell/dict-latex': 4.0.4 1877 | '@cspell/dict-lorem-ipsum': 4.0.5 1878 | '@cspell/dict-lua': 4.0.8 1879 | '@cspell/dict-makefile': 1.0.5 1880 | '@cspell/dict-markdown': 2.0.12(@cspell/dict-css@4.0.18)(@cspell/dict-html-symbol-entities@4.0.4)(@cspell/dict-html@4.0.12)(@cspell/dict-typescript@3.2.3) 1881 | '@cspell/dict-monkeyc': 1.0.11 1882 | '@cspell/dict-node': 5.0.8 1883 | '@cspell/dict-npm': 5.2.19 1884 | '@cspell/dict-php': 4.1.0 1885 | '@cspell/dict-powershell': 5.0.15 1886 | '@cspell/dict-public-licenses': 2.0.15 1887 | '@cspell/dict-python': 4.2.20 1888 | '@cspell/dict-r': 2.1.1 1889 | '@cspell/dict-ruby': 5.0.9 1890 | '@cspell/dict-rust': 4.0.12 1891 | '@cspell/dict-scala': 5.0.8 1892 | '@cspell/dict-shell': 1.1.1 1893 | '@cspell/dict-software-terms': 5.1.9 1894 | '@cspell/dict-sql': 2.2.1 1895 | '@cspell/dict-svelte': 1.0.7 1896 | '@cspell/dict-swift': 2.0.6 1897 | '@cspell/dict-terraform': 1.1.3 1898 | '@cspell/dict-typescript': 3.2.3 1899 | '@cspell/dict-vue': 3.0.5 1900 | 1901 | '@cspell/cspell-json-reporter@9.2.2': 1902 | dependencies: 1903 | '@cspell/cspell-types': 9.2.2 1904 | 1905 | '@cspell/cspell-pipe@9.2.2': {} 1906 | 1907 | '@cspell/cspell-resolver@9.2.2': 1908 | dependencies: 1909 | global-directory: 4.0.1 1910 | 1911 | '@cspell/cspell-service-bus@9.2.2': {} 1912 | 1913 | '@cspell/cspell-types@9.2.2': {} 1914 | 1915 | '@cspell/dict-ada@4.1.1': {} 1916 | 1917 | '@cspell/dict-al@1.1.1': {} 1918 | 1919 | '@cspell/dict-aws@4.0.15': {} 1920 | 1921 | '@cspell/dict-bash@4.2.1': 1922 | dependencies: 1923 | '@cspell/dict-shell': 1.1.1 1924 | 1925 | '@cspell/dict-companies@3.2.6': {} 1926 | 1927 | '@cspell/dict-cpp@6.0.12': {} 1928 | 1929 | '@cspell/dict-cryptocurrencies@5.0.5': {} 1930 | 1931 | '@cspell/dict-csharp@4.0.7': {} 1932 | 1933 | '@cspell/dict-css@4.0.18': {} 1934 | 1935 | '@cspell/dict-dart@2.3.1': {} 1936 | 1937 | '@cspell/dict-data-science@2.0.10': {} 1938 | 1939 | '@cspell/dict-django@4.1.5': {} 1940 | 1941 | '@cspell/dict-docker@1.1.16': {} 1942 | 1943 | '@cspell/dict-dotnet@5.0.10': {} 1944 | 1945 | '@cspell/dict-elixir@4.0.8': {} 1946 | 1947 | '@cspell/dict-en-common-misspellings@2.1.6': {} 1948 | 1949 | '@cspell/dict-en-gb-mit@3.1.11': {} 1950 | 1951 | '@cspell/dict-en_us@4.4.21': {} 1952 | 1953 | '@cspell/dict-filetypes@3.0.14': {} 1954 | 1955 | '@cspell/dict-flutter@1.1.1': {} 1956 | 1957 | '@cspell/dict-fonts@4.0.5': {} 1958 | 1959 | '@cspell/dict-fsharp@1.1.1': {} 1960 | 1961 | '@cspell/dict-fullstack@3.2.7': {} 1962 | 1963 | '@cspell/dict-gaming-terms@1.1.2': {} 1964 | 1965 | '@cspell/dict-git@3.0.7': {} 1966 | 1967 | '@cspell/dict-golang@6.0.23': {} 1968 | 1969 | '@cspell/dict-google@1.0.9': {} 1970 | 1971 | '@cspell/dict-haskell@4.0.6': {} 1972 | 1973 | '@cspell/dict-html-symbol-entities@4.0.4': {} 1974 | 1975 | '@cspell/dict-html@4.0.12': {} 1976 | 1977 | '@cspell/dict-java@5.0.12': {} 1978 | 1979 | '@cspell/dict-julia@1.1.1': {} 1980 | 1981 | '@cspell/dict-k8s@1.0.12': {} 1982 | 1983 | '@cspell/dict-kotlin@1.1.1': {} 1984 | 1985 | '@cspell/dict-latex@4.0.4': {} 1986 | 1987 | '@cspell/dict-lorem-ipsum@4.0.5': {} 1988 | 1989 | '@cspell/dict-lua@4.0.8': {} 1990 | 1991 | '@cspell/dict-makefile@1.0.5': {} 1992 | 1993 | '@cspell/dict-markdown@2.0.12(@cspell/dict-css@4.0.18)(@cspell/dict-html-symbol-entities@4.0.4)(@cspell/dict-html@4.0.12)(@cspell/dict-typescript@3.2.3)': 1994 | dependencies: 1995 | '@cspell/dict-css': 4.0.18 1996 | '@cspell/dict-html': 4.0.12 1997 | '@cspell/dict-html-symbol-entities': 4.0.4 1998 | '@cspell/dict-typescript': 3.2.3 1999 | 2000 | '@cspell/dict-monkeyc@1.0.11': {} 2001 | 2002 | '@cspell/dict-node@5.0.8': {} 2003 | 2004 | '@cspell/dict-npm@5.2.19': {} 2005 | 2006 | '@cspell/dict-php@4.1.0': {} 2007 | 2008 | '@cspell/dict-powershell@5.0.15': {} 2009 | 2010 | '@cspell/dict-public-licenses@2.0.15': {} 2011 | 2012 | '@cspell/dict-python@4.2.20': 2013 | dependencies: 2014 | '@cspell/dict-data-science': 2.0.10 2015 | 2016 | '@cspell/dict-r@2.1.1': {} 2017 | 2018 | '@cspell/dict-ruby@5.0.9': {} 2019 | 2020 | '@cspell/dict-rust@4.0.12': {} 2021 | 2022 | '@cspell/dict-scala@5.0.8': {} 2023 | 2024 | '@cspell/dict-shell@1.1.1': {} 2025 | 2026 | '@cspell/dict-software-terms@5.1.9': {} 2027 | 2028 | '@cspell/dict-sql@2.2.1': {} 2029 | 2030 | '@cspell/dict-svelte@1.0.7': {} 2031 | 2032 | '@cspell/dict-swift@2.0.6': {} 2033 | 2034 | '@cspell/dict-terraform@1.1.3': {} 2035 | 2036 | '@cspell/dict-typescript@3.2.3': {} 2037 | 2038 | '@cspell/dict-vue@3.0.5': {} 2039 | 2040 | '@cspell/dynamic-import@9.2.2': 2041 | dependencies: 2042 | '@cspell/url': 9.2.2 2043 | import-meta-resolve: 4.2.0 2044 | 2045 | '@cspell/filetypes@9.2.2': {} 2046 | 2047 | '@cspell/strong-weak-map@9.2.2': {} 2048 | 2049 | '@cspell/url@9.2.2': {} 2050 | 2051 | '@cspotcode/source-map-support@0.8.1': 2052 | dependencies: 2053 | '@jridgewell/trace-mapping': 0.3.9 2054 | 2055 | '@emnapi/runtime@1.6.0': 2056 | dependencies: 2057 | tslib: 2.8.1 2058 | optional: true 2059 | 2060 | '@es-joy/jsdoccomment@0.58.0': 2061 | dependencies: 2062 | '@types/estree': 1.0.8 2063 | '@typescript-eslint/types': 8.46.2 2064 | comment-parser: 1.4.1 2065 | esquery: 1.6.0 2066 | jsdoc-type-pratt-parser: 5.4.0 2067 | 2068 | '@esbuild/aix-ppc64@0.25.4': 2069 | optional: true 2070 | 2071 | '@esbuild/android-arm64@0.25.4': 2072 | optional: true 2073 | 2074 | '@esbuild/android-arm@0.25.4': 2075 | optional: true 2076 | 2077 | '@esbuild/android-x64@0.25.4': 2078 | optional: true 2079 | 2080 | '@esbuild/darwin-arm64@0.25.4': 2081 | optional: true 2082 | 2083 | '@esbuild/darwin-x64@0.25.4': 2084 | optional: true 2085 | 2086 | '@esbuild/freebsd-arm64@0.25.4': 2087 | optional: true 2088 | 2089 | '@esbuild/freebsd-x64@0.25.4': 2090 | optional: true 2091 | 2092 | '@esbuild/linux-arm64@0.25.4': 2093 | optional: true 2094 | 2095 | '@esbuild/linux-arm@0.25.4': 2096 | optional: true 2097 | 2098 | '@esbuild/linux-ia32@0.25.4': 2099 | optional: true 2100 | 2101 | '@esbuild/linux-loong64@0.25.4': 2102 | optional: true 2103 | 2104 | '@esbuild/linux-mips64el@0.25.4': 2105 | optional: true 2106 | 2107 | '@esbuild/linux-ppc64@0.25.4': 2108 | optional: true 2109 | 2110 | '@esbuild/linux-riscv64@0.25.4': 2111 | optional: true 2112 | 2113 | '@esbuild/linux-s390x@0.25.4': 2114 | optional: true 2115 | 2116 | '@esbuild/linux-x64@0.25.4': 2117 | optional: true 2118 | 2119 | '@esbuild/netbsd-arm64@0.25.4': 2120 | optional: true 2121 | 2122 | '@esbuild/netbsd-x64@0.25.4': 2123 | optional: true 2124 | 2125 | '@esbuild/openbsd-arm64@0.25.4': 2126 | optional: true 2127 | 2128 | '@esbuild/openbsd-x64@0.25.4': 2129 | optional: true 2130 | 2131 | '@esbuild/sunos-x64@0.25.4': 2132 | optional: true 2133 | 2134 | '@esbuild/win32-arm64@0.25.4': 2135 | optional: true 2136 | 2137 | '@esbuild/win32-ia32@0.25.4': 2138 | optional: true 2139 | 2140 | '@esbuild/win32-x64@0.25.4': 2141 | optional: true 2142 | 2143 | '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)': 2144 | dependencies: 2145 | eslint: 8.57.1 2146 | eslint-visitor-keys: 3.4.3 2147 | 2148 | '@eslint-community/regexpp@4.12.2': {} 2149 | 2150 | '@eslint/eslintrc@2.1.4': 2151 | dependencies: 2152 | ajv: 6.12.6 2153 | debug: 4.4.3 2154 | espree: 9.6.1 2155 | globals: 13.24.0 2156 | ignore: 5.3.2 2157 | import-fresh: 3.3.1 2158 | js-yaml: 4.1.0 2159 | minimatch: 3.1.2 2160 | strip-json-comments: 3.1.1 2161 | transitivePeerDependencies: 2162 | - supports-color 2163 | 2164 | '@eslint/js@8.57.1': {} 2165 | 2166 | '@humanwhocodes/config-array@0.13.0': 2167 | dependencies: 2168 | '@humanwhocodes/object-schema': 2.0.3 2169 | debug: 4.4.3 2170 | minimatch: 3.1.2 2171 | transitivePeerDependencies: 2172 | - supports-color 2173 | 2174 | '@humanwhocodes/module-importer@1.0.1': {} 2175 | 2176 | '@humanwhocodes/object-schema@2.0.3': {} 2177 | 2178 | '@img/sharp-darwin-arm64@0.33.5': 2179 | optionalDependencies: 2180 | '@img/sharp-libvips-darwin-arm64': 1.0.4 2181 | optional: true 2182 | 2183 | '@img/sharp-darwin-x64@0.33.5': 2184 | optionalDependencies: 2185 | '@img/sharp-libvips-darwin-x64': 1.0.4 2186 | optional: true 2187 | 2188 | '@img/sharp-libvips-darwin-arm64@1.0.4': 2189 | optional: true 2190 | 2191 | '@img/sharp-libvips-darwin-x64@1.0.4': 2192 | optional: true 2193 | 2194 | '@img/sharp-libvips-linux-arm64@1.0.4': 2195 | optional: true 2196 | 2197 | '@img/sharp-libvips-linux-arm@1.0.5': 2198 | optional: true 2199 | 2200 | '@img/sharp-libvips-linux-s390x@1.0.4': 2201 | optional: true 2202 | 2203 | '@img/sharp-libvips-linux-x64@1.0.4': 2204 | optional: true 2205 | 2206 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 2207 | optional: true 2208 | 2209 | '@img/sharp-libvips-linuxmusl-x64@1.0.4': 2210 | optional: true 2211 | 2212 | '@img/sharp-linux-arm64@0.33.5': 2213 | optionalDependencies: 2214 | '@img/sharp-libvips-linux-arm64': 1.0.4 2215 | optional: true 2216 | 2217 | '@img/sharp-linux-arm@0.33.5': 2218 | optionalDependencies: 2219 | '@img/sharp-libvips-linux-arm': 1.0.5 2220 | optional: true 2221 | 2222 | '@img/sharp-linux-s390x@0.33.5': 2223 | optionalDependencies: 2224 | '@img/sharp-libvips-linux-s390x': 1.0.4 2225 | optional: true 2226 | 2227 | '@img/sharp-linux-x64@0.33.5': 2228 | optionalDependencies: 2229 | '@img/sharp-libvips-linux-x64': 1.0.4 2230 | optional: true 2231 | 2232 | '@img/sharp-linuxmusl-arm64@0.33.5': 2233 | optionalDependencies: 2234 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 2235 | optional: true 2236 | 2237 | '@img/sharp-linuxmusl-x64@0.33.5': 2238 | optionalDependencies: 2239 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4 2240 | optional: true 2241 | 2242 | '@img/sharp-wasm32@0.33.5': 2243 | dependencies: 2244 | '@emnapi/runtime': 1.6.0 2245 | optional: true 2246 | 2247 | '@img/sharp-win32-ia32@0.33.5': 2248 | optional: true 2249 | 2250 | '@img/sharp-win32-x64@0.33.5': 2251 | optional: true 2252 | 2253 | '@jridgewell/resolve-uri@3.1.2': {} 2254 | 2255 | '@jridgewell/sourcemap-codec@1.5.5': {} 2256 | 2257 | '@jridgewell/trace-mapping@0.3.9': 2258 | dependencies: 2259 | '@jridgewell/resolve-uri': 3.1.2 2260 | '@jridgewell/sourcemap-codec': 1.5.5 2261 | 2262 | '@nodelib/fs.scandir@2.1.5': 2263 | dependencies: 2264 | '@nodelib/fs.stat': 2.0.5 2265 | run-parallel: 1.2.0 2266 | 2267 | '@nodelib/fs.stat@2.0.5': {} 2268 | 2269 | '@nodelib/fs.walk@1.2.8': 2270 | dependencies: 2271 | '@nodelib/fs.scandir': 2.1.5 2272 | fastq: 1.19.1 2273 | 2274 | '@poppinss/colors@4.1.5': 2275 | dependencies: 2276 | kleur: 4.1.5 2277 | 2278 | '@poppinss/dumper@0.6.4': 2279 | dependencies: 2280 | '@poppinss/colors': 4.1.5 2281 | '@sindresorhus/is': 7.1.0 2282 | supports-color: 10.2.2 2283 | 2284 | '@poppinss/exception@1.2.2': {} 2285 | 2286 | '@sindresorhus/is@7.1.0': {} 2287 | 2288 | '@speed-highlight/core@1.2.8': {} 2289 | 2290 | '@types/estree@1.0.8': {} 2291 | 2292 | '@types/json5@0.0.29': {} 2293 | 2294 | '@types/node@24.9.1': 2295 | dependencies: 2296 | undici-types: 7.16.0 2297 | 2298 | '@typescript-eslint/types@8.46.2': {} 2299 | 2300 | '@ungap/structured-clone@1.3.0': {} 2301 | 2302 | acorn-jsx@5.3.2(acorn@8.15.0): 2303 | dependencies: 2304 | acorn: 8.15.0 2305 | 2306 | acorn-walk@8.3.2: {} 2307 | 2308 | acorn@8.14.0: {} 2309 | 2310 | acorn@8.15.0: {} 2311 | 2312 | ajv@6.12.6: 2313 | dependencies: 2314 | fast-deep-equal: 3.1.3 2315 | fast-json-stable-stringify: 2.1.0 2316 | json-schema-traverse: 0.4.1 2317 | uri-js: 4.4.1 2318 | 2319 | ansi-regex@5.0.1: {} 2320 | 2321 | ansi-styles@4.3.0: 2322 | dependencies: 2323 | color-convert: 2.0.1 2324 | 2325 | are-docs-informative@0.0.2: {} 2326 | 2327 | argparse@2.0.1: {} 2328 | 2329 | array-buffer-byte-length@1.0.2: 2330 | dependencies: 2331 | call-bound: 1.0.4 2332 | is-array-buffer: 3.0.5 2333 | 2334 | array-includes@3.1.9: 2335 | dependencies: 2336 | call-bind: 1.0.8 2337 | call-bound: 1.0.4 2338 | define-properties: 1.2.1 2339 | es-abstract: 1.24.0 2340 | es-object-atoms: 1.1.1 2341 | get-intrinsic: 1.3.0 2342 | is-string: 1.1.1 2343 | math-intrinsics: 1.1.0 2344 | 2345 | array-timsort@1.0.3: {} 2346 | 2347 | array.prototype.flat@1.3.3: 2348 | dependencies: 2349 | call-bind: 1.0.8 2350 | define-properties: 1.2.1 2351 | es-abstract: 1.24.0 2352 | es-shim-unscopables: 1.1.0 2353 | 2354 | array.prototype.flatmap@1.3.3: 2355 | dependencies: 2356 | call-bind: 1.0.8 2357 | define-properties: 1.2.1 2358 | es-abstract: 1.24.0 2359 | es-shim-unscopables: 1.1.0 2360 | 2361 | arraybuffer.prototype.slice@1.0.4: 2362 | dependencies: 2363 | array-buffer-byte-length: 1.0.2 2364 | call-bind: 1.0.8 2365 | define-properties: 1.2.1 2366 | es-abstract: 1.24.0 2367 | es-errors: 1.3.0 2368 | get-intrinsic: 1.3.0 2369 | is-array-buffer: 3.0.5 2370 | 2371 | async-function@1.0.0: {} 2372 | 2373 | available-typed-arrays@1.0.7: 2374 | dependencies: 2375 | possible-typed-array-names: 1.1.0 2376 | 2377 | balanced-match@1.0.2: {} 2378 | 2379 | blake3-wasm@2.1.5: {} 2380 | 2381 | brace-expansion@1.1.12: 2382 | dependencies: 2383 | balanced-match: 1.0.2 2384 | concat-map: 0.0.1 2385 | 2386 | call-bind-apply-helpers@1.0.2: 2387 | dependencies: 2388 | es-errors: 1.3.0 2389 | function-bind: 1.1.2 2390 | 2391 | call-bind@1.0.8: 2392 | dependencies: 2393 | call-bind-apply-helpers: 1.0.2 2394 | es-define-property: 1.0.1 2395 | get-intrinsic: 1.3.0 2396 | set-function-length: 1.2.2 2397 | 2398 | call-bound@1.0.4: 2399 | dependencies: 2400 | call-bind-apply-helpers: 1.0.2 2401 | get-intrinsic: 1.3.0 2402 | 2403 | callsites@3.1.0: {} 2404 | 2405 | chalk-template@1.1.2: 2406 | dependencies: 2407 | chalk: 5.6.2 2408 | 2409 | chalk@4.1.2: 2410 | dependencies: 2411 | ansi-styles: 4.3.0 2412 | supports-color: 7.2.0 2413 | 2414 | chalk@5.6.2: {} 2415 | 2416 | clear-module@4.1.2: 2417 | dependencies: 2418 | parent-module: 2.0.0 2419 | resolve-from: 5.0.0 2420 | 2421 | color-convert@2.0.1: 2422 | dependencies: 2423 | color-name: 1.1.4 2424 | 2425 | color-name@1.1.4: {} 2426 | 2427 | color-string@1.9.1: 2428 | dependencies: 2429 | color-name: 1.1.4 2430 | simple-swizzle: 0.2.4 2431 | 2432 | color@4.2.3: 2433 | dependencies: 2434 | color-convert: 2.0.1 2435 | color-string: 1.9.1 2436 | 2437 | commander@14.0.2: {} 2438 | 2439 | comment-json@4.4.1: 2440 | dependencies: 2441 | array-timsort: 1.0.3 2442 | core-util-is: 1.0.3 2443 | esprima: 4.0.1 2444 | 2445 | comment-parser@1.4.1: {} 2446 | 2447 | concat-map@0.0.1: {} 2448 | 2449 | confusing-browser-globals@1.0.11: {} 2450 | 2451 | cookie@1.0.2: {} 2452 | 2453 | core-util-is@1.0.3: {} 2454 | 2455 | cross-spawn@7.0.6: 2456 | dependencies: 2457 | path-key: 3.1.1 2458 | shebang-command: 2.0.0 2459 | which: 2.0.2 2460 | 2461 | cspell-config-lib@9.2.2: 2462 | dependencies: 2463 | '@cspell/cspell-types': 9.2.2 2464 | comment-json: 4.4.1 2465 | smol-toml: 1.4.2 2466 | yaml: 2.8.1 2467 | 2468 | cspell-dictionary@9.2.2: 2469 | dependencies: 2470 | '@cspell/cspell-pipe': 9.2.2 2471 | '@cspell/cspell-types': 9.2.2 2472 | cspell-trie-lib: 9.2.2 2473 | fast-equals: 5.3.2 2474 | 2475 | cspell-gitignore@9.2.2: 2476 | dependencies: 2477 | '@cspell/url': 9.2.2 2478 | cspell-glob: 9.2.2 2479 | cspell-io: 9.2.2 2480 | 2481 | cspell-glob@9.2.2: 2482 | dependencies: 2483 | '@cspell/url': 9.2.2 2484 | picomatch: 4.0.3 2485 | 2486 | cspell-grammar@9.2.2: 2487 | dependencies: 2488 | '@cspell/cspell-pipe': 9.2.2 2489 | '@cspell/cspell-types': 9.2.2 2490 | 2491 | cspell-io@9.2.2: 2492 | dependencies: 2493 | '@cspell/cspell-service-bus': 9.2.2 2494 | '@cspell/url': 9.2.2 2495 | 2496 | cspell-lib@9.2.2: 2497 | dependencies: 2498 | '@cspell/cspell-bundled-dicts': 9.2.2 2499 | '@cspell/cspell-pipe': 9.2.2 2500 | '@cspell/cspell-resolver': 9.2.2 2501 | '@cspell/cspell-types': 9.2.2 2502 | '@cspell/dynamic-import': 9.2.2 2503 | '@cspell/filetypes': 9.2.2 2504 | '@cspell/strong-weak-map': 9.2.2 2505 | '@cspell/url': 9.2.2 2506 | clear-module: 4.1.2 2507 | cspell-config-lib: 9.2.2 2508 | cspell-dictionary: 9.2.2 2509 | cspell-glob: 9.2.2 2510 | cspell-grammar: 9.2.2 2511 | cspell-io: 9.2.2 2512 | cspell-trie-lib: 9.2.2 2513 | env-paths: 3.0.0 2514 | gensequence: 7.0.0 2515 | import-fresh: 3.3.1 2516 | resolve-from: 5.0.0 2517 | vscode-languageserver-textdocument: 1.0.12 2518 | vscode-uri: 3.1.0 2519 | xdg-basedir: 5.1.0 2520 | 2521 | cspell-trie-lib@9.2.2: 2522 | dependencies: 2523 | '@cspell/cspell-pipe': 9.2.2 2524 | '@cspell/cspell-types': 9.2.2 2525 | gensequence: 7.0.0 2526 | 2527 | cspell@9.2.2: 2528 | dependencies: 2529 | '@cspell/cspell-json-reporter': 9.2.2 2530 | '@cspell/cspell-pipe': 9.2.2 2531 | '@cspell/cspell-types': 9.2.2 2532 | '@cspell/dynamic-import': 9.2.2 2533 | '@cspell/url': 9.2.2 2534 | chalk: 5.6.2 2535 | chalk-template: 1.1.2 2536 | commander: 14.0.2 2537 | cspell-config-lib: 9.2.2 2538 | cspell-dictionary: 9.2.2 2539 | cspell-gitignore: 9.2.2 2540 | cspell-glob: 9.2.2 2541 | cspell-io: 9.2.2 2542 | cspell-lib: 9.2.2 2543 | fast-json-stable-stringify: 2.1.0 2544 | flatted: 3.3.3 2545 | semver: 7.7.3 2546 | tinyglobby: 0.2.15 2547 | 2548 | data-view-buffer@1.0.2: 2549 | dependencies: 2550 | call-bound: 1.0.4 2551 | es-errors: 1.3.0 2552 | is-data-view: 1.0.2 2553 | 2554 | data-view-byte-length@1.0.2: 2555 | dependencies: 2556 | call-bound: 1.0.4 2557 | es-errors: 1.3.0 2558 | is-data-view: 1.0.2 2559 | 2560 | data-view-byte-offset@1.0.1: 2561 | dependencies: 2562 | call-bound: 1.0.4 2563 | es-errors: 1.3.0 2564 | is-data-view: 1.0.2 2565 | 2566 | debug@3.2.7: 2567 | dependencies: 2568 | ms: 2.1.3 2569 | 2570 | debug@4.4.3: 2571 | dependencies: 2572 | ms: 2.1.3 2573 | 2574 | deep-is@0.1.4: {} 2575 | 2576 | define-data-property@1.1.4: 2577 | dependencies: 2578 | es-define-property: 1.0.1 2579 | es-errors: 1.3.0 2580 | gopd: 1.2.0 2581 | 2582 | define-properties@1.2.1: 2583 | dependencies: 2584 | define-data-property: 1.1.4 2585 | has-property-descriptors: 1.0.2 2586 | object-keys: 1.1.1 2587 | 2588 | defu@6.1.4: {} 2589 | 2590 | detect-libc@2.1.2: {} 2591 | 2592 | doctrine@2.1.0: 2593 | dependencies: 2594 | esutils: 2.0.3 2595 | 2596 | doctrine@3.0.0: 2597 | dependencies: 2598 | esutils: 2.0.3 2599 | 2600 | dunder-proto@1.0.1: 2601 | dependencies: 2602 | call-bind-apply-helpers: 1.0.2 2603 | es-errors: 1.3.0 2604 | gopd: 1.2.0 2605 | 2606 | env-paths@3.0.0: {} 2607 | 2608 | error-stack-parser-es@1.0.5: {} 2609 | 2610 | es-abstract@1.24.0: 2611 | dependencies: 2612 | array-buffer-byte-length: 1.0.2 2613 | arraybuffer.prototype.slice: 1.0.4 2614 | available-typed-arrays: 1.0.7 2615 | call-bind: 1.0.8 2616 | call-bound: 1.0.4 2617 | data-view-buffer: 1.0.2 2618 | data-view-byte-length: 1.0.2 2619 | data-view-byte-offset: 1.0.1 2620 | es-define-property: 1.0.1 2621 | es-errors: 1.3.0 2622 | es-object-atoms: 1.1.1 2623 | es-set-tostringtag: 2.1.0 2624 | es-to-primitive: 1.3.0 2625 | function.prototype.name: 1.1.8 2626 | get-intrinsic: 1.3.0 2627 | get-proto: 1.0.1 2628 | get-symbol-description: 1.1.0 2629 | globalthis: 1.0.4 2630 | gopd: 1.2.0 2631 | has-property-descriptors: 1.0.2 2632 | has-proto: 1.2.0 2633 | has-symbols: 1.1.0 2634 | hasown: 2.0.2 2635 | internal-slot: 1.1.0 2636 | is-array-buffer: 3.0.5 2637 | is-callable: 1.2.7 2638 | is-data-view: 1.0.2 2639 | is-negative-zero: 2.0.3 2640 | is-regex: 1.2.1 2641 | is-set: 2.0.3 2642 | is-shared-array-buffer: 1.0.4 2643 | is-string: 1.1.1 2644 | is-typed-array: 1.1.15 2645 | is-weakref: 1.1.1 2646 | math-intrinsics: 1.1.0 2647 | object-inspect: 1.13.4 2648 | object-keys: 1.1.1 2649 | object.assign: 4.1.7 2650 | own-keys: 1.0.1 2651 | regexp.prototype.flags: 1.5.4 2652 | safe-array-concat: 1.1.3 2653 | safe-push-apply: 1.0.0 2654 | safe-regex-test: 1.1.0 2655 | set-proto: 1.0.0 2656 | stop-iteration-iterator: 1.1.0 2657 | string.prototype.trim: 1.2.10 2658 | string.prototype.trimend: 1.0.9 2659 | string.prototype.trimstart: 1.0.8 2660 | typed-array-buffer: 1.0.3 2661 | typed-array-byte-length: 1.0.3 2662 | typed-array-byte-offset: 1.0.4 2663 | typed-array-length: 1.0.7 2664 | unbox-primitive: 1.1.0 2665 | which-typed-array: 1.1.19 2666 | 2667 | es-define-property@1.0.1: {} 2668 | 2669 | es-errors@1.3.0: {} 2670 | 2671 | es-object-atoms@1.1.1: 2672 | dependencies: 2673 | es-errors: 1.3.0 2674 | 2675 | es-set-tostringtag@2.1.0: 2676 | dependencies: 2677 | es-errors: 1.3.0 2678 | get-intrinsic: 1.3.0 2679 | has-tostringtag: 1.0.2 2680 | hasown: 2.0.2 2681 | 2682 | es-shim-unscopables@1.1.0: 2683 | dependencies: 2684 | hasown: 2.0.2 2685 | 2686 | es-to-primitive@1.3.0: 2687 | dependencies: 2688 | is-callable: 1.2.7 2689 | is-date-object: 1.1.0 2690 | is-symbol: 1.1.1 2691 | 2692 | esbuild@0.25.4: 2693 | optionalDependencies: 2694 | '@esbuild/aix-ppc64': 0.25.4 2695 | '@esbuild/android-arm': 0.25.4 2696 | '@esbuild/android-arm64': 0.25.4 2697 | '@esbuild/android-x64': 0.25.4 2698 | '@esbuild/darwin-arm64': 0.25.4 2699 | '@esbuild/darwin-x64': 0.25.4 2700 | '@esbuild/freebsd-arm64': 0.25.4 2701 | '@esbuild/freebsd-x64': 0.25.4 2702 | '@esbuild/linux-arm': 0.25.4 2703 | '@esbuild/linux-arm64': 0.25.4 2704 | '@esbuild/linux-ia32': 0.25.4 2705 | '@esbuild/linux-loong64': 0.25.4 2706 | '@esbuild/linux-mips64el': 0.25.4 2707 | '@esbuild/linux-ppc64': 0.25.4 2708 | '@esbuild/linux-riscv64': 0.25.4 2709 | '@esbuild/linux-s390x': 0.25.4 2710 | '@esbuild/linux-x64': 0.25.4 2711 | '@esbuild/netbsd-arm64': 0.25.4 2712 | '@esbuild/netbsd-x64': 0.25.4 2713 | '@esbuild/openbsd-arm64': 0.25.4 2714 | '@esbuild/openbsd-x64': 0.25.4 2715 | '@esbuild/sunos-x64': 0.25.4 2716 | '@esbuild/win32-arm64': 0.25.4 2717 | '@esbuild/win32-ia32': 0.25.4 2718 | '@esbuild/win32-x64': 0.25.4 2719 | 2720 | escape-string-regexp@4.0.0: {} 2721 | 2722 | eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.27.5(eslint@8.57.1))(eslint@8.57.1): 2723 | dependencies: 2724 | confusing-browser-globals: 1.0.11 2725 | eslint: 8.57.1 2726 | eslint-plugin-import: 2.27.5(eslint@8.57.1) 2727 | object.assign: 4.1.7 2728 | object.entries: 1.1.9 2729 | semver: 6.3.1 2730 | 2731 | eslint-config-prettier@10.1.8(eslint@8.57.1): 2732 | dependencies: 2733 | eslint: 8.57.1 2734 | 2735 | eslint-import-resolver-node@0.3.9: 2736 | dependencies: 2737 | debug: 3.2.7 2738 | is-core-module: 2.16.1 2739 | resolve: 1.22.11 2740 | transitivePeerDependencies: 2741 | - supports-color 2742 | 2743 | eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): 2744 | dependencies: 2745 | debug: 3.2.7 2746 | optionalDependencies: 2747 | eslint: 8.57.1 2748 | eslint-import-resolver-node: 0.3.9 2749 | transitivePeerDependencies: 2750 | - supports-color 2751 | 2752 | eslint-plugin-import@2.27.5(eslint@8.57.1): 2753 | dependencies: 2754 | array-includes: 3.1.9 2755 | array.prototype.flat: 1.3.3 2756 | array.prototype.flatmap: 1.3.3 2757 | debug: 3.2.7 2758 | doctrine: 2.1.0 2759 | eslint: 8.57.1 2760 | eslint-import-resolver-node: 0.3.9 2761 | eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) 2762 | has: 1.0.4 2763 | is-core-module: 2.16.1 2764 | is-glob: 4.0.3 2765 | minimatch: 3.1.2 2766 | object.values: 1.2.1 2767 | resolve: 1.22.11 2768 | semver: 6.3.1 2769 | tsconfig-paths: 3.15.0 2770 | transitivePeerDependencies: 2771 | - eslint-import-resolver-typescript 2772 | - eslint-import-resolver-webpack 2773 | - supports-color 2774 | 2775 | eslint-plugin-jsdoc@56.1.2(eslint@8.57.1): 2776 | dependencies: 2777 | '@es-joy/jsdoccomment': 0.58.0 2778 | are-docs-informative: 0.0.2 2779 | comment-parser: 1.4.1 2780 | debug: 4.4.3 2781 | escape-string-regexp: 4.0.0 2782 | eslint: 8.57.1 2783 | espree: 10.4.0 2784 | esquery: 1.6.0 2785 | object-deep-merge: 1.0.5 2786 | parse-imports-exports: 0.2.4 2787 | semver: 7.7.3 2788 | spdx-expression-parse: 4.0.0 2789 | transitivePeerDependencies: 2790 | - supports-color 2791 | 2792 | eslint-scope@7.2.2: 2793 | dependencies: 2794 | esrecurse: 4.3.0 2795 | estraverse: 5.3.0 2796 | 2797 | eslint-visitor-keys@3.4.3: {} 2798 | 2799 | eslint-visitor-keys@4.2.1: {} 2800 | 2801 | eslint@8.57.1: 2802 | dependencies: 2803 | '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) 2804 | '@eslint-community/regexpp': 4.12.2 2805 | '@eslint/eslintrc': 2.1.4 2806 | '@eslint/js': 8.57.1 2807 | '@humanwhocodes/config-array': 0.13.0 2808 | '@humanwhocodes/module-importer': 1.0.1 2809 | '@nodelib/fs.walk': 1.2.8 2810 | '@ungap/structured-clone': 1.3.0 2811 | ajv: 6.12.6 2812 | chalk: 4.1.2 2813 | cross-spawn: 7.0.6 2814 | debug: 4.4.3 2815 | doctrine: 3.0.0 2816 | escape-string-regexp: 4.0.0 2817 | eslint-scope: 7.2.2 2818 | eslint-visitor-keys: 3.4.3 2819 | espree: 9.6.1 2820 | esquery: 1.6.0 2821 | esutils: 2.0.3 2822 | fast-deep-equal: 3.1.3 2823 | file-entry-cache: 6.0.1 2824 | find-up: 5.0.0 2825 | glob-parent: 6.0.2 2826 | globals: 13.24.0 2827 | graphemer: 1.4.0 2828 | ignore: 5.3.2 2829 | imurmurhash: 0.1.4 2830 | is-glob: 4.0.3 2831 | is-path-inside: 3.0.3 2832 | js-yaml: 4.1.0 2833 | json-stable-stringify-without-jsonify: 1.0.1 2834 | levn: 0.4.1 2835 | lodash.merge: 4.6.2 2836 | minimatch: 3.1.2 2837 | natural-compare: 1.4.0 2838 | optionator: 0.9.4 2839 | strip-ansi: 6.0.1 2840 | text-table: 0.2.0 2841 | transitivePeerDependencies: 2842 | - supports-color 2843 | 2844 | espree@10.4.0: 2845 | dependencies: 2846 | acorn: 8.15.0 2847 | acorn-jsx: 5.3.2(acorn@8.15.0) 2848 | eslint-visitor-keys: 4.2.1 2849 | 2850 | espree@9.6.1: 2851 | dependencies: 2852 | acorn: 8.15.0 2853 | acorn-jsx: 5.3.2(acorn@8.15.0) 2854 | eslint-visitor-keys: 3.4.3 2855 | 2856 | esprima@4.0.1: {} 2857 | 2858 | esquery@1.6.0: 2859 | dependencies: 2860 | estraverse: 5.3.0 2861 | 2862 | esrecurse@4.3.0: 2863 | dependencies: 2864 | estraverse: 5.3.0 2865 | 2866 | estraverse@5.3.0: {} 2867 | 2868 | esutils@2.0.3: {} 2869 | 2870 | exit-hook@2.2.1: {} 2871 | 2872 | exsolve@1.0.7: {} 2873 | 2874 | fast-deep-equal@3.1.3: {} 2875 | 2876 | fast-equals@5.3.2: {} 2877 | 2878 | fast-json-stable-stringify@2.1.0: {} 2879 | 2880 | fast-levenshtein@2.0.6: {} 2881 | 2882 | fastq@1.19.1: 2883 | dependencies: 2884 | reusify: 1.1.0 2885 | 2886 | fdir@6.5.0(picomatch@4.0.3): 2887 | optionalDependencies: 2888 | picomatch: 4.0.3 2889 | 2890 | file-entry-cache@6.0.1: 2891 | dependencies: 2892 | flat-cache: 3.2.0 2893 | 2894 | find-up@5.0.0: 2895 | dependencies: 2896 | locate-path: 6.0.0 2897 | path-exists: 4.0.0 2898 | 2899 | flat-cache@3.2.0: 2900 | dependencies: 2901 | flatted: 3.3.3 2902 | keyv: 4.5.4 2903 | rimraf: 3.0.2 2904 | 2905 | flatted@3.3.3: {} 2906 | 2907 | for-each@0.3.5: 2908 | dependencies: 2909 | is-callable: 1.2.7 2910 | 2911 | fs.realpath@1.0.0: {} 2912 | 2913 | fsevents@2.3.3: 2914 | optional: true 2915 | 2916 | function-bind@1.1.2: {} 2917 | 2918 | function.prototype.name@1.1.8: 2919 | dependencies: 2920 | call-bind: 1.0.8 2921 | call-bound: 1.0.4 2922 | define-properties: 1.2.1 2923 | functions-have-names: 1.2.3 2924 | hasown: 2.0.2 2925 | is-callable: 1.2.7 2926 | 2927 | functions-have-names@1.2.3: {} 2928 | 2929 | generator-function@2.0.1: {} 2930 | 2931 | gensequence@7.0.0: {} 2932 | 2933 | get-intrinsic@1.3.0: 2934 | dependencies: 2935 | call-bind-apply-helpers: 1.0.2 2936 | es-define-property: 1.0.1 2937 | es-errors: 1.3.0 2938 | es-object-atoms: 1.1.1 2939 | function-bind: 1.1.2 2940 | get-proto: 1.0.1 2941 | gopd: 1.2.0 2942 | has-symbols: 1.1.0 2943 | hasown: 2.0.2 2944 | math-intrinsics: 1.1.0 2945 | 2946 | get-proto@1.0.1: 2947 | dependencies: 2948 | dunder-proto: 1.0.1 2949 | es-object-atoms: 1.1.1 2950 | 2951 | get-symbol-description@1.1.0: 2952 | dependencies: 2953 | call-bound: 1.0.4 2954 | es-errors: 1.3.0 2955 | get-intrinsic: 1.3.0 2956 | 2957 | glob-parent@6.0.2: 2958 | dependencies: 2959 | is-glob: 4.0.3 2960 | 2961 | glob-to-regexp@0.4.1: {} 2962 | 2963 | glob@7.2.3: 2964 | dependencies: 2965 | fs.realpath: 1.0.0 2966 | inflight: 1.0.6 2967 | inherits: 2.0.4 2968 | minimatch: 3.1.2 2969 | once: 1.4.0 2970 | path-is-absolute: 1.0.1 2971 | 2972 | global-directory@4.0.1: 2973 | dependencies: 2974 | ini: 4.1.1 2975 | 2976 | globals@13.24.0: 2977 | dependencies: 2978 | type-fest: 0.20.2 2979 | 2980 | globalthis@1.0.4: 2981 | dependencies: 2982 | define-properties: 1.2.1 2983 | gopd: 1.2.0 2984 | 2985 | gopd@1.2.0: {} 2986 | 2987 | graphemer@1.4.0: {} 2988 | 2989 | has-bigints@1.1.0: {} 2990 | 2991 | has-flag@4.0.0: {} 2992 | 2993 | has-property-descriptors@1.0.2: 2994 | dependencies: 2995 | es-define-property: 1.0.1 2996 | 2997 | has-proto@1.2.0: 2998 | dependencies: 2999 | dunder-proto: 1.0.1 3000 | 3001 | has-symbols@1.1.0: {} 3002 | 3003 | has-tostringtag@1.0.2: 3004 | dependencies: 3005 | has-symbols: 1.1.0 3006 | 3007 | has@1.0.4: {} 3008 | 3009 | hasown@2.0.2: 3010 | dependencies: 3011 | function-bind: 1.1.2 3012 | 3013 | ignore@5.3.2: {} 3014 | 3015 | import-fresh@3.3.1: 3016 | dependencies: 3017 | parent-module: 1.0.1 3018 | resolve-from: 4.0.0 3019 | 3020 | import-meta-resolve@4.2.0: {} 3021 | 3022 | imurmurhash@0.1.4: {} 3023 | 3024 | inflight@1.0.6: 3025 | dependencies: 3026 | once: 1.4.0 3027 | wrappy: 1.0.2 3028 | 3029 | inherits@2.0.4: {} 3030 | 3031 | ini@4.1.1: {} 3032 | 3033 | internal-slot@1.1.0: 3034 | dependencies: 3035 | es-errors: 1.3.0 3036 | hasown: 2.0.2 3037 | side-channel: 1.1.0 3038 | 3039 | is-array-buffer@3.0.5: 3040 | dependencies: 3041 | call-bind: 1.0.8 3042 | call-bound: 1.0.4 3043 | get-intrinsic: 1.3.0 3044 | 3045 | is-arrayish@0.3.4: {} 3046 | 3047 | is-async-function@2.1.1: 3048 | dependencies: 3049 | async-function: 1.0.0 3050 | call-bound: 1.0.4 3051 | get-proto: 1.0.1 3052 | has-tostringtag: 1.0.2 3053 | safe-regex-test: 1.1.0 3054 | 3055 | is-bigint@1.1.0: 3056 | dependencies: 3057 | has-bigints: 1.1.0 3058 | 3059 | is-boolean-object@1.2.2: 3060 | dependencies: 3061 | call-bound: 1.0.4 3062 | has-tostringtag: 1.0.2 3063 | 3064 | is-callable@1.2.7: {} 3065 | 3066 | is-core-module@2.16.1: 3067 | dependencies: 3068 | hasown: 2.0.2 3069 | 3070 | is-data-view@1.0.2: 3071 | dependencies: 3072 | call-bound: 1.0.4 3073 | get-intrinsic: 1.3.0 3074 | is-typed-array: 1.1.15 3075 | 3076 | is-date-object@1.1.0: 3077 | dependencies: 3078 | call-bound: 1.0.4 3079 | has-tostringtag: 1.0.2 3080 | 3081 | is-extglob@2.1.1: {} 3082 | 3083 | is-finalizationregistry@1.1.1: 3084 | dependencies: 3085 | call-bound: 1.0.4 3086 | 3087 | is-generator-function@1.1.2: 3088 | dependencies: 3089 | call-bound: 1.0.4 3090 | generator-function: 2.0.1 3091 | get-proto: 1.0.1 3092 | has-tostringtag: 1.0.2 3093 | safe-regex-test: 1.1.0 3094 | 3095 | is-glob@4.0.3: 3096 | dependencies: 3097 | is-extglob: 2.1.1 3098 | 3099 | is-map@2.0.3: {} 3100 | 3101 | is-negative-zero@2.0.3: {} 3102 | 3103 | is-number-object@1.1.1: 3104 | dependencies: 3105 | call-bound: 1.0.4 3106 | has-tostringtag: 1.0.2 3107 | 3108 | is-path-inside@3.0.3: {} 3109 | 3110 | is-regex@1.2.1: 3111 | dependencies: 3112 | call-bound: 1.0.4 3113 | gopd: 1.2.0 3114 | has-tostringtag: 1.0.2 3115 | hasown: 2.0.2 3116 | 3117 | is-set@2.0.3: {} 3118 | 3119 | is-shared-array-buffer@1.0.4: 3120 | dependencies: 3121 | call-bound: 1.0.4 3122 | 3123 | is-string@1.1.1: 3124 | dependencies: 3125 | call-bound: 1.0.4 3126 | has-tostringtag: 1.0.2 3127 | 3128 | is-symbol@1.1.1: 3129 | dependencies: 3130 | call-bound: 1.0.4 3131 | has-symbols: 1.1.0 3132 | safe-regex-test: 1.1.0 3133 | 3134 | is-typed-array@1.1.15: 3135 | dependencies: 3136 | which-typed-array: 1.1.19 3137 | 3138 | is-weakmap@2.0.2: {} 3139 | 3140 | is-weakref@1.1.1: 3141 | dependencies: 3142 | call-bound: 1.0.4 3143 | 3144 | is-weakset@2.0.4: 3145 | dependencies: 3146 | call-bound: 1.0.4 3147 | get-intrinsic: 1.3.0 3148 | 3149 | isarray@2.0.5: {} 3150 | 3151 | isexe@2.0.0: {} 3152 | 3153 | js-yaml@4.1.0: 3154 | dependencies: 3155 | argparse: 2.0.1 3156 | 3157 | jsdoc-type-pratt-parser@5.4.0: {} 3158 | 3159 | json-buffer@3.0.1: {} 3160 | 3161 | json-schema-traverse@0.4.1: {} 3162 | 3163 | json-stable-stringify-without-jsonify@1.0.1: {} 3164 | 3165 | json5@1.0.2: 3166 | dependencies: 3167 | minimist: 1.2.8 3168 | 3169 | keyv@4.5.4: 3170 | dependencies: 3171 | json-buffer: 3.0.1 3172 | 3173 | kleur@4.1.5: {} 3174 | 3175 | levn@0.4.1: 3176 | dependencies: 3177 | prelude-ls: 1.2.1 3178 | type-check: 0.4.0 3179 | 3180 | locate-path@6.0.0: 3181 | dependencies: 3182 | p-locate: 5.0.0 3183 | 3184 | lodash.merge@4.6.2: {} 3185 | 3186 | math-intrinsics@1.1.0: {} 3187 | 3188 | mime@3.0.0: {} 3189 | 3190 | miniflare@4.20251011.1: 3191 | dependencies: 3192 | '@cspotcode/source-map-support': 0.8.1 3193 | acorn: 8.14.0 3194 | acorn-walk: 8.3.2 3195 | exit-hook: 2.2.1 3196 | glob-to-regexp: 0.4.1 3197 | sharp: 0.33.5 3198 | stoppable: 1.1.0 3199 | undici: 7.14.0 3200 | workerd: 1.20251011.0 3201 | ws: 8.18.0 3202 | youch: 4.1.0-beta.10 3203 | zod: 3.22.3 3204 | transitivePeerDependencies: 3205 | - bufferutil 3206 | - utf-8-validate 3207 | 3208 | minimatch@3.1.2: 3209 | dependencies: 3210 | brace-expansion: 1.1.12 3211 | 3212 | minimist@1.2.8: {} 3213 | 3214 | ms@2.1.3: {} 3215 | 3216 | natural-compare@1.4.0: {} 3217 | 3218 | object-deep-merge@1.0.5: 3219 | dependencies: 3220 | type-fest: 4.2.0 3221 | 3222 | object-inspect@1.13.4: {} 3223 | 3224 | object-keys@1.1.1: {} 3225 | 3226 | object.assign@4.1.7: 3227 | dependencies: 3228 | call-bind: 1.0.8 3229 | call-bound: 1.0.4 3230 | define-properties: 1.2.1 3231 | es-object-atoms: 1.1.1 3232 | has-symbols: 1.1.0 3233 | object-keys: 1.1.1 3234 | 3235 | object.entries@1.1.9: 3236 | dependencies: 3237 | call-bind: 1.0.8 3238 | call-bound: 1.0.4 3239 | define-properties: 1.2.1 3240 | es-object-atoms: 1.1.1 3241 | 3242 | object.values@1.2.1: 3243 | dependencies: 3244 | call-bind: 1.0.8 3245 | call-bound: 1.0.4 3246 | define-properties: 1.2.1 3247 | es-object-atoms: 1.1.1 3248 | 3249 | ohash@2.0.11: {} 3250 | 3251 | once@1.4.0: 3252 | dependencies: 3253 | wrappy: 1.0.2 3254 | 3255 | optionator@0.9.4: 3256 | dependencies: 3257 | deep-is: 0.1.4 3258 | fast-levenshtein: 2.0.6 3259 | levn: 0.4.1 3260 | prelude-ls: 1.2.1 3261 | type-check: 0.4.0 3262 | word-wrap: 1.2.5 3263 | 3264 | own-keys@1.0.1: 3265 | dependencies: 3266 | get-intrinsic: 1.3.0 3267 | object-keys: 1.1.1 3268 | safe-push-apply: 1.0.0 3269 | 3270 | p-limit@3.1.0: 3271 | dependencies: 3272 | yocto-queue: 0.1.0 3273 | 3274 | p-locate@5.0.0: 3275 | dependencies: 3276 | p-limit: 3.1.0 3277 | 3278 | parent-module@1.0.1: 3279 | dependencies: 3280 | callsites: 3.1.0 3281 | 3282 | parent-module@2.0.0: 3283 | dependencies: 3284 | callsites: 3.1.0 3285 | 3286 | parse-imports-exports@0.2.4: 3287 | dependencies: 3288 | parse-statements: 1.0.11 3289 | 3290 | parse-statements@1.0.11: {} 3291 | 3292 | path-exists@4.0.0: {} 3293 | 3294 | path-is-absolute@1.0.1: {} 3295 | 3296 | path-key@3.1.1: {} 3297 | 3298 | path-parse@1.0.7: {} 3299 | 3300 | path-to-regexp@6.3.0: {} 3301 | 3302 | pathe@2.0.3: {} 3303 | 3304 | picomatch@4.0.3: {} 3305 | 3306 | possible-typed-array-names@1.1.0: {} 3307 | 3308 | prelude-ls@1.2.1: {} 3309 | 3310 | prettier@3.6.2: {} 3311 | 3312 | punycode@2.3.1: {} 3313 | 3314 | queue-microtask@1.2.3: {} 3315 | 3316 | reflect.getprototypeof@1.0.10: 3317 | dependencies: 3318 | call-bind: 1.0.8 3319 | define-properties: 1.2.1 3320 | es-abstract: 1.24.0 3321 | es-errors: 1.3.0 3322 | es-object-atoms: 1.1.1 3323 | get-intrinsic: 1.3.0 3324 | get-proto: 1.0.1 3325 | which-builtin-type: 1.2.1 3326 | 3327 | regexp.prototype.flags@1.5.4: 3328 | dependencies: 3329 | call-bind: 1.0.8 3330 | define-properties: 1.2.1 3331 | es-errors: 1.3.0 3332 | get-proto: 1.0.1 3333 | gopd: 1.2.0 3334 | set-function-name: 2.0.2 3335 | 3336 | resolve-from@4.0.0: {} 3337 | 3338 | resolve-from@5.0.0: {} 3339 | 3340 | resolve@1.22.11: 3341 | dependencies: 3342 | is-core-module: 2.16.1 3343 | path-parse: 1.0.7 3344 | supports-preserve-symlinks-flag: 1.0.0 3345 | 3346 | reusify@1.1.0: {} 3347 | 3348 | rimraf@3.0.2: 3349 | dependencies: 3350 | glob: 7.2.3 3351 | 3352 | run-parallel@1.2.0: 3353 | dependencies: 3354 | queue-microtask: 1.2.3 3355 | 3356 | safe-array-concat@1.1.3: 3357 | dependencies: 3358 | call-bind: 1.0.8 3359 | call-bound: 1.0.4 3360 | get-intrinsic: 1.3.0 3361 | has-symbols: 1.1.0 3362 | isarray: 2.0.5 3363 | 3364 | safe-push-apply@1.0.0: 3365 | dependencies: 3366 | es-errors: 1.3.0 3367 | isarray: 2.0.5 3368 | 3369 | safe-regex-test@1.1.0: 3370 | dependencies: 3371 | call-bound: 1.0.4 3372 | es-errors: 1.3.0 3373 | is-regex: 1.2.1 3374 | 3375 | semver@6.3.1: {} 3376 | 3377 | semver@7.7.3: {} 3378 | 3379 | set-function-length@1.2.2: 3380 | dependencies: 3381 | define-data-property: 1.1.4 3382 | es-errors: 1.3.0 3383 | function-bind: 1.1.2 3384 | get-intrinsic: 1.3.0 3385 | gopd: 1.2.0 3386 | has-property-descriptors: 1.0.2 3387 | 3388 | set-function-name@2.0.2: 3389 | dependencies: 3390 | define-data-property: 1.1.4 3391 | es-errors: 1.3.0 3392 | functions-have-names: 1.2.3 3393 | has-property-descriptors: 1.0.2 3394 | 3395 | set-proto@1.0.0: 3396 | dependencies: 3397 | dunder-proto: 1.0.1 3398 | es-errors: 1.3.0 3399 | es-object-atoms: 1.1.1 3400 | 3401 | sharp@0.33.5: 3402 | dependencies: 3403 | color: 4.2.3 3404 | detect-libc: 2.1.2 3405 | semver: 7.7.3 3406 | optionalDependencies: 3407 | '@img/sharp-darwin-arm64': 0.33.5 3408 | '@img/sharp-darwin-x64': 0.33.5 3409 | '@img/sharp-libvips-darwin-arm64': 1.0.4 3410 | '@img/sharp-libvips-darwin-x64': 1.0.4 3411 | '@img/sharp-libvips-linux-arm': 1.0.5 3412 | '@img/sharp-libvips-linux-arm64': 1.0.4 3413 | '@img/sharp-libvips-linux-s390x': 1.0.4 3414 | '@img/sharp-libvips-linux-x64': 1.0.4 3415 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 3416 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4 3417 | '@img/sharp-linux-arm': 0.33.5 3418 | '@img/sharp-linux-arm64': 0.33.5 3419 | '@img/sharp-linux-s390x': 0.33.5 3420 | '@img/sharp-linux-x64': 0.33.5 3421 | '@img/sharp-linuxmusl-arm64': 0.33.5 3422 | '@img/sharp-linuxmusl-x64': 0.33.5 3423 | '@img/sharp-wasm32': 0.33.5 3424 | '@img/sharp-win32-ia32': 0.33.5 3425 | '@img/sharp-win32-x64': 0.33.5 3426 | 3427 | shebang-command@2.0.0: 3428 | dependencies: 3429 | shebang-regex: 3.0.0 3430 | 3431 | shebang-regex@3.0.0: {} 3432 | 3433 | side-channel-list@1.0.0: 3434 | dependencies: 3435 | es-errors: 1.3.0 3436 | object-inspect: 1.13.4 3437 | 3438 | side-channel-map@1.0.1: 3439 | dependencies: 3440 | call-bound: 1.0.4 3441 | es-errors: 1.3.0 3442 | get-intrinsic: 1.3.0 3443 | object-inspect: 1.13.4 3444 | 3445 | side-channel-weakmap@1.0.2: 3446 | dependencies: 3447 | call-bound: 1.0.4 3448 | es-errors: 1.3.0 3449 | get-intrinsic: 1.3.0 3450 | object-inspect: 1.13.4 3451 | side-channel-map: 1.0.1 3452 | 3453 | side-channel@1.1.0: 3454 | dependencies: 3455 | es-errors: 1.3.0 3456 | object-inspect: 1.13.4 3457 | side-channel-list: 1.0.0 3458 | side-channel-map: 1.0.1 3459 | side-channel-weakmap: 1.0.2 3460 | 3461 | simple-swizzle@0.2.4: 3462 | dependencies: 3463 | is-arrayish: 0.3.4 3464 | 3465 | smol-toml@1.4.2: {} 3466 | 3467 | spdx-exceptions@2.5.0: {} 3468 | 3469 | spdx-expression-parse@4.0.0: 3470 | dependencies: 3471 | spdx-exceptions: 2.5.0 3472 | spdx-license-ids: 3.0.22 3473 | 3474 | spdx-license-ids@3.0.22: {} 3475 | 3476 | stop-iteration-iterator@1.1.0: 3477 | dependencies: 3478 | es-errors: 1.3.0 3479 | internal-slot: 1.1.0 3480 | 3481 | stoppable@1.1.0: {} 3482 | 3483 | string.prototype.trim@1.2.10: 3484 | dependencies: 3485 | call-bind: 1.0.8 3486 | call-bound: 1.0.4 3487 | define-data-property: 1.1.4 3488 | define-properties: 1.2.1 3489 | es-abstract: 1.24.0 3490 | es-object-atoms: 1.1.1 3491 | has-property-descriptors: 1.0.2 3492 | 3493 | string.prototype.trimend@1.0.9: 3494 | dependencies: 3495 | call-bind: 1.0.8 3496 | call-bound: 1.0.4 3497 | define-properties: 1.2.1 3498 | es-object-atoms: 1.1.1 3499 | 3500 | string.prototype.trimstart@1.0.8: 3501 | dependencies: 3502 | call-bind: 1.0.8 3503 | define-properties: 1.2.1 3504 | es-object-atoms: 1.1.1 3505 | 3506 | strip-ansi@6.0.1: 3507 | dependencies: 3508 | ansi-regex: 5.0.1 3509 | 3510 | strip-bom@3.0.0: {} 3511 | 3512 | strip-json-comments@3.1.1: {} 3513 | 3514 | supports-color@10.2.2: {} 3515 | 3516 | supports-color@7.2.0: 3517 | dependencies: 3518 | has-flag: 4.0.0 3519 | 3520 | supports-preserve-symlinks-flag@1.0.0: {} 3521 | 3522 | text-table@0.2.0: {} 3523 | 3524 | tinyglobby@0.2.15: 3525 | dependencies: 3526 | fdir: 6.5.0(picomatch@4.0.3) 3527 | picomatch: 4.0.3 3528 | 3529 | tsconfig-paths@3.15.0: 3530 | dependencies: 3531 | '@types/json5': 0.0.29 3532 | json5: 1.0.2 3533 | minimist: 1.2.8 3534 | strip-bom: 3.0.0 3535 | 3536 | tslib@2.8.1: 3537 | optional: true 3538 | 3539 | type-check@0.4.0: 3540 | dependencies: 3541 | prelude-ls: 1.2.1 3542 | 3543 | type-fest@0.20.2: {} 3544 | 3545 | type-fest@4.2.0: {} 3546 | 3547 | typed-array-buffer@1.0.3: 3548 | dependencies: 3549 | call-bound: 1.0.4 3550 | es-errors: 1.3.0 3551 | is-typed-array: 1.1.15 3552 | 3553 | typed-array-byte-length@1.0.3: 3554 | dependencies: 3555 | call-bind: 1.0.8 3556 | for-each: 0.3.5 3557 | gopd: 1.2.0 3558 | has-proto: 1.2.0 3559 | is-typed-array: 1.1.15 3560 | 3561 | typed-array-byte-offset@1.0.4: 3562 | dependencies: 3563 | available-typed-arrays: 1.0.7 3564 | call-bind: 1.0.8 3565 | for-each: 0.3.5 3566 | gopd: 1.2.0 3567 | has-proto: 1.2.0 3568 | is-typed-array: 1.1.15 3569 | reflect.getprototypeof: 1.0.10 3570 | 3571 | typed-array-length@1.0.7: 3572 | dependencies: 3573 | call-bind: 1.0.8 3574 | for-each: 0.3.5 3575 | gopd: 1.2.0 3576 | is-typed-array: 1.1.15 3577 | possible-typed-array-names: 1.1.0 3578 | reflect.getprototypeof: 1.0.10 3579 | 3580 | ufo@1.6.1: {} 3581 | 3582 | unbox-primitive@1.1.0: 3583 | dependencies: 3584 | call-bound: 1.0.4 3585 | has-bigints: 1.1.0 3586 | has-symbols: 1.1.0 3587 | which-boxed-primitive: 1.1.1 3588 | 3589 | undici-types@7.16.0: {} 3590 | 3591 | undici@7.14.0: {} 3592 | 3593 | unenv@2.0.0-rc.21: 3594 | dependencies: 3595 | defu: 6.1.4 3596 | exsolve: 1.0.7 3597 | ohash: 2.0.11 3598 | pathe: 2.0.3 3599 | ufo: 1.6.1 3600 | 3601 | uri-js@4.4.1: 3602 | dependencies: 3603 | punycode: 2.3.1 3604 | 3605 | vscode-languageserver-textdocument@1.0.12: {} 3606 | 3607 | vscode-uri@3.1.0: {} 3608 | 3609 | which-boxed-primitive@1.1.1: 3610 | dependencies: 3611 | is-bigint: 1.1.0 3612 | is-boolean-object: 1.2.2 3613 | is-number-object: 1.1.1 3614 | is-string: 1.1.1 3615 | is-symbol: 1.1.1 3616 | 3617 | which-builtin-type@1.2.1: 3618 | dependencies: 3619 | call-bound: 1.0.4 3620 | function.prototype.name: 1.1.8 3621 | has-tostringtag: 1.0.2 3622 | is-async-function: 2.1.1 3623 | is-date-object: 1.1.0 3624 | is-finalizationregistry: 1.1.1 3625 | is-generator-function: 1.1.2 3626 | is-regex: 1.2.1 3627 | is-weakref: 1.1.1 3628 | isarray: 2.0.5 3629 | which-boxed-primitive: 1.1.1 3630 | which-collection: 1.0.2 3631 | which-typed-array: 1.1.19 3632 | 3633 | which-collection@1.0.2: 3634 | dependencies: 3635 | is-map: 2.0.3 3636 | is-set: 2.0.3 3637 | is-weakmap: 2.0.2 3638 | is-weakset: 2.0.4 3639 | 3640 | which-typed-array@1.1.19: 3641 | dependencies: 3642 | available-typed-arrays: 1.0.7 3643 | call-bind: 1.0.8 3644 | call-bound: 1.0.4 3645 | for-each: 0.3.5 3646 | get-proto: 1.0.1 3647 | gopd: 1.2.0 3648 | has-tostringtag: 1.0.2 3649 | 3650 | which@2.0.2: 3651 | dependencies: 3652 | isexe: 2.0.0 3653 | 3654 | word-wrap@1.2.5: {} 3655 | 3656 | workerd@1.20251011.0: 3657 | optionalDependencies: 3658 | '@cloudflare/workerd-darwin-64': 1.20251011.0 3659 | '@cloudflare/workerd-darwin-arm64': 1.20251011.0 3660 | '@cloudflare/workerd-linux-64': 1.20251011.0 3661 | '@cloudflare/workerd-linux-arm64': 1.20251011.0 3662 | '@cloudflare/workerd-windows-64': 1.20251011.0 3663 | 3664 | wrangler@4.45.0: 3665 | dependencies: 3666 | '@cloudflare/kv-asset-handler': 0.4.0 3667 | '@cloudflare/unenv-preset': 2.7.8(unenv@2.0.0-rc.21)(workerd@1.20251011.0) 3668 | blake3-wasm: 2.1.5 3669 | esbuild: 0.25.4 3670 | miniflare: 4.20251011.1 3671 | path-to-regexp: 6.3.0 3672 | unenv: 2.0.0-rc.21 3673 | workerd: 1.20251011.0 3674 | optionalDependencies: 3675 | fsevents: 2.3.3 3676 | transitivePeerDependencies: 3677 | - bufferutil 3678 | - utf-8-validate 3679 | 3680 | wrappy@1.0.2: {} 3681 | 3682 | ws@8.18.0: {} 3683 | 3684 | xdg-basedir@5.1.0: {} 3685 | 3686 | yaml@2.8.1: {} 3687 | 3688 | yocto-queue@0.1.0: {} 3689 | 3690 | youch-core@0.3.3: 3691 | dependencies: 3692 | '@poppinss/exception': 1.2.2 3693 | error-stack-parser-es: 1.0.5 3694 | 3695 | youch@4.1.0-beta.10: 3696 | dependencies: 3697 | '@poppinss/colors': 4.1.5 3698 | '@poppinss/dumper': 0.6.4 3699 | '@speed-highlight/core': 1.2.8 3700 | cookie: 1.0.2 3701 | youch-core: 0.3.3 3702 | 3703 | zod@3.22.3: {} 3704 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | minimumReleaseAge: 1440 2 | onlyBuiltDependencies: 3 | - esbuild 4 | - workerd 5 | # Work around https://github.com/sveltia/sveltia-cms-auth/issues/17 6 | packages: 7 | - . 8 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * List of supported OAuth providers. 3 | */ 4 | const supportedProviders = ['github', 'gitlab']; 5 | /** 6 | * Escape the given string for safe use in a regular expression. 7 | * @param {string} str - Original string. 8 | * @returns {string} Escaped string. 9 | * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions#escaping 10 | */ 11 | const escapeRegExp = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); 12 | 13 | /** 14 | * Output HTML response that communicates with the window opener. 15 | * @param {object} args - Options. 16 | * @param {string} [args.provider] - Backend name, e,g. `github`. 17 | * @param {string} [args.token] - OAuth token. 18 | * @param {string} [args.error] - Error message when an OAuth token is not available. 19 | * @param {string} [args.errorCode] - Error code to be used to localize the error message in 20 | * Sveltia CMS. 21 | * @returns {Response} Response with HTML. 22 | */ 23 | const outputHTML = ({ provider = 'unknown', token, error, errorCode }) => { 24 | const state = error ? 'error' : 'success'; 25 | const content = error ? { provider, error, errorCode } : { provider, token }; 26 | 27 | return new Response( 28 | ` 29 | 42 | `, 43 | { 44 | headers: { 45 | 'Content-Type': 'text/html;charset=UTF-8', 46 | // Delete CSRF token 47 | 'Set-Cookie': `csrf-token=deleted; HttpOnly; Max-Age=0; Path=/; SameSite=Lax; Secure`, 48 | }, 49 | }, 50 | ); 51 | }; 52 | 53 | /** 54 | * Handle the `auth` method, which is the first request in the authorization flow. 55 | * @param {Request} request - HTTP request. 56 | * @param {{ [key: string]: string }} env - Environment variables. 57 | * @returns {Promise} HTTP response. 58 | */ 59 | const handleAuth = async (request, env) => { 60 | const { url } = request; 61 | const { origin, searchParams } = new URL(url); 62 | const { provider, site_id: domain } = Object.fromEntries(searchParams); 63 | 64 | if (!provider || !supportedProviders.includes(provider)) { 65 | return outputHTML({ 66 | error: 'Your Git backend is not supported by the authenticator.', 67 | errorCode: 'UNSUPPORTED_BACKEND', 68 | }); 69 | } 70 | 71 | const { 72 | ALLOWED_DOMAINS, 73 | GITHUB_CLIENT_ID, 74 | GITHUB_CLIENT_SECRET, 75 | GITHUB_HOSTNAME = 'github.com', 76 | GITLAB_CLIENT_ID, 77 | GITLAB_CLIENT_SECRET, 78 | GITLAB_HOSTNAME = 'gitlab.com', 79 | } = env; 80 | 81 | // Check if the domain is whitelisted 82 | if ( 83 | ALLOWED_DOMAINS && 84 | !ALLOWED_DOMAINS.split(/,/).some((str) => 85 | // Escape the input, then replace a wildcard for regex 86 | (domain ?? '').match(new RegExp(`^${escapeRegExp(str.trim()).replace('\\*', '.+')}$`)), 87 | ) 88 | ) { 89 | return outputHTML({ 90 | provider, 91 | error: 'Your domain is not allowed to use the authenticator.', 92 | errorCode: 'UNSUPPORTED_DOMAIN', 93 | }); 94 | } 95 | 96 | // Generate a random string for CSRF protection 97 | const csrfToken = globalThis.crypto.randomUUID().replaceAll('-', ''); 98 | let authURL = ''; 99 | 100 | // GitHub 101 | if (provider === 'github') { 102 | if (!GITHUB_CLIENT_ID || !GITHUB_CLIENT_SECRET) { 103 | return outputHTML({ 104 | provider, 105 | error: 'OAuth app client ID or secret is not configured.', 106 | errorCode: 'MISCONFIGURED_CLIENT', 107 | }); 108 | } 109 | 110 | const params = new URLSearchParams({ 111 | client_id: GITHUB_CLIENT_ID, 112 | scope: 'repo,user', 113 | state: csrfToken, 114 | }); 115 | 116 | authURL = `https://${GITHUB_HOSTNAME}/login/oauth/authorize?${params.toString()}`; 117 | } 118 | 119 | // GitLab 120 | if (provider === 'gitlab') { 121 | if (!GITLAB_CLIENT_ID || !GITLAB_CLIENT_SECRET) { 122 | return outputHTML({ 123 | provider, 124 | error: 'OAuth app client ID or secret is not configured.', 125 | errorCode: 'MISCONFIGURED_CLIENT', 126 | }); 127 | } 128 | 129 | const params = new URLSearchParams({ 130 | client_id: GITLAB_CLIENT_ID, 131 | redirect_uri: `${origin}/callback`, 132 | response_type: 'code', 133 | scope: 'api', 134 | state: csrfToken, 135 | }); 136 | 137 | authURL = `https://${GITLAB_HOSTNAME}/oauth/authorize?${params.toString()}`; 138 | } 139 | 140 | // Redirect to the authorization server 141 | return new Response('', { 142 | status: 302, 143 | headers: { 144 | Location: authURL, 145 | // Cookie expires in 10 minutes; Use `SameSite=Lax` to make sure the cookie is sent by the 146 | // browser after redirect 147 | 'Set-Cookie': 148 | `csrf-token=${provider}_${csrfToken}; ` + 149 | `HttpOnly; Path=/; Max-Age=600; SameSite=Lax; Secure`, 150 | }, 151 | }); 152 | }; 153 | 154 | /** 155 | * Handle the `callback` method, which is the second request in the authorization flow. 156 | * @param {Request} request - HTTP request. 157 | * @param {{ [key: string]: string }} env - Environment variables. 158 | * @returns {Promise} HTTP response. 159 | */ 160 | const handleCallback = async (request, env) => { 161 | const { url, headers } = request; 162 | const { origin, searchParams } = new URL(url); 163 | const { code, state } = Object.fromEntries(searchParams); 164 | 165 | const [, provider, csrfToken] = 166 | headers.get('Cookie')?.match(/\bcsrf-token=([a-z-]+?)_([0-9a-f]{32})\b/) ?? []; 167 | 168 | if (!provider || !supportedProviders.includes(provider)) { 169 | return outputHTML({ 170 | error: 'Your Git backend is not supported by the authenticator.', 171 | errorCode: 'UNSUPPORTED_BACKEND', 172 | }); 173 | } 174 | 175 | if (!code || !state) { 176 | return outputHTML({ 177 | provider, 178 | error: 'Failed to receive an authorization code. Please try again later.', 179 | errorCode: 'AUTH_CODE_REQUEST_FAILED', 180 | }); 181 | } 182 | 183 | if (!csrfToken || state !== csrfToken) { 184 | return outputHTML({ 185 | provider, 186 | error: 'Potential CSRF attack detected. Authentication flow aborted.', 187 | errorCode: 'CSRF_DETECTED', 188 | }); 189 | } 190 | 191 | const { 192 | GITHUB_CLIENT_ID, 193 | GITHUB_CLIENT_SECRET, 194 | GITHUB_HOSTNAME = 'github.com', 195 | GITLAB_CLIENT_ID, 196 | GITLAB_CLIENT_SECRET, 197 | GITLAB_HOSTNAME = 'gitlab.com', 198 | } = env; 199 | 200 | let tokenURL = ''; 201 | let requestBody = {}; 202 | 203 | // GitHub 204 | if (provider === 'github') { 205 | if (!GITHUB_CLIENT_ID || !GITHUB_CLIENT_SECRET) { 206 | return outputHTML({ 207 | provider, 208 | error: 'OAuth app client ID or secret is not configured.', 209 | errorCode: 'MISCONFIGURED_CLIENT', 210 | }); 211 | } 212 | 213 | tokenURL = `https://${GITHUB_HOSTNAME}/login/oauth/access_token`; 214 | requestBody = { 215 | code, 216 | client_id: GITHUB_CLIENT_ID, 217 | client_secret: GITHUB_CLIENT_SECRET, 218 | }; 219 | } 220 | 221 | if (provider === 'gitlab') { 222 | if (!GITLAB_CLIENT_ID || !GITLAB_CLIENT_SECRET) { 223 | return outputHTML({ 224 | provider, 225 | error: 'OAuth app client ID or secret is not configured.', 226 | errorCode: 'MISCONFIGURED_CLIENT', 227 | }); 228 | } 229 | 230 | tokenURL = `https://${GITLAB_HOSTNAME}/oauth/token`; 231 | requestBody = { 232 | code, 233 | client_id: GITLAB_CLIENT_ID, 234 | client_secret: GITLAB_CLIENT_SECRET, 235 | grant_type: 'authorization_code', 236 | redirect_uri: `${origin}/callback`, 237 | }; 238 | } 239 | 240 | let response; 241 | let token = ''; 242 | let error = ''; 243 | 244 | try { 245 | response = await fetch(tokenURL, { 246 | method: 'POST', 247 | headers: { 248 | Accept: 'application/json', 249 | 'Content-Type': 'application/json', 250 | }, 251 | body: JSON.stringify(requestBody), 252 | }); 253 | } catch { 254 | // 255 | } 256 | 257 | if (!response) { 258 | return outputHTML({ 259 | provider, 260 | error: 'Failed to request an access token. Please try again later.', 261 | errorCode: 'TOKEN_REQUEST_FAILED', 262 | }); 263 | } 264 | 265 | try { 266 | ({ access_token: token, error } = await response.json()); 267 | } catch { 268 | return outputHTML({ 269 | provider, 270 | error: 'Server responded with malformed data. Please try again later.', 271 | errorCode: 'MALFORMED_RESPONSE', 272 | }); 273 | } 274 | 275 | return outputHTML({ provider, token, error }); 276 | }; 277 | 278 | export default { 279 | /** 280 | * The main request handler. 281 | * @param {Request} request - HTTP request. 282 | * @param {{ [key: string]: string }} env - Environment variables. 283 | * @returns {Promise} HTTP response. 284 | * @see https://developers.cloudflare.com/workers/runtime-apis/fetch/ 285 | * @see https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps 286 | * @see https://docs.gitlab.com/ee/api/oauth2.html#authorization-code-flow 287 | */ 288 | async fetch(request, env) { 289 | const { method, url } = request; 290 | const { pathname } = new URL(url); 291 | 292 | if (method === 'GET' && ['/auth', '/oauth/authorize'].includes(pathname)) { 293 | return handleAuth(request, env); 294 | } 295 | 296 | if (method === 'GET' && ['/callback', '/oauth/redirect'].includes(pathname)) { 297 | return handleCallback(request, env); 298 | } 299 | 300 | return new Response('', { status: 404 }); 301 | }, 302 | }; 303 | -------------------------------------------------------------------------------- /wrangler.toml: -------------------------------------------------------------------------------- 1 | name = "sveltia-cms-auth" 2 | main = "src/index.js" 3 | compatibility_date = "2023-03-24" 4 | --------------------------------------------------------------------------------