├── .github └── workflows │ └── npm-publish.yml ├── .gitignore ├── .husky └── pre-commit ├── LICENSE ├── README.md ├── deps.d.ts ├── eslint.config.mjs ├── examples └── app-router │ ├── .gitignore │ ├── README.md │ ├── next.config.ts │ ├── package.json │ ├── public │ ├── file.svg │ ├── globe.svg │ ├── next.svg │ ├── vercel.svg │ └── window.svg │ ├── src │ └── app │ │ ├── favicon.ico │ │ ├── fonts │ │ ├── GeistMonoVF.woff │ │ └── GeistVF.woff │ │ ├── globals.css │ │ ├── layout.tsx │ │ ├── page.module.css │ │ └── page.tsx │ └── tsconfig.json ├── package.json ├── package ├── package.json ├── src │ ├── lib │ │ └── injectConfig.ts │ └── withClassnamesMinifier.ts └── tsconfig.json ├── pnpm-lock.yaml └── pnpm-workspace.yaml /.github/workflows/npm-publish.yml: -------------------------------------------------------------------------------- 1 | name: Publish package 2 | 3 | on: 4 | release: 5 | types: [created] 6 | 7 | jobs: 8 | publish: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - name: Checkout code 13 | uses: actions/checkout@v4 14 | 15 | - name: Set up Node.js 16 | uses: actions/setup-node@v3 17 | with: 18 | node-version: "20" 19 | 20 | - name: Install pnpm 21 | uses: pnpm/action-setup@v3 22 | with: 23 | version: 8 24 | 25 | - name: Install dependencies and build 26 | run: | 27 | pnpm install 28 | pnpm run build 29 | cp ../README.md . 30 | cp ../LICENSE . 31 | working-directory: ./package 32 | 33 | - name: Publish on main 34 | if: "!contains(github.ref_name, 'canary')" 35 | run: | 36 | npm set //registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}} 37 | npm publish --access public 38 | working-directory: ./package 39 | 40 | - name: Publish on canary 41 | if: contains(github.ref_name, 'canary') 42 | run: | 43 | npm set //registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}} 44 | npm version --no-git-tag-version ${{github.ref_name}} 45 | npm publish --tag canary --access public 46 | working-directory: ./package 47 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # build 2 | dist 3 | *.tgz 4 | 5 | # dependencies 6 | node_modules 7 | yarn.lock 8 | yarn-error.log -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | pnpm run lint 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Alexander Savelyev 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 | # @nimpl/classnames-minifier 2 | 3 | Library for configuring style _(css/scss/sass)_ modules to generate compressed classes (`.header` -> `.a`, `.nav` -> `.b`, ..., `.footer` -> `.aad`, etc.) with support for changes and rebuilding without clearing the built application. The package itself synchronizes minified classnames with components of the application compiled earlier. 4 | 5 | Visit https://nimpl.dev/docs/classnames-minifier to view the full documentation. 6 | 7 | ## Installation 8 | 9 | **Using npm:** 10 | ```bash 11 | npm i @nimpl/classnames-minifier 12 | ``` 13 | 14 | **Using yarn:** 15 | ```bash 16 | yarn add @nimpl/classnames-minifier 17 | ``` 18 | 19 | ## License 20 | 21 | [MIT](https://github.com/vordgi/nimpl-classnames-minifier/blob/main/LICENSE) 22 | -------------------------------------------------------------------------------- /deps.d.ts: -------------------------------------------------------------------------------- 1 | declare module "css-loader/dist/utils"; 2 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; 2 | import tseslint from "typescript-eslint"; 3 | 4 | export default [ 5 | { 6 | rules: { 7 | "prettier/prettier": [ 8 | "error", 9 | { 10 | endOfLine: "auto", 11 | tabWidth: 4, 12 | printWidth: 120, 13 | arrowParens: "always", 14 | }, 15 | ], 16 | }, 17 | }, 18 | ...tseslint.configs.recommended, 19 | eslintPluginPrettierRecommended, 20 | { 21 | ignores: ["**/node_modules/**", "**/dist/**", "**/.next/**"], 22 | }, 23 | ]; 24 | -------------------------------------------------------------------------------- /examples/app-router/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | /pnpm-lock.yaml 7 | .pnp.* 8 | .yarn/* 9 | !.yarn/patches 10 | !.yarn/plugins 11 | !.yarn/releases 12 | !.yarn/versions 13 | 14 | # testing 15 | /coverage 16 | 17 | # next.js 18 | /.next/ 19 | /out/ 20 | 21 | # production 22 | /build 23 | 24 | # misc 25 | .DS_Store 26 | *.pem 27 | 28 | # debug 29 | npm-debug.log* 30 | yarn-debug.log* 31 | yarn-error.log* 32 | 33 | # env files (can opt-in for commiting if needed) 34 | .env* 35 | 36 | # vercel 37 | .vercel 38 | 39 | # typescript 40 | *.tsbuildinfo 41 | next-env.d.ts 42 | -------------------------------------------------------------------------------- /examples/app-router/README.md: -------------------------------------------------------------------------------- 1 | This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). 2 | 3 | ## Getting Started 4 | 5 | First, run the development server: 6 | 7 | ```bash 8 | npm run dev 9 | # or 10 | yarn dev 11 | # or 12 | pnpm dev 13 | # or 14 | bun dev 15 | ``` 16 | 17 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 18 | 19 | You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. 20 | 21 | This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. 22 | 23 | ## Learn More 24 | 25 | To learn more about Next.js, take a look at the following resources: 26 | 27 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 28 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. 29 | 30 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! 31 | 32 | ## Deploy on Vercel 33 | 34 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. 35 | 36 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. 37 | -------------------------------------------------------------------------------- /examples/app-router/next.config.ts: -------------------------------------------------------------------------------- 1 | import type { NextConfig } from "next"; 2 | import classNamesMinifier from "@nimpl/classnames-minifier"; 3 | 4 | const withClassNamesMinifier = classNamesMinifier({ 5 | prefix: "_", 6 | }); 7 | 8 | const nextConfig: NextConfig = withClassNamesMinifier({ 9 | /* config options here */ 10 | }); 11 | 12 | export default nextConfig; 13 | -------------------------------------------------------------------------------- /examples/app-router/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "base", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@nimpl/classnames-minifier": "link:..\\..\\package", 13 | "next": "15.0.1", 14 | "react": "19.0.0-rc-69d4b800-20241021", 15 | "react-dom": "19.0.0-rc-69d4b800-20241021" 16 | }, 17 | "devDependencies": { 18 | "@types/node": "^20", 19 | "@types/react": "^18", 20 | "@types/react-dom": "^18", 21 | "typescript": "^5" 22 | } 23 | } -------------------------------------------------------------------------------- /examples/app-router/public/file.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/app-router/public/globe.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/app-router/public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/app-router/public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/app-router/public/window.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/app-router/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vordgi/nimpl-classnames-minifier/3a7269dde35179b518d87aacad03b432de53bb6a/examples/app-router/src/app/favicon.ico -------------------------------------------------------------------------------- /examples/app-router/src/app/fonts/GeistMonoVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vordgi/nimpl-classnames-minifier/3a7269dde35179b518d87aacad03b432de53bb6a/examples/app-router/src/app/fonts/GeistMonoVF.woff -------------------------------------------------------------------------------- /examples/app-router/src/app/fonts/GeistVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vordgi/nimpl-classnames-minifier/3a7269dde35179b518d87aacad03b432de53bb6a/examples/app-router/src/app/fonts/GeistVF.woff -------------------------------------------------------------------------------- /examples/app-router/src/app/globals.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --background: #ffffff; 3 | --foreground: #171717; 4 | } 5 | 6 | @media (prefers-color-scheme: dark) { 7 | :root { 8 | --background: #0a0a0a; 9 | --foreground: #ededed; 10 | } 11 | } 12 | 13 | html, 14 | body { 15 | max-width: 100vw; 16 | overflow-x: hidden; 17 | } 18 | 19 | body { 20 | color: var(--foreground); 21 | background: var(--background); 22 | font-family: Arial, Helvetica, sans-serif; 23 | -webkit-font-smoothing: antialiased; 24 | -moz-osx-font-smoothing: grayscale; 25 | } 26 | 27 | * { 28 | box-sizing: border-box; 29 | padding: 0; 30 | margin: 0; 31 | } 32 | 33 | a { 34 | color: inherit; 35 | text-decoration: none; 36 | } 37 | 38 | @media (prefers-color-scheme: dark) { 39 | html { 40 | color-scheme: dark; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /examples/app-router/src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from "next"; 2 | import localFont from "next/font/local"; 3 | import "./globals.css"; 4 | 5 | const geistSans = localFont({ 6 | src: "./fonts/GeistVF.woff", 7 | variable: "--font-geist-sans", 8 | weight: "100 900", 9 | }); 10 | const geistMono = localFont({ 11 | src: "./fonts/GeistMonoVF.woff", 12 | variable: "--font-geist-mono", 13 | weight: "100 900", 14 | }); 15 | 16 | export const metadata: Metadata = { 17 | title: "Create Next App", 18 | description: "Generated by create next app", 19 | }; 20 | 21 | export default function RootLayout({ 22 | children, 23 | }: Readonly<{ 24 | children: React.ReactNode; 25 | }>) { 26 | return ( 27 | 28 | {children} 29 | 30 | ); 31 | } 32 | -------------------------------------------------------------------------------- /examples/app-router/src/app/page.module.css: -------------------------------------------------------------------------------- 1 | .page { 2 | --gray-rgb: 0, 0, 0; 3 | --gray-alpha-200: rgba(var(--gray-rgb), 0.08); 4 | --gray-alpha-100: rgba(var(--gray-rgb), 0.05); 5 | 6 | --button-primary-hover: #383838; 7 | --button-secondary-hover: #f2f2f2; 8 | 9 | display: grid; 10 | grid-template-rows: 20px 1fr 20px; 11 | align-items: center; 12 | justify-items: center; 13 | min-height: 100svh; 14 | padding: 80px; 15 | gap: 64px; 16 | font-family: var(--font-geist-sans); 17 | } 18 | 19 | @media (prefers-color-scheme: dark) { 20 | .page { 21 | --gray-rgb: 255, 255, 255; 22 | --gray-alpha-200: rgba(var(--gray-rgb), 0.145); 23 | --gray-alpha-100: rgba(var(--gray-rgb), 0.06); 24 | 25 | --button-primary-hover: #ccc; 26 | --button-secondary-hover: #1a1a1a; 27 | } 28 | } 29 | 30 | .main { 31 | display: flex; 32 | flex-direction: column; 33 | gap: 32px; 34 | grid-row-start: 2; 35 | } 36 | 37 | .main ol { 38 | font-family: var(--font-geist-mono); 39 | padding-left: 0; 40 | margin: 0; 41 | font-size: 14px; 42 | line-height: 24px; 43 | letter-spacing: -0.01em; 44 | list-style-position: inside; 45 | } 46 | 47 | .main li:not(:last-of-type) { 48 | margin-bottom: 8px; 49 | } 50 | 51 | .main code { 52 | font-family: inherit; 53 | background: var(--gray-alpha-100); 54 | padding: 2px 4px; 55 | border-radius: 4px; 56 | font-weight: 600; 57 | } 58 | 59 | .ctas { 60 | display: flex; 61 | gap: 16px; 62 | } 63 | 64 | .ctas a { 65 | appearance: none; 66 | border-radius: 128px; 67 | height: 48px; 68 | padding: 0 20px; 69 | border: none; 70 | border: 1px solid transparent; 71 | transition: 72 | background 0.2s, 73 | color 0.2s, 74 | border-color 0.2s; 75 | cursor: pointer; 76 | display: flex; 77 | align-items: center; 78 | justify-content: center; 79 | font-size: 16px; 80 | line-height: 20px; 81 | font-weight: 500; 82 | } 83 | 84 | a.primary { 85 | background: var(--foreground); 86 | color: var(--background); 87 | gap: 8px; 88 | } 89 | 90 | a.secondary { 91 | border-color: var(--gray-alpha-200); 92 | min-width: 180px; 93 | } 94 | 95 | .footer { 96 | grid-row-start: 3; 97 | display: flex; 98 | gap: 24px; 99 | } 100 | 101 | .footer a { 102 | display: flex; 103 | align-items: center; 104 | gap: 8px; 105 | } 106 | 107 | .footer img { 108 | flex-shrink: 0; 109 | } 110 | 111 | /* Enable hover only on non-touch devices */ 112 | @media (hover: hover) and (pointer: fine) { 113 | a.primary:hover { 114 | background: var(--button-primary-hover); 115 | border-color: transparent; 116 | } 117 | 118 | a.secondary:hover { 119 | background: var(--button-secondary-hover); 120 | border-color: transparent; 121 | } 122 | 123 | .footer a:hover { 124 | text-decoration: underline; 125 | text-underline-offset: 4px; 126 | } 127 | } 128 | 129 | @media (max-width: 600px) { 130 | .page { 131 | padding: 32px; 132 | padding-bottom: 80px; 133 | } 134 | 135 | .main { 136 | align-items: center; 137 | } 138 | 139 | .main ol { 140 | text-align: center; 141 | } 142 | 143 | .ctas { 144 | flex-direction: column; 145 | } 146 | 147 | .ctas a { 148 | font-size: 14px; 149 | height: 40px; 150 | padding: 0 16px; 151 | } 152 | 153 | a.secondary { 154 | min-width: auto; 155 | } 156 | 157 | .footer { 158 | flex-wrap: wrap; 159 | align-items: center; 160 | justify-content: center; 161 | } 162 | } 163 | 164 | @media (prefers-color-scheme: dark) { 165 | .logo { 166 | filter: invert(); 167 | } 168 | } 169 | -------------------------------------------------------------------------------- /examples/app-router/src/app/page.tsx: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | import styles from "./page.module.css"; 3 | 4 | export default function Home() { 5 | return ( 6 |
7 |
8 | Next.js logo 9 |
    10 |
  1. 11 | Get started by editing src/app/page.tsx. 12 |
  2. 13 |
  3. Save and see your changes instantly.
  4. 14 |
15 | 16 |
17 | 23 | Vercel logomark 24 | Deploy now 25 | 26 | 32 | Read our docs 33 | 34 |
35 |
36 | 62 |
63 | ); 64 | } 65 | -------------------------------------------------------------------------------- /examples/app-router/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2017", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "noEmit": true, 9 | "esModuleInterop": true, 10 | "module": "esnext", 11 | "moduleResolution": "bundler", 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "jsx": "preserve", 15 | "incremental": true, 16 | "plugins": [ 17 | { 18 | "name": "next" 19 | } 20 | ], 21 | "paths": { 22 | "@/*": ["./src/*"] 23 | } 24 | }, 25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 26 | "exclude": ["node_modules"] 27 | } 28 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nimpl-classnames-minifier", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "nimpl:classnames-minifier": "pnpm --filter @nimpl/classnames-minifier", 7 | "lint": "eslint \"package/\"", 8 | "eslint": "eslint", 9 | "prettier": "prettier", 10 | "prepare": "husky" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git://github.com/vordgi/nimpl-classnames-minifier.git" 15 | }, 16 | "author": { 17 | "name": "Savelyev Alexander", 18 | "email": "vordgi1@gmail.com", 19 | "url": "https://github.com/vordgi/" 20 | }, 21 | "devDependencies": { 22 | "eslint": "9.13.0", 23 | "eslint-config-prettier": "9.1.0", 24 | "eslint-plugin-prettier": "5.2.1", 25 | "husky": "9.1.6", 26 | "prettier": "3.3.3", 27 | "typescript-eslint": "8.11.0" 28 | }, 29 | "license": "MIT", 30 | "packageManager": "pnpm@10.8.0+sha512.0e82714d1b5b43c74610193cb20734897c1d00de89d0e18420aebc5977fa13d780a9cb05734624e81ebd81cc876cd464794850641c48b9544326b5622ca29971" 31 | } 32 | -------------------------------------------------------------------------------- /package/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@nimpl/classnames-minifier", 3 | "version": "4.0.1", 4 | "description": "Library for configuring style modules to generate compressed classes", 5 | "main": "dist/withClassnamesMinifier.js", 6 | "types": "dist/withClassnamesMinifier.d.ts", 7 | "files": [ 8 | "dist" 9 | ], 10 | "scripts": { 11 | "build": "tsc" 12 | }, 13 | "keywords": [ 14 | "next", 15 | "next.js", 16 | "classname", 17 | "class", 18 | "minify", 19 | "compress", 20 | "cut", 21 | "css", 22 | "sass", 23 | "scss", 24 | "modules" 25 | ], 26 | "repository": { 27 | "type": "git", 28 | "url": "git://github.com/vordgi/nimpl-classnames-minifier.git" 29 | }, 30 | "author": { 31 | "name": "Savelyev Alexander", 32 | "email": "vordgi1@gmail.com", 33 | "url": "https://github.com/vordgi/" 34 | }, 35 | "license": "MIT", 36 | "devDependencies": { 37 | "@types/node": "22.8.1", 38 | "@types/uuid": "10.0.0", 39 | "@types/webpack": "5.28.5", 40 | "css-loader": "7.1.2", 41 | "typescript": "5.6.3" 42 | }, 43 | "peerDependencies": { 44 | "css-loader": ">=4.0.0" 45 | }, 46 | "dependencies": { 47 | "classnames-minifier": "1.0.0", 48 | "uuid": "10.0.0" 49 | } 50 | } -------------------------------------------------------------------------------- /package/src/lib/injectConfig.ts: -------------------------------------------------------------------------------- 1 | import type { RuleSetUseItem, ModuleOptions } from "webpack"; 2 | import type ClassnamesMinifier from "classnames-minifier"; 3 | 4 | export type InjectConfig = { 5 | localIdentName?: string; 6 | classnamesMinifier: ClassnamesMinifier; 7 | }; 8 | 9 | const injectConfig = (config: InjectConfig, rules?: ModuleOptions["rules"]) => { 10 | if (!rules) return; 11 | 12 | const oneOfRule = rules?.find((rule) => typeof rule === "object" && typeof rule?.oneOf === "object"); 13 | 14 | if (oneOfRule && typeof oneOfRule === "object") { 15 | const testCssLoaderWithModules = (loaderObj: RuleSetUseItem) => 16 | typeof loaderObj === "object" && 17 | loaderObj?.loader?.match("css-loader") && 18 | typeof loaderObj.options === "object" && 19 | loaderObj.options.modules; 20 | const testFontLoader = (loaderObj: RuleSetUseItem) => 21 | typeof loaderObj === "object" && loaderObj?.loader?.match("next-font-loader"); 22 | oneOfRule.oneOf?.forEach((rule) => { 23 | if (rule && Array.isArray(rule.use)) { 24 | let cssLoaderIndex = null as null | number; 25 | for (let i = rule.use.length - 1; i >= 0; i--) { 26 | const loaderObj = rule.use[i]; 27 | 28 | if (!loaderObj) continue; 29 | 30 | /** 31 | * Next.js has special logic for generating font classes, 32 | * so we don't change the rules that work with fonts and, as a result, do not minify font classes 33 | */ 34 | if (testFontLoader(loaderObj)) break; 35 | 36 | if (testCssLoaderWithModules(loaderObj)) { 37 | if (typeof loaderObj !== "object" || typeof loaderObj.options !== "object") continue; 38 | cssLoaderIndex = i; 39 | loaderObj.options.modules.getLocalIdent = config.classnamesMinifier.getLocalIdent; 40 | } 41 | } 42 | 43 | if (cssLoaderIndex !== null) { 44 | rule.use.splice( 45 | cssLoaderIndex, 46 | 1, 47 | config.classnamesMinifier.postLoader, 48 | rule.use[cssLoaderIndex], 49 | config.classnamesMinifier.preLoader, 50 | ); 51 | } 52 | } 53 | }); 54 | } 55 | }; 56 | 57 | export default injectConfig; 58 | -------------------------------------------------------------------------------- /package/src/withClassnamesMinifier.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | import type { Configuration } from "webpack"; 3 | import type { Config } from "classnames-minifier/dist/lib/types/plugin"; 4 | import ClassnamesMinifier from "classnames-minifier"; 5 | import path from "path"; 6 | import fs from "fs"; 7 | 8 | import injectConfig from "./lib/injectConfig"; 9 | 10 | type PluginOptions = Omit & { disabled?: boolean }; 11 | 12 | let classnamesMinifier: ClassnamesMinifier; 13 | 14 | const withClassnameMinifier = (pluginOptions: PluginOptions = {}) => { 15 | return (nextConfig: any = {}) => { 16 | if (pluginOptions.disabled) return nextConfig; 17 | 18 | if (!classnamesMinifier) { 19 | const distDir = nextConfig?.distDir || ".next"; 20 | const distDirAbsolute = path.join(process.cwd(), distDir); 21 | const cacheDir = path.join(distDirAbsolute, "cache/ncm"); 22 | classnamesMinifier = new ClassnamesMinifier({ 23 | prefix: pluginOptions.prefix, 24 | reservedNames: pluginOptions.reservedNames, 25 | distDeletionPolicy: pluginOptions.distDeletionPolicy, 26 | experimental: pluginOptions.experimental, 27 | distDir: distDirAbsolute, 28 | checkDistFreshness: () => { 29 | return !fs.existsSync(".next/build-manifest.json"); 30 | }, 31 | cacheDir, 32 | }); 33 | } 34 | 35 | return { 36 | ...nextConfig, 37 | webpack: (config: Configuration, options: any) => { 38 | injectConfig({ classnamesMinifier }, config.module?.rules); 39 | 40 | if (typeof nextConfig.webpack === "function") { 41 | return nextConfig.webpack(config, options); 42 | } 43 | 44 | return config; 45 | }, 46 | }; 47 | }; 48 | }; 49 | 50 | export default withClassnameMinifier; 51 | -------------------------------------------------------------------------------- /package/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2016", 4 | "module": "commonjs", 5 | "esModuleInterop": true, 6 | "forceConsistentCasingInFileNames": true, 7 | "strict": true, 8 | "skipLibCheck": true, 9 | "outDir": "dist", 10 | "rootDir": "src", 11 | "declaration": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | eslint: 12 | specifier: 9.13.0 13 | version: 9.13.0 14 | eslint-config-prettier: 15 | specifier: 9.1.0 16 | version: 9.1.0(eslint@9.13.0) 17 | eslint-plugin-prettier: 18 | specifier: 5.2.1 19 | version: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.13.0))(eslint@9.13.0)(prettier@3.3.3) 20 | husky: 21 | specifier: 9.1.6 22 | version: 9.1.6 23 | prettier: 24 | specifier: 3.3.3 25 | version: 3.3.3 26 | typescript-eslint: 27 | specifier: 8.11.0 28 | version: 8.11.0(eslint@9.13.0)(typescript@5.6.3) 29 | 30 | package: 31 | dependencies: 32 | classnames-minifier: 33 | specifier: 1.0.0 34 | version: 1.0.0(css-loader@7.1.2(webpack@5.95.0)) 35 | uuid: 36 | specifier: 10.0.0 37 | version: 10.0.0 38 | devDependencies: 39 | '@types/node': 40 | specifier: 22.8.1 41 | version: 22.8.1 42 | '@types/uuid': 43 | specifier: 10.0.0 44 | version: 10.0.0 45 | '@types/webpack': 46 | specifier: 5.28.5 47 | version: 5.28.5 48 | css-loader: 49 | specifier: 7.1.2 50 | version: 7.1.2(webpack@5.95.0) 51 | typescript: 52 | specifier: 5.6.3 53 | version: 5.6.3 54 | 55 | packages: 56 | 57 | '@eslint-community/eslint-utils@4.4.1': 58 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} 59 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 60 | peerDependencies: 61 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 62 | 63 | '@eslint-community/regexpp@4.11.2': 64 | resolution: {integrity: sha512-2WwyTYNVaMNUWPZTOJdkax9iqTdirrApgTbk+Qoq5EPX6myqZvG8QGFRgdKmkjKVG6/G/a565vpPauHk0+hpBA==} 65 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 66 | 67 | '@eslint/config-array@0.18.0': 68 | resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} 69 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 70 | 71 | '@eslint/core@0.7.0': 72 | resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} 73 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 74 | 75 | '@eslint/eslintrc@3.1.0': 76 | resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 77 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 78 | 79 | '@eslint/js@9.13.0': 80 | resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} 81 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 82 | 83 | '@eslint/object-schema@2.1.4': 84 | resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 85 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 86 | 87 | '@eslint/plugin-kit@0.2.1': 88 | resolution: {integrity: sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==} 89 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 90 | 91 | '@humanfs/core@0.19.0': 92 | resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} 93 | engines: {node: '>=18.18.0'} 94 | 95 | '@humanfs/node@0.16.5': 96 | resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==} 97 | engines: {node: '>=18.18.0'} 98 | 99 | '@humanwhocodes/module-importer@1.0.1': 100 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 101 | engines: {node: '>=12.22'} 102 | 103 | '@humanwhocodes/retry@0.3.1': 104 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 105 | engines: {node: '>=18.18'} 106 | 107 | '@jridgewell/gen-mapping@0.3.5': 108 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 109 | engines: {node: '>=6.0.0'} 110 | 111 | '@jridgewell/resolve-uri@3.1.2': 112 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 113 | engines: {node: '>=6.0.0'} 114 | 115 | '@jridgewell/set-array@1.2.1': 116 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 117 | engines: {node: '>=6.0.0'} 118 | 119 | '@jridgewell/source-map@0.3.6': 120 | resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} 121 | 122 | '@jridgewell/sourcemap-codec@1.5.0': 123 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 124 | 125 | '@jridgewell/trace-mapping@0.3.25': 126 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 127 | 128 | '@nodelib/fs.scandir@2.1.5': 129 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 130 | engines: {node: '>= 8'} 131 | 132 | '@nodelib/fs.stat@2.0.5': 133 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 134 | engines: {node: '>= 8'} 135 | 136 | '@nodelib/fs.walk@1.2.8': 137 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 138 | engines: {node: '>= 8'} 139 | 140 | '@pkgr/core@0.1.1': 141 | resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} 142 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 143 | 144 | '@types/estree@1.0.6': 145 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 146 | 147 | '@types/json-schema@7.0.15': 148 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 149 | 150 | '@types/node@22.8.1': 151 | resolution: {integrity: sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==} 152 | 153 | '@types/uuid@10.0.0': 154 | resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} 155 | 156 | '@types/webpack@5.28.5': 157 | resolution: {integrity: sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==} 158 | 159 | '@typescript-eslint/eslint-plugin@8.11.0': 160 | resolution: {integrity: sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==} 161 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 162 | peerDependencies: 163 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 164 | eslint: ^8.57.0 || ^9.0.0 165 | typescript: '*' 166 | peerDependenciesMeta: 167 | typescript: 168 | optional: true 169 | 170 | '@typescript-eslint/parser@8.11.0': 171 | resolution: {integrity: sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==} 172 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 173 | peerDependencies: 174 | eslint: ^8.57.0 || ^9.0.0 175 | typescript: '*' 176 | peerDependenciesMeta: 177 | typescript: 178 | optional: true 179 | 180 | '@typescript-eslint/scope-manager@8.11.0': 181 | resolution: {integrity: sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==} 182 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 183 | 184 | '@typescript-eslint/type-utils@8.11.0': 185 | resolution: {integrity: sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==} 186 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 187 | peerDependencies: 188 | typescript: '*' 189 | peerDependenciesMeta: 190 | typescript: 191 | optional: true 192 | 193 | '@typescript-eslint/types@8.11.0': 194 | resolution: {integrity: sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==} 195 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 196 | 197 | '@typescript-eslint/typescript-estree@8.11.0': 198 | resolution: {integrity: sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==} 199 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 200 | peerDependencies: 201 | typescript: '*' 202 | peerDependenciesMeta: 203 | typescript: 204 | optional: true 205 | 206 | '@typescript-eslint/utils@8.11.0': 207 | resolution: {integrity: sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==} 208 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 209 | peerDependencies: 210 | eslint: ^8.57.0 || ^9.0.0 211 | 212 | '@typescript-eslint/visitor-keys@8.11.0': 213 | resolution: {integrity: sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==} 214 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 215 | 216 | '@webassemblyjs/ast@1.12.1': 217 | resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} 218 | 219 | '@webassemblyjs/floating-point-hex-parser@1.11.6': 220 | resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} 221 | 222 | '@webassemblyjs/helper-api-error@1.11.6': 223 | resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} 224 | 225 | '@webassemblyjs/helper-buffer@1.12.1': 226 | resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} 227 | 228 | '@webassemblyjs/helper-numbers@1.11.6': 229 | resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} 230 | 231 | '@webassemblyjs/helper-wasm-bytecode@1.11.6': 232 | resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} 233 | 234 | '@webassemblyjs/helper-wasm-section@1.12.1': 235 | resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} 236 | 237 | '@webassemblyjs/ieee754@1.11.6': 238 | resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} 239 | 240 | '@webassemblyjs/leb128@1.11.6': 241 | resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} 242 | 243 | '@webassemblyjs/utf8@1.11.6': 244 | resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} 245 | 246 | '@webassemblyjs/wasm-edit@1.12.1': 247 | resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} 248 | 249 | '@webassemblyjs/wasm-gen@1.12.1': 250 | resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} 251 | 252 | '@webassemblyjs/wasm-opt@1.12.1': 253 | resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} 254 | 255 | '@webassemblyjs/wasm-parser@1.12.1': 256 | resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} 257 | 258 | '@webassemblyjs/wast-printer@1.12.1': 259 | resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} 260 | 261 | '@xtuc/ieee754@1.2.0': 262 | resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} 263 | 264 | '@xtuc/long@4.2.2': 265 | resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} 266 | 267 | acorn-import-attributes@1.9.5: 268 | resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} 269 | peerDependencies: 270 | acorn: ^8 271 | 272 | acorn-jsx@5.3.2: 273 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 274 | peerDependencies: 275 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 276 | 277 | acorn@8.13.0: 278 | resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} 279 | engines: {node: '>=0.4.0'} 280 | hasBin: true 281 | 282 | ajv-keywords@3.5.2: 283 | resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} 284 | peerDependencies: 285 | ajv: ^6.9.1 286 | 287 | ajv@6.12.6: 288 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 289 | 290 | ansi-styles@4.3.0: 291 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 292 | engines: {node: '>=8'} 293 | 294 | argparse@2.0.1: 295 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 296 | 297 | balanced-match@1.0.2: 298 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 299 | 300 | brace-expansion@1.1.11: 301 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 302 | 303 | brace-expansion@2.0.1: 304 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 305 | 306 | braces@3.0.3: 307 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 308 | engines: {node: '>=8'} 309 | 310 | browserslist@4.24.2: 311 | resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} 312 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 313 | hasBin: true 314 | 315 | buffer-from@1.1.2: 316 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 317 | 318 | callsites@3.1.0: 319 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 320 | engines: {node: '>=6'} 321 | 322 | caniuse-lite@1.0.30001671: 323 | resolution: {integrity: sha512-jocyVaSSfXg2faluE6hrWkMgDOiULBMca4QLtDT39hw1YxaIPHWc1CcTCKkPmHgGH6tKji6ZNbMSmUAvENf2/A==} 324 | 325 | chalk@4.1.2: 326 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 327 | engines: {node: '>=10'} 328 | 329 | chrome-trace-event@1.0.4: 330 | resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} 331 | engines: {node: '>=6.0'} 332 | 333 | classnames-minifier@1.0.0: 334 | resolution: {integrity: sha512-f+oH54ka5SGsY2PB30/ztd74xhPC395anKTszSrKouZx3YQd+EEtfmFIOtOsdhmKkN9vCiuAvTEV78kdUUkVww==} 335 | peerDependencies: 336 | css-loader: '>=4.0.0' 337 | 338 | color-convert@2.0.1: 339 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 340 | engines: {node: '>=7.0.0'} 341 | 342 | color-name@1.1.4: 343 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 344 | 345 | commander@2.20.3: 346 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 347 | 348 | concat-map@0.0.1: 349 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 350 | 351 | cross-spawn@7.0.3: 352 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 353 | engines: {node: '>= 8'} 354 | 355 | css-loader@7.1.2: 356 | resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} 357 | engines: {node: '>= 18.12.0'} 358 | peerDependencies: 359 | '@rspack/core': 0.x || 1.x 360 | webpack: ^5.27.0 361 | peerDependenciesMeta: 362 | '@rspack/core': 363 | optional: true 364 | webpack: 365 | optional: true 366 | 367 | cssesc@3.0.0: 368 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 369 | engines: {node: '>=4'} 370 | hasBin: true 371 | 372 | debug@4.3.7: 373 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} 374 | engines: {node: '>=6.0'} 375 | peerDependencies: 376 | supports-color: '*' 377 | peerDependenciesMeta: 378 | supports-color: 379 | optional: true 380 | 381 | deep-is@0.1.4: 382 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 383 | 384 | electron-to-chromium@1.5.47: 385 | resolution: {integrity: sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==} 386 | 387 | enhanced-resolve@5.17.1: 388 | resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} 389 | engines: {node: '>=10.13.0'} 390 | 391 | es-module-lexer@1.5.4: 392 | resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} 393 | 394 | escalade@3.2.0: 395 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 396 | engines: {node: '>=6'} 397 | 398 | escape-string-regexp@4.0.0: 399 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 400 | engines: {node: '>=10'} 401 | 402 | eslint-config-prettier@9.1.0: 403 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} 404 | hasBin: true 405 | peerDependencies: 406 | eslint: '>=7.0.0' 407 | 408 | eslint-plugin-prettier@5.2.1: 409 | resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} 410 | engines: {node: ^14.18.0 || >=16.0.0} 411 | peerDependencies: 412 | '@types/eslint': '>=8.0.0' 413 | eslint: '>=8.0.0' 414 | eslint-config-prettier: '*' 415 | prettier: '>=3.0.0' 416 | peerDependenciesMeta: 417 | '@types/eslint': 418 | optional: true 419 | eslint-config-prettier: 420 | optional: true 421 | 422 | eslint-scope@5.1.1: 423 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 424 | engines: {node: '>=8.0.0'} 425 | 426 | eslint-scope@8.1.0: 427 | resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} 428 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 429 | 430 | eslint-visitor-keys@3.4.3: 431 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 432 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 433 | 434 | eslint-visitor-keys@4.1.0: 435 | resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} 436 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 437 | 438 | eslint@9.13.0: 439 | resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==} 440 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 441 | hasBin: true 442 | peerDependencies: 443 | jiti: '*' 444 | peerDependenciesMeta: 445 | jiti: 446 | optional: true 447 | 448 | espree@10.2.0: 449 | resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} 450 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 451 | 452 | esquery@1.6.0: 453 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 454 | engines: {node: '>=0.10'} 455 | 456 | esrecurse@4.3.0: 457 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 458 | engines: {node: '>=4.0'} 459 | 460 | estraverse@4.3.0: 461 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 462 | engines: {node: '>=4.0'} 463 | 464 | estraverse@5.3.0: 465 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 466 | engines: {node: '>=4.0'} 467 | 468 | esutils@2.0.3: 469 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 470 | engines: {node: '>=0.10.0'} 471 | 472 | events@3.3.0: 473 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 474 | engines: {node: '>=0.8.x'} 475 | 476 | fast-deep-equal@3.1.3: 477 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 478 | 479 | fast-diff@1.3.0: 480 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} 481 | 482 | fast-glob@3.3.2: 483 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 484 | engines: {node: '>=8.6.0'} 485 | 486 | fast-json-stable-stringify@2.1.0: 487 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 488 | 489 | fast-levenshtein@2.0.6: 490 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 491 | 492 | fastq@1.17.1: 493 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 494 | 495 | file-entry-cache@8.0.0: 496 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 497 | engines: {node: '>=16.0.0'} 498 | 499 | fill-range@7.1.1: 500 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 501 | engines: {node: '>=8'} 502 | 503 | find-up@5.0.0: 504 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 505 | engines: {node: '>=10'} 506 | 507 | flat-cache@4.0.1: 508 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 509 | engines: {node: '>=16'} 510 | 511 | flatted@3.3.1: 512 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 513 | 514 | glob-parent@5.1.2: 515 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 516 | engines: {node: '>= 6'} 517 | 518 | glob-parent@6.0.2: 519 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 520 | engines: {node: '>=10.13.0'} 521 | 522 | glob-to-regexp@0.4.1: 523 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 524 | 525 | globals@14.0.0: 526 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 527 | engines: {node: '>=18'} 528 | 529 | graceful-fs@4.2.11: 530 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 531 | 532 | graphemer@1.4.0: 533 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 534 | 535 | has-flag@4.0.0: 536 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 537 | engines: {node: '>=8'} 538 | 539 | husky@9.1.6: 540 | resolution: {integrity: sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==} 541 | engines: {node: '>=18'} 542 | hasBin: true 543 | 544 | icss-utils@5.1.0: 545 | resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} 546 | engines: {node: ^10 || ^12 || >= 14} 547 | peerDependencies: 548 | postcss: ^8.1.0 549 | 550 | ignore@5.3.2: 551 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 552 | engines: {node: '>= 4'} 553 | 554 | import-fresh@3.3.0: 555 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 556 | engines: {node: '>=6'} 557 | 558 | imurmurhash@0.1.4: 559 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 560 | engines: {node: '>=0.8.19'} 561 | 562 | is-extglob@2.1.1: 563 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 564 | engines: {node: '>=0.10.0'} 565 | 566 | is-glob@4.0.3: 567 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 568 | engines: {node: '>=0.10.0'} 569 | 570 | is-number@7.0.0: 571 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 572 | engines: {node: '>=0.12.0'} 573 | 574 | isexe@2.0.0: 575 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 576 | 577 | jest-worker@27.5.1: 578 | resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} 579 | engines: {node: '>= 10.13.0'} 580 | 581 | js-yaml@4.1.0: 582 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 583 | hasBin: true 584 | 585 | json-buffer@3.0.1: 586 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 587 | 588 | json-parse-even-better-errors@2.3.1: 589 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 590 | 591 | json-schema-traverse@0.4.1: 592 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 593 | 594 | json-stable-stringify-without-jsonify@1.0.1: 595 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 596 | 597 | keyv@4.5.4: 598 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 599 | 600 | levn@0.4.1: 601 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 602 | engines: {node: '>= 0.8.0'} 603 | 604 | loader-runner@4.3.0: 605 | resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} 606 | engines: {node: '>=6.11.5'} 607 | 608 | locate-path@6.0.0: 609 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 610 | engines: {node: '>=10'} 611 | 612 | lodash.merge@4.6.2: 613 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 614 | 615 | merge-stream@2.0.0: 616 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 617 | 618 | merge2@1.4.1: 619 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 620 | engines: {node: '>= 8'} 621 | 622 | micromatch@4.0.8: 623 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 624 | engines: {node: '>=8.6'} 625 | 626 | mime-db@1.52.0: 627 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 628 | engines: {node: '>= 0.6'} 629 | 630 | mime-types@2.1.35: 631 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 632 | engines: {node: '>= 0.6'} 633 | 634 | minimatch@3.1.2: 635 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 636 | 637 | minimatch@9.0.5: 638 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 639 | engines: {node: '>=16 || 14 >=14.17'} 640 | 641 | ms@2.1.3: 642 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 643 | 644 | nanoid@3.3.7: 645 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 646 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 647 | hasBin: true 648 | 649 | natural-compare@1.4.0: 650 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 651 | 652 | neo-async@2.6.2: 653 | resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} 654 | 655 | node-releases@2.0.18: 656 | resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} 657 | 658 | optionator@0.9.4: 659 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 660 | engines: {node: '>= 0.8.0'} 661 | 662 | p-limit@3.1.0: 663 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 664 | engines: {node: '>=10'} 665 | 666 | p-locate@5.0.0: 667 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 668 | engines: {node: '>=10'} 669 | 670 | parent-module@1.0.1: 671 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 672 | engines: {node: '>=6'} 673 | 674 | path-exists@4.0.0: 675 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 676 | engines: {node: '>=8'} 677 | 678 | path-key@3.1.1: 679 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 680 | engines: {node: '>=8'} 681 | 682 | picocolors@1.1.1: 683 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 684 | 685 | picomatch@2.3.1: 686 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 687 | engines: {node: '>=8.6'} 688 | 689 | postcss-modules-extract-imports@3.1.0: 690 | resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} 691 | engines: {node: ^10 || ^12 || >= 14} 692 | peerDependencies: 693 | postcss: ^8.1.0 694 | 695 | postcss-modules-local-by-default@4.0.5: 696 | resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} 697 | engines: {node: ^10 || ^12 || >= 14} 698 | peerDependencies: 699 | postcss: ^8.1.0 700 | 701 | postcss-modules-scope@3.2.0: 702 | resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} 703 | engines: {node: ^10 || ^12 || >= 14} 704 | peerDependencies: 705 | postcss: ^8.1.0 706 | 707 | postcss-modules-values@4.0.0: 708 | resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} 709 | engines: {node: ^10 || ^12 || >= 14} 710 | peerDependencies: 711 | postcss: ^8.1.0 712 | 713 | postcss-selector-parser@6.1.2: 714 | resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} 715 | engines: {node: '>=4'} 716 | 717 | postcss-value-parser@4.2.0: 718 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 719 | 720 | postcss@8.4.47: 721 | resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} 722 | engines: {node: ^10 || ^12 || >=14} 723 | 724 | prelude-ls@1.2.1: 725 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 726 | engines: {node: '>= 0.8.0'} 727 | 728 | prettier-linter-helpers@1.0.0: 729 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 730 | engines: {node: '>=6.0.0'} 731 | 732 | prettier@3.3.3: 733 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} 734 | engines: {node: '>=14'} 735 | hasBin: true 736 | 737 | punycode@2.3.1: 738 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 739 | engines: {node: '>=6'} 740 | 741 | queue-microtask@1.2.3: 742 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 743 | 744 | randombytes@2.1.0: 745 | resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} 746 | 747 | resolve-from@4.0.0: 748 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 749 | engines: {node: '>=4'} 750 | 751 | reusify@1.0.4: 752 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 753 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 754 | 755 | run-parallel@1.2.0: 756 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 757 | 758 | safe-buffer@5.2.1: 759 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 760 | 761 | schema-utils@3.3.0: 762 | resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} 763 | engines: {node: '>= 10.13.0'} 764 | 765 | semver@7.6.3: 766 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 767 | engines: {node: '>=10'} 768 | hasBin: true 769 | 770 | serialize-javascript@6.0.2: 771 | resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} 772 | 773 | shebang-command@2.0.0: 774 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 775 | engines: {node: '>=8'} 776 | 777 | shebang-regex@3.0.0: 778 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 779 | engines: {node: '>=8'} 780 | 781 | source-map-js@1.2.1: 782 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 783 | engines: {node: '>=0.10.0'} 784 | 785 | source-map-support@0.5.21: 786 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 787 | 788 | source-map@0.6.1: 789 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 790 | engines: {node: '>=0.10.0'} 791 | 792 | strip-json-comments@3.1.1: 793 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 794 | engines: {node: '>=8'} 795 | 796 | supports-color@7.2.0: 797 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 798 | engines: {node: '>=8'} 799 | 800 | supports-color@8.1.1: 801 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 802 | engines: {node: '>=10'} 803 | 804 | synckit@0.9.2: 805 | resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} 806 | engines: {node: ^14.18.0 || >=16.0.0} 807 | 808 | tapable@2.2.1: 809 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 810 | engines: {node: '>=6'} 811 | 812 | terser-webpack-plugin@5.3.10: 813 | resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} 814 | engines: {node: '>= 10.13.0'} 815 | peerDependencies: 816 | '@swc/core': '*' 817 | esbuild: '*' 818 | uglify-js: '*' 819 | webpack: ^5.1.0 820 | peerDependenciesMeta: 821 | '@swc/core': 822 | optional: true 823 | esbuild: 824 | optional: true 825 | uglify-js: 826 | optional: true 827 | 828 | terser@5.36.0: 829 | resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} 830 | engines: {node: '>=10'} 831 | hasBin: true 832 | 833 | text-table@0.2.0: 834 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 835 | 836 | to-regex-range@5.0.1: 837 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 838 | engines: {node: '>=8.0'} 839 | 840 | ts-api-utils@1.3.0: 841 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} 842 | engines: {node: '>=16'} 843 | peerDependencies: 844 | typescript: '>=4.2.0' 845 | 846 | tslib@2.8.0: 847 | resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} 848 | 849 | type-check@0.4.0: 850 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 851 | engines: {node: '>= 0.8.0'} 852 | 853 | typescript-eslint@8.11.0: 854 | resolution: {integrity: sha512-cBRGnW3FSlxaYwU8KfAewxFK5uzeOAp0l2KebIlPDOT5olVi65KDG/yjBooPBG0kGW/HLkoz1c/iuBFehcS3IA==} 855 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 856 | peerDependencies: 857 | typescript: '*' 858 | peerDependenciesMeta: 859 | typescript: 860 | optional: true 861 | 862 | typescript@5.6.3: 863 | resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} 864 | engines: {node: '>=14.17'} 865 | hasBin: true 866 | 867 | undici-types@6.19.8: 868 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} 869 | 870 | update-browserslist-db@1.1.1: 871 | resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} 872 | hasBin: true 873 | peerDependencies: 874 | browserslist: '>= 4.21.0' 875 | 876 | uri-js@4.4.1: 877 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 878 | 879 | util-deprecate@1.0.2: 880 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 881 | 882 | uuid@10.0.0: 883 | resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} 884 | hasBin: true 885 | 886 | uuid@9.0.1: 887 | resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} 888 | hasBin: true 889 | 890 | watchpack@2.4.2: 891 | resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} 892 | engines: {node: '>=10.13.0'} 893 | 894 | webpack-sources@3.2.3: 895 | resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} 896 | engines: {node: '>=10.13.0'} 897 | 898 | webpack@5.95.0: 899 | resolution: {integrity: sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==} 900 | engines: {node: '>=10.13.0'} 901 | hasBin: true 902 | peerDependencies: 903 | webpack-cli: '*' 904 | peerDependenciesMeta: 905 | webpack-cli: 906 | optional: true 907 | 908 | which@2.0.2: 909 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 910 | engines: {node: '>= 8'} 911 | hasBin: true 912 | 913 | word-wrap@1.2.5: 914 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 915 | engines: {node: '>=0.10.0'} 916 | 917 | yocto-queue@0.1.0: 918 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 919 | engines: {node: '>=10'} 920 | 921 | snapshots: 922 | 923 | '@eslint-community/eslint-utils@4.4.1(eslint@9.13.0)': 924 | dependencies: 925 | eslint: 9.13.0 926 | eslint-visitor-keys: 3.4.3 927 | 928 | '@eslint-community/regexpp@4.11.2': {} 929 | 930 | '@eslint/config-array@0.18.0': 931 | dependencies: 932 | '@eslint/object-schema': 2.1.4 933 | debug: 4.3.7 934 | minimatch: 3.1.2 935 | transitivePeerDependencies: 936 | - supports-color 937 | 938 | '@eslint/core@0.7.0': {} 939 | 940 | '@eslint/eslintrc@3.1.0': 941 | dependencies: 942 | ajv: 6.12.6 943 | debug: 4.3.7 944 | espree: 10.2.0 945 | globals: 14.0.0 946 | ignore: 5.3.2 947 | import-fresh: 3.3.0 948 | js-yaml: 4.1.0 949 | minimatch: 3.1.2 950 | strip-json-comments: 3.1.1 951 | transitivePeerDependencies: 952 | - supports-color 953 | 954 | '@eslint/js@9.13.0': {} 955 | 956 | '@eslint/object-schema@2.1.4': {} 957 | 958 | '@eslint/plugin-kit@0.2.1': 959 | dependencies: 960 | levn: 0.4.1 961 | 962 | '@humanfs/core@0.19.0': {} 963 | 964 | '@humanfs/node@0.16.5': 965 | dependencies: 966 | '@humanfs/core': 0.19.0 967 | '@humanwhocodes/retry': 0.3.1 968 | 969 | '@humanwhocodes/module-importer@1.0.1': {} 970 | 971 | '@humanwhocodes/retry@0.3.1': {} 972 | 973 | '@jridgewell/gen-mapping@0.3.5': 974 | dependencies: 975 | '@jridgewell/set-array': 1.2.1 976 | '@jridgewell/sourcemap-codec': 1.5.0 977 | '@jridgewell/trace-mapping': 0.3.25 978 | 979 | '@jridgewell/resolve-uri@3.1.2': {} 980 | 981 | '@jridgewell/set-array@1.2.1': {} 982 | 983 | '@jridgewell/source-map@0.3.6': 984 | dependencies: 985 | '@jridgewell/gen-mapping': 0.3.5 986 | '@jridgewell/trace-mapping': 0.3.25 987 | 988 | '@jridgewell/sourcemap-codec@1.5.0': {} 989 | 990 | '@jridgewell/trace-mapping@0.3.25': 991 | dependencies: 992 | '@jridgewell/resolve-uri': 3.1.2 993 | '@jridgewell/sourcemap-codec': 1.5.0 994 | 995 | '@nodelib/fs.scandir@2.1.5': 996 | dependencies: 997 | '@nodelib/fs.stat': 2.0.5 998 | run-parallel: 1.2.0 999 | 1000 | '@nodelib/fs.stat@2.0.5': {} 1001 | 1002 | '@nodelib/fs.walk@1.2.8': 1003 | dependencies: 1004 | '@nodelib/fs.scandir': 2.1.5 1005 | fastq: 1.17.1 1006 | 1007 | '@pkgr/core@0.1.1': {} 1008 | 1009 | '@types/estree@1.0.6': {} 1010 | 1011 | '@types/json-schema@7.0.15': {} 1012 | 1013 | '@types/node@22.8.1': 1014 | dependencies: 1015 | undici-types: 6.19.8 1016 | 1017 | '@types/uuid@10.0.0': {} 1018 | 1019 | '@types/webpack@5.28.5': 1020 | dependencies: 1021 | '@types/node': 22.8.1 1022 | tapable: 2.2.1 1023 | webpack: 5.95.0 1024 | transitivePeerDependencies: 1025 | - '@swc/core' 1026 | - esbuild 1027 | - uglify-js 1028 | - webpack-cli 1029 | 1030 | '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3)': 1031 | dependencies: 1032 | '@eslint-community/regexpp': 4.11.2 1033 | '@typescript-eslint/parser': 8.11.0(eslint@9.13.0)(typescript@5.6.3) 1034 | '@typescript-eslint/scope-manager': 8.11.0 1035 | '@typescript-eslint/type-utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3) 1036 | '@typescript-eslint/utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3) 1037 | '@typescript-eslint/visitor-keys': 8.11.0 1038 | eslint: 9.13.0 1039 | graphemer: 1.4.0 1040 | ignore: 5.3.2 1041 | natural-compare: 1.4.0 1042 | ts-api-utils: 1.3.0(typescript@5.6.3) 1043 | optionalDependencies: 1044 | typescript: 5.6.3 1045 | transitivePeerDependencies: 1046 | - supports-color 1047 | 1048 | '@typescript-eslint/parser@8.11.0(eslint@9.13.0)(typescript@5.6.3)': 1049 | dependencies: 1050 | '@typescript-eslint/scope-manager': 8.11.0 1051 | '@typescript-eslint/types': 8.11.0 1052 | '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) 1053 | '@typescript-eslint/visitor-keys': 8.11.0 1054 | debug: 4.3.7 1055 | eslint: 9.13.0 1056 | optionalDependencies: 1057 | typescript: 5.6.3 1058 | transitivePeerDependencies: 1059 | - supports-color 1060 | 1061 | '@typescript-eslint/scope-manager@8.11.0': 1062 | dependencies: 1063 | '@typescript-eslint/types': 8.11.0 1064 | '@typescript-eslint/visitor-keys': 8.11.0 1065 | 1066 | '@typescript-eslint/type-utils@8.11.0(eslint@9.13.0)(typescript@5.6.3)': 1067 | dependencies: 1068 | '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) 1069 | '@typescript-eslint/utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3) 1070 | debug: 4.3.7 1071 | ts-api-utils: 1.3.0(typescript@5.6.3) 1072 | optionalDependencies: 1073 | typescript: 5.6.3 1074 | transitivePeerDependencies: 1075 | - eslint 1076 | - supports-color 1077 | 1078 | '@typescript-eslint/types@8.11.0': {} 1079 | 1080 | '@typescript-eslint/typescript-estree@8.11.0(typescript@5.6.3)': 1081 | dependencies: 1082 | '@typescript-eslint/types': 8.11.0 1083 | '@typescript-eslint/visitor-keys': 8.11.0 1084 | debug: 4.3.7 1085 | fast-glob: 3.3.2 1086 | is-glob: 4.0.3 1087 | minimatch: 9.0.5 1088 | semver: 7.6.3 1089 | ts-api-utils: 1.3.0(typescript@5.6.3) 1090 | optionalDependencies: 1091 | typescript: 5.6.3 1092 | transitivePeerDependencies: 1093 | - supports-color 1094 | 1095 | '@typescript-eslint/utils@8.11.0(eslint@9.13.0)(typescript@5.6.3)': 1096 | dependencies: 1097 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) 1098 | '@typescript-eslint/scope-manager': 8.11.0 1099 | '@typescript-eslint/types': 8.11.0 1100 | '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) 1101 | eslint: 9.13.0 1102 | transitivePeerDependencies: 1103 | - supports-color 1104 | - typescript 1105 | 1106 | '@typescript-eslint/visitor-keys@8.11.0': 1107 | dependencies: 1108 | '@typescript-eslint/types': 8.11.0 1109 | eslint-visitor-keys: 3.4.3 1110 | 1111 | '@webassemblyjs/ast@1.12.1': 1112 | dependencies: 1113 | '@webassemblyjs/helper-numbers': 1.11.6 1114 | '@webassemblyjs/helper-wasm-bytecode': 1.11.6 1115 | 1116 | '@webassemblyjs/floating-point-hex-parser@1.11.6': {} 1117 | 1118 | '@webassemblyjs/helper-api-error@1.11.6': {} 1119 | 1120 | '@webassemblyjs/helper-buffer@1.12.1': {} 1121 | 1122 | '@webassemblyjs/helper-numbers@1.11.6': 1123 | dependencies: 1124 | '@webassemblyjs/floating-point-hex-parser': 1.11.6 1125 | '@webassemblyjs/helper-api-error': 1.11.6 1126 | '@xtuc/long': 4.2.2 1127 | 1128 | '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} 1129 | 1130 | '@webassemblyjs/helper-wasm-section@1.12.1': 1131 | dependencies: 1132 | '@webassemblyjs/ast': 1.12.1 1133 | '@webassemblyjs/helper-buffer': 1.12.1 1134 | '@webassemblyjs/helper-wasm-bytecode': 1.11.6 1135 | '@webassemblyjs/wasm-gen': 1.12.1 1136 | 1137 | '@webassemblyjs/ieee754@1.11.6': 1138 | dependencies: 1139 | '@xtuc/ieee754': 1.2.0 1140 | 1141 | '@webassemblyjs/leb128@1.11.6': 1142 | dependencies: 1143 | '@xtuc/long': 4.2.2 1144 | 1145 | '@webassemblyjs/utf8@1.11.6': {} 1146 | 1147 | '@webassemblyjs/wasm-edit@1.12.1': 1148 | dependencies: 1149 | '@webassemblyjs/ast': 1.12.1 1150 | '@webassemblyjs/helper-buffer': 1.12.1 1151 | '@webassemblyjs/helper-wasm-bytecode': 1.11.6 1152 | '@webassemblyjs/helper-wasm-section': 1.12.1 1153 | '@webassemblyjs/wasm-gen': 1.12.1 1154 | '@webassemblyjs/wasm-opt': 1.12.1 1155 | '@webassemblyjs/wasm-parser': 1.12.1 1156 | '@webassemblyjs/wast-printer': 1.12.1 1157 | 1158 | '@webassemblyjs/wasm-gen@1.12.1': 1159 | dependencies: 1160 | '@webassemblyjs/ast': 1.12.1 1161 | '@webassemblyjs/helper-wasm-bytecode': 1.11.6 1162 | '@webassemblyjs/ieee754': 1.11.6 1163 | '@webassemblyjs/leb128': 1.11.6 1164 | '@webassemblyjs/utf8': 1.11.6 1165 | 1166 | '@webassemblyjs/wasm-opt@1.12.1': 1167 | dependencies: 1168 | '@webassemblyjs/ast': 1.12.1 1169 | '@webassemblyjs/helper-buffer': 1.12.1 1170 | '@webassemblyjs/wasm-gen': 1.12.1 1171 | '@webassemblyjs/wasm-parser': 1.12.1 1172 | 1173 | '@webassemblyjs/wasm-parser@1.12.1': 1174 | dependencies: 1175 | '@webassemblyjs/ast': 1.12.1 1176 | '@webassemblyjs/helper-api-error': 1.11.6 1177 | '@webassemblyjs/helper-wasm-bytecode': 1.11.6 1178 | '@webassemblyjs/ieee754': 1.11.6 1179 | '@webassemblyjs/leb128': 1.11.6 1180 | '@webassemblyjs/utf8': 1.11.6 1181 | 1182 | '@webassemblyjs/wast-printer@1.12.1': 1183 | dependencies: 1184 | '@webassemblyjs/ast': 1.12.1 1185 | '@xtuc/long': 4.2.2 1186 | 1187 | '@xtuc/ieee754@1.2.0': {} 1188 | 1189 | '@xtuc/long@4.2.2': {} 1190 | 1191 | acorn-import-attributes@1.9.5(acorn@8.13.0): 1192 | dependencies: 1193 | acorn: 8.13.0 1194 | 1195 | acorn-jsx@5.3.2(acorn@8.13.0): 1196 | dependencies: 1197 | acorn: 8.13.0 1198 | 1199 | acorn@8.13.0: {} 1200 | 1201 | ajv-keywords@3.5.2(ajv@6.12.6): 1202 | dependencies: 1203 | ajv: 6.12.6 1204 | 1205 | ajv@6.12.6: 1206 | dependencies: 1207 | fast-deep-equal: 3.1.3 1208 | fast-json-stable-stringify: 2.1.0 1209 | json-schema-traverse: 0.4.1 1210 | uri-js: 4.4.1 1211 | 1212 | ansi-styles@4.3.0: 1213 | dependencies: 1214 | color-convert: 2.0.1 1215 | 1216 | argparse@2.0.1: {} 1217 | 1218 | balanced-match@1.0.2: {} 1219 | 1220 | brace-expansion@1.1.11: 1221 | dependencies: 1222 | balanced-match: 1.0.2 1223 | concat-map: 0.0.1 1224 | 1225 | brace-expansion@2.0.1: 1226 | dependencies: 1227 | balanced-match: 1.0.2 1228 | 1229 | braces@3.0.3: 1230 | dependencies: 1231 | fill-range: 7.1.1 1232 | 1233 | browserslist@4.24.2: 1234 | dependencies: 1235 | caniuse-lite: 1.0.30001671 1236 | electron-to-chromium: 1.5.47 1237 | node-releases: 2.0.18 1238 | update-browserslist-db: 1.1.1(browserslist@4.24.2) 1239 | 1240 | buffer-from@1.1.2: {} 1241 | 1242 | callsites@3.1.0: {} 1243 | 1244 | caniuse-lite@1.0.30001671: {} 1245 | 1246 | chalk@4.1.2: 1247 | dependencies: 1248 | ansi-styles: 4.3.0 1249 | supports-color: 7.2.0 1250 | 1251 | chrome-trace-event@1.0.4: {} 1252 | 1253 | classnames-minifier@1.0.0(css-loader@7.1.2(webpack@5.95.0)): 1254 | dependencies: 1255 | css-loader: 7.1.2(webpack@5.95.0) 1256 | uuid: 9.0.1 1257 | 1258 | color-convert@2.0.1: 1259 | dependencies: 1260 | color-name: 1.1.4 1261 | 1262 | color-name@1.1.4: {} 1263 | 1264 | commander@2.20.3: {} 1265 | 1266 | concat-map@0.0.1: {} 1267 | 1268 | cross-spawn@7.0.3: 1269 | dependencies: 1270 | path-key: 3.1.1 1271 | shebang-command: 2.0.0 1272 | which: 2.0.2 1273 | 1274 | css-loader@7.1.2(webpack@5.95.0): 1275 | dependencies: 1276 | icss-utils: 5.1.0(postcss@8.4.47) 1277 | postcss: 8.4.47 1278 | postcss-modules-extract-imports: 3.1.0(postcss@8.4.47) 1279 | postcss-modules-local-by-default: 4.0.5(postcss@8.4.47) 1280 | postcss-modules-scope: 3.2.0(postcss@8.4.47) 1281 | postcss-modules-values: 4.0.0(postcss@8.4.47) 1282 | postcss-value-parser: 4.2.0 1283 | semver: 7.6.3 1284 | optionalDependencies: 1285 | webpack: 5.95.0 1286 | 1287 | cssesc@3.0.0: {} 1288 | 1289 | debug@4.3.7: 1290 | dependencies: 1291 | ms: 2.1.3 1292 | 1293 | deep-is@0.1.4: {} 1294 | 1295 | electron-to-chromium@1.5.47: {} 1296 | 1297 | enhanced-resolve@5.17.1: 1298 | dependencies: 1299 | graceful-fs: 4.2.11 1300 | tapable: 2.2.1 1301 | 1302 | es-module-lexer@1.5.4: {} 1303 | 1304 | escalade@3.2.0: {} 1305 | 1306 | escape-string-regexp@4.0.0: {} 1307 | 1308 | eslint-config-prettier@9.1.0(eslint@9.13.0): 1309 | dependencies: 1310 | eslint: 9.13.0 1311 | 1312 | eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.13.0))(eslint@9.13.0)(prettier@3.3.3): 1313 | dependencies: 1314 | eslint: 9.13.0 1315 | prettier: 3.3.3 1316 | prettier-linter-helpers: 1.0.0 1317 | synckit: 0.9.2 1318 | optionalDependencies: 1319 | eslint-config-prettier: 9.1.0(eslint@9.13.0) 1320 | 1321 | eslint-scope@5.1.1: 1322 | dependencies: 1323 | esrecurse: 4.3.0 1324 | estraverse: 4.3.0 1325 | 1326 | eslint-scope@8.1.0: 1327 | dependencies: 1328 | esrecurse: 4.3.0 1329 | estraverse: 5.3.0 1330 | 1331 | eslint-visitor-keys@3.4.3: {} 1332 | 1333 | eslint-visitor-keys@4.1.0: {} 1334 | 1335 | eslint@9.13.0: 1336 | dependencies: 1337 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) 1338 | '@eslint-community/regexpp': 4.11.2 1339 | '@eslint/config-array': 0.18.0 1340 | '@eslint/core': 0.7.0 1341 | '@eslint/eslintrc': 3.1.0 1342 | '@eslint/js': 9.13.0 1343 | '@eslint/plugin-kit': 0.2.1 1344 | '@humanfs/node': 0.16.5 1345 | '@humanwhocodes/module-importer': 1.0.1 1346 | '@humanwhocodes/retry': 0.3.1 1347 | '@types/estree': 1.0.6 1348 | '@types/json-schema': 7.0.15 1349 | ajv: 6.12.6 1350 | chalk: 4.1.2 1351 | cross-spawn: 7.0.3 1352 | debug: 4.3.7 1353 | escape-string-regexp: 4.0.0 1354 | eslint-scope: 8.1.0 1355 | eslint-visitor-keys: 4.1.0 1356 | espree: 10.2.0 1357 | esquery: 1.6.0 1358 | esutils: 2.0.3 1359 | fast-deep-equal: 3.1.3 1360 | file-entry-cache: 8.0.0 1361 | find-up: 5.0.0 1362 | glob-parent: 6.0.2 1363 | ignore: 5.3.2 1364 | imurmurhash: 0.1.4 1365 | is-glob: 4.0.3 1366 | json-stable-stringify-without-jsonify: 1.0.1 1367 | lodash.merge: 4.6.2 1368 | minimatch: 3.1.2 1369 | natural-compare: 1.4.0 1370 | optionator: 0.9.4 1371 | text-table: 0.2.0 1372 | transitivePeerDependencies: 1373 | - supports-color 1374 | 1375 | espree@10.2.0: 1376 | dependencies: 1377 | acorn: 8.13.0 1378 | acorn-jsx: 5.3.2(acorn@8.13.0) 1379 | eslint-visitor-keys: 4.1.0 1380 | 1381 | esquery@1.6.0: 1382 | dependencies: 1383 | estraverse: 5.3.0 1384 | 1385 | esrecurse@4.3.0: 1386 | dependencies: 1387 | estraverse: 5.3.0 1388 | 1389 | estraverse@4.3.0: {} 1390 | 1391 | estraverse@5.3.0: {} 1392 | 1393 | esutils@2.0.3: {} 1394 | 1395 | events@3.3.0: {} 1396 | 1397 | fast-deep-equal@3.1.3: {} 1398 | 1399 | fast-diff@1.3.0: {} 1400 | 1401 | fast-glob@3.3.2: 1402 | dependencies: 1403 | '@nodelib/fs.stat': 2.0.5 1404 | '@nodelib/fs.walk': 1.2.8 1405 | glob-parent: 5.1.2 1406 | merge2: 1.4.1 1407 | micromatch: 4.0.8 1408 | 1409 | fast-json-stable-stringify@2.1.0: {} 1410 | 1411 | fast-levenshtein@2.0.6: {} 1412 | 1413 | fastq@1.17.1: 1414 | dependencies: 1415 | reusify: 1.0.4 1416 | 1417 | file-entry-cache@8.0.0: 1418 | dependencies: 1419 | flat-cache: 4.0.1 1420 | 1421 | fill-range@7.1.1: 1422 | dependencies: 1423 | to-regex-range: 5.0.1 1424 | 1425 | find-up@5.0.0: 1426 | dependencies: 1427 | locate-path: 6.0.0 1428 | path-exists: 4.0.0 1429 | 1430 | flat-cache@4.0.1: 1431 | dependencies: 1432 | flatted: 3.3.1 1433 | keyv: 4.5.4 1434 | 1435 | flatted@3.3.1: {} 1436 | 1437 | glob-parent@5.1.2: 1438 | dependencies: 1439 | is-glob: 4.0.3 1440 | 1441 | glob-parent@6.0.2: 1442 | dependencies: 1443 | is-glob: 4.0.3 1444 | 1445 | glob-to-regexp@0.4.1: {} 1446 | 1447 | globals@14.0.0: {} 1448 | 1449 | graceful-fs@4.2.11: {} 1450 | 1451 | graphemer@1.4.0: {} 1452 | 1453 | has-flag@4.0.0: {} 1454 | 1455 | husky@9.1.6: {} 1456 | 1457 | icss-utils@5.1.0(postcss@8.4.47): 1458 | dependencies: 1459 | postcss: 8.4.47 1460 | 1461 | ignore@5.3.2: {} 1462 | 1463 | import-fresh@3.3.0: 1464 | dependencies: 1465 | parent-module: 1.0.1 1466 | resolve-from: 4.0.0 1467 | 1468 | imurmurhash@0.1.4: {} 1469 | 1470 | is-extglob@2.1.1: {} 1471 | 1472 | is-glob@4.0.3: 1473 | dependencies: 1474 | is-extglob: 2.1.1 1475 | 1476 | is-number@7.0.0: {} 1477 | 1478 | isexe@2.0.0: {} 1479 | 1480 | jest-worker@27.5.1: 1481 | dependencies: 1482 | '@types/node': 22.8.1 1483 | merge-stream: 2.0.0 1484 | supports-color: 8.1.1 1485 | 1486 | js-yaml@4.1.0: 1487 | dependencies: 1488 | argparse: 2.0.1 1489 | 1490 | json-buffer@3.0.1: {} 1491 | 1492 | json-parse-even-better-errors@2.3.1: {} 1493 | 1494 | json-schema-traverse@0.4.1: {} 1495 | 1496 | json-stable-stringify-without-jsonify@1.0.1: {} 1497 | 1498 | keyv@4.5.4: 1499 | dependencies: 1500 | json-buffer: 3.0.1 1501 | 1502 | levn@0.4.1: 1503 | dependencies: 1504 | prelude-ls: 1.2.1 1505 | type-check: 0.4.0 1506 | 1507 | loader-runner@4.3.0: {} 1508 | 1509 | locate-path@6.0.0: 1510 | dependencies: 1511 | p-locate: 5.0.0 1512 | 1513 | lodash.merge@4.6.2: {} 1514 | 1515 | merge-stream@2.0.0: {} 1516 | 1517 | merge2@1.4.1: {} 1518 | 1519 | micromatch@4.0.8: 1520 | dependencies: 1521 | braces: 3.0.3 1522 | picomatch: 2.3.1 1523 | 1524 | mime-db@1.52.0: {} 1525 | 1526 | mime-types@2.1.35: 1527 | dependencies: 1528 | mime-db: 1.52.0 1529 | 1530 | minimatch@3.1.2: 1531 | dependencies: 1532 | brace-expansion: 1.1.11 1533 | 1534 | minimatch@9.0.5: 1535 | dependencies: 1536 | brace-expansion: 2.0.1 1537 | 1538 | ms@2.1.3: {} 1539 | 1540 | nanoid@3.3.7: {} 1541 | 1542 | natural-compare@1.4.0: {} 1543 | 1544 | neo-async@2.6.2: {} 1545 | 1546 | node-releases@2.0.18: {} 1547 | 1548 | optionator@0.9.4: 1549 | dependencies: 1550 | deep-is: 0.1.4 1551 | fast-levenshtein: 2.0.6 1552 | levn: 0.4.1 1553 | prelude-ls: 1.2.1 1554 | type-check: 0.4.0 1555 | word-wrap: 1.2.5 1556 | 1557 | p-limit@3.1.0: 1558 | dependencies: 1559 | yocto-queue: 0.1.0 1560 | 1561 | p-locate@5.0.0: 1562 | dependencies: 1563 | p-limit: 3.1.0 1564 | 1565 | parent-module@1.0.1: 1566 | dependencies: 1567 | callsites: 3.1.0 1568 | 1569 | path-exists@4.0.0: {} 1570 | 1571 | path-key@3.1.1: {} 1572 | 1573 | picocolors@1.1.1: {} 1574 | 1575 | picomatch@2.3.1: {} 1576 | 1577 | postcss-modules-extract-imports@3.1.0(postcss@8.4.47): 1578 | dependencies: 1579 | postcss: 8.4.47 1580 | 1581 | postcss-modules-local-by-default@4.0.5(postcss@8.4.47): 1582 | dependencies: 1583 | icss-utils: 5.1.0(postcss@8.4.47) 1584 | postcss: 8.4.47 1585 | postcss-selector-parser: 6.1.2 1586 | postcss-value-parser: 4.2.0 1587 | 1588 | postcss-modules-scope@3.2.0(postcss@8.4.47): 1589 | dependencies: 1590 | postcss: 8.4.47 1591 | postcss-selector-parser: 6.1.2 1592 | 1593 | postcss-modules-values@4.0.0(postcss@8.4.47): 1594 | dependencies: 1595 | icss-utils: 5.1.0(postcss@8.4.47) 1596 | postcss: 8.4.47 1597 | 1598 | postcss-selector-parser@6.1.2: 1599 | dependencies: 1600 | cssesc: 3.0.0 1601 | util-deprecate: 1.0.2 1602 | 1603 | postcss-value-parser@4.2.0: {} 1604 | 1605 | postcss@8.4.47: 1606 | dependencies: 1607 | nanoid: 3.3.7 1608 | picocolors: 1.1.1 1609 | source-map-js: 1.2.1 1610 | 1611 | prelude-ls@1.2.1: {} 1612 | 1613 | prettier-linter-helpers@1.0.0: 1614 | dependencies: 1615 | fast-diff: 1.3.0 1616 | 1617 | prettier@3.3.3: {} 1618 | 1619 | punycode@2.3.1: {} 1620 | 1621 | queue-microtask@1.2.3: {} 1622 | 1623 | randombytes@2.1.0: 1624 | dependencies: 1625 | safe-buffer: 5.2.1 1626 | 1627 | resolve-from@4.0.0: {} 1628 | 1629 | reusify@1.0.4: {} 1630 | 1631 | run-parallel@1.2.0: 1632 | dependencies: 1633 | queue-microtask: 1.2.3 1634 | 1635 | safe-buffer@5.2.1: {} 1636 | 1637 | schema-utils@3.3.0: 1638 | dependencies: 1639 | '@types/json-schema': 7.0.15 1640 | ajv: 6.12.6 1641 | ajv-keywords: 3.5.2(ajv@6.12.6) 1642 | 1643 | semver@7.6.3: {} 1644 | 1645 | serialize-javascript@6.0.2: 1646 | dependencies: 1647 | randombytes: 2.1.0 1648 | 1649 | shebang-command@2.0.0: 1650 | dependencies: 1651 | shebang-regex: 3.0.0 1652 | 1653 | shebang-regex@3.0.0: {} 1654 | 1655 | source-map-js@1.2.1: {} 1656 | 1657 | source-map-support@0.5.21: 1658 | dependencies: 1659 | buffer-from: 1.1.2 1660 | source-map: 0.6.1 1661 | 1662 | source-map@0.6.1: {} 1663 | 1664 | strip-json-comments@3.1.1: {} 1665 | 1666 | supports-color@7.2.0: 1667 | dependencies: 1668 | has-flag: 4.0.0 1669 | 1670 | supports-color@8.1.1: 1671 | dependencies: 1672 | has-flag: 4.0.0 1673 | 1674 | synckit@0.9.2: 1675 | dependencies: 1676 | '@pkgr/core': 0.1.1 1677 | tslib: 2.8.0 1678 | 1679 | tapable@2.2.1: {} 1680 | 1681 | terser-webpack-plugin@5.3.10(webpack@5.95.0): 1682 | dependencies: 1683 | '@jridgewell/trace-mapping': 0.3.25 1684 | jest-worker: 27.5.1 1685 | schema-utils: 3.3.0 1686 | serialize-javascript: 6.0.2 1687 | terser: 5.36.0 1688 | webpack: 5.95.0 1689 | 1690 | terser@5.36.0: 1691 | dependencies: 1692 | '@jridgewell/source-map': 0.3.6 1693 | acorn: 8.13.0 1694 | commander: 2.20.3 1695 | source-map-support: 0.5.21 1696 | 1697 | text-table@0.2.0: {} 1698 | 1699 | to-regex-range@5.0.1: 1700 | dependencies: 1701 | is-number: 7.0.0 1702 | 1703 | ts-api-utils@1.3.0(typescript@5.6.3): 1704 | dependencies: 1705 | typescript: 5.6.3 1706 | 1707 | tslib@2.8.0: {} 1708 | 1709 | type-check@0.4.0: 1710 | dependencies: 1711 | prelude-ls: 1.2.1 1712 | 1713 | typescript-eslint@8.11.0(eslint@9.13.0)(typescript@5.6.3): 1714 | dependencies: 1715 | '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3) 1716 | '@typescript-eslint/parser': 8.11.0(eslint@9.13.0)(typescript@5.6.3) 1717 | '@typescript-eslint/utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3) 1718 | optionalDependencies: 1719 | typescript: 5.6.3 1720 | transitivePeerDependencies: 1721 | - eslint 1722 | - supports-color 1723 | 1724 | typescript@5.6.3: {} 1725 | 1726 | undici-types@6.19.8: {} 1727 | 1728 | update-browserslist-db@1.1.1(browserslist@4.24.2): 1729 | dependencies: 1730 | browserslist: 4.24.2 1731 | escalade: 3.2.0 1732 | picocolors: 1.1.1 1733 | 1734 | uri-js@4.4.1: 1735 | dependencies: 1736 | punycode: 2.3.1 1737 | 1738 | util-deprecate@1.0.2: {} 1739 | 1740 | uuid@10.0.0: {} 1741 | 1742 | uuid@9.0.1: {} 1743 | 1744 | watchpack@2.4.2: 1745 | dependencies: 1746 | glob-to-regexp: 0.4.1 1747 | graceful-fs: 4.2.11 1748 | 1749 | webpack-sources@3.2.3: {} 1750 | 1751 | webpack@5.95.0: 1752 | dependencies: 1753 | '@types/estree': 1.0.6 1754 | '@webassemblyjs/ast': 1.12.1 1755 | '@webassemblyjs/wasm-edit': 1.12.1 1756 | '@webassemblyjs/wasm-parser': 1.12.1 1757 | acorn: 8.13.0 1758 | acorn-import-attributes: 1.9.5(acorn@8.13.0) 1759 | browserslist: 4.24.2 1760 | chrome-trace-event: 1.0.4 1761 | enhanced-resolve: 5.17.1 1762 | es-module-lexer: 1.5.4 1763 | eslint-scope: 5.1.1 1764 | events: 3.3.0 1765 | glob-to-regexp: 0.4.1 1766 | graceful-fs: 4.2.11 1767 | json-parse-even-better-errors: 2.3.1 1768 | loader-runner: 4.3.0 1769 | mime-types: 2.1.35 1770 | neo-async: 2.6.2 1771 | schema-utils: 3.3.0 1772 | tapable: 2.2.1 1773 | terser-webpack-plugin: 5.3.10(webpack@5.95.0) 1774 | watchpack: 2.4.2 1775 | webpack-sources: 3.2.3 1776 | transitivePeerDependencies: 1777 | - '@swc/core' 1778 | - esbuild 1779 | - uglify-js 1780 | 1781 | which@2.0.2: 1782 | dependencies: 1783 | isexe: 2.0.0 1784 | 1785 | word-wrap@1.2.5: {} 1786 | 1787 | yocto-queue@0.1.0: {} 1788 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - 'package' --------------------------------------------------------------------------------