├── playground
├── .prettierignore
├── .prettierrc
├── public
│ ├── robots.txt
│ └── favicon.ico
├── tsconfig.node.json
├── vite.config.ts
├── .gitignore
├── index.html
├── tsconfig.json
├── eslint.config.js
├── src
│ ├── Snippet.tsx
│ ├── useCopyToClipboard.ts
│ ├── main.tsx
│ ├── context.tsx
│ ├── index.css
│ ├── ResizeCard.tsx
│ ├── useDimensions.tsx
│ ├── BackgroundImage.tsx
│ └── Sidebar.tsx
└── package.json
├── .travis.yml
├── .gitignore
├── .prettierignore
├── .npmignore
├── .prettierrc.mjs
├── src
├── index.ts
├── types.ts
├── useResizeDetector.ts
└── utils.ts
├── rollup.config.mjs
├── eslint.config.mjs
├── tsconfig.json
├── LICENSE
├── package.json
├── README.md
└── pnpm-lock.yaml
/playground/.prettierignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | public
3 | build
4 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - 'iojs'
4 | script: npm run test
5 |
--------------------------------------------------------------------------------
/playground/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "printWidth": 120,
3 | "singleQuote": true
4 | }
5 |
--------------------------------------------------------------------------------
/playground/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | */**/dist
3 | *.log
4 | .DS_Store
5 | build
6 | yarn.lock
7 | .eslintcache
8 | .yarn
9 |
--------------------------------------------------------------------------------
/playground/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/maslianok/react-resize-detector/HEAD/playground/public/favicon.ico
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | **/node_modules
2 | */**/dist
3 | *.log
4 | .DS_Store
5 | build
6 | yarn.lock
7 | pnpm-lock.yaml
8 | .eslintcache
9 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | *.log
3 | node_modules
4 | src
5 | test
6 | playground
7 | yarn.lock
8 | tsconfig.json
9 | .babelrc
10 | .eslintignore
11 | .eslintrc
12 | .gitignore
13 | .travis.yml
14 |
--------------------------------------------------------------------------------
/.prettierrc.mjs:
--------------------------------------------------------------------------------
1 | /**
2 | * @see https://prettier.io/docs/en/configuration.html
3 | * @type {import("prettier").Config}
4 | */
5 | const config = {
6 | printWidth: 120,
7 | singleQuote: true,
8 | };
9 |
10 | export default config;
11 |
--------------------------------------------------------------------------------
/playground/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler",
7 | "allowSyntheticDefaultImports": true
8 | },
9 | "include": ["vite.config.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import useResizeDetector from './useResizeDetector.js';
2 |
3 | export { useResizeDetector };
4 | export type {
5 | UseResizeDetectorReturn,
6 | useResizeDetectorProps,
7 | OnResizeCallback,
8 | ResizePayload,
9 | RefreshModeType,
10 | RefreshOptionsType,
11 | Dimensions,
12 | } from './types.js';
13 |
--------------------------------------------------------------------------------
/playground/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite';
2 | import react from '@vitejs/plugin-react';
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | server: {
8 | port: 3000,
9 | },
10 | build: {
11 | outDir: 'build',
12 | },
13 | resolve: {
14 | alias: {
15 | '@': '/src',
16 | },
17 | },
18 | });
19 |
--------------------------------------------------------------------------------
/playground/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # production
12 | /build
13 |
14 | # misc
15 | .DS_Store
16 | .env.local
17 | .env.development.local
18 | .env.test.local
19 | .env.production.local
20 |
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
--------------------------------------------------------------------------------
/playground/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | React-resize-detector demo
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/playground/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2020",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "module": "ESNext",
6 | "skipLibCheck": true,
7 | "moduleResolution": "bundler",
8 | "allowImportingTsExtensions": true,
9 | "resolveJsonModule": true,
10 | "isolatedModules": true,
11 | "noEmit": true,
12 | "jsx": "react-jsx",
13 | "paths": {
14 | "@/*": ["./src/*"]
15 | }
16 | },
17 | "include": ["src"],
18 | "references": [{ "path": "./tsconfig.node.json" }]
19 | }
20 |
--------------------------------------------------------------------------------
/playground/eslint.config.js:
--------------------------------------------------------------------------------
1 | import eslint from '@eslint/js';
2 | import tseslint from 'typescript-eslint';
3 | import reactPlugin from 'eslint-plugin-react';
4 | import prettierConfig from 'eslint-config-prettier';
5 |
6 | export default tseslint.config(
7 | eslint.configs.recommended,
8 | tseslint.configs.recommended,
9 | reactPlugin.configs.flat.recommended,
10 | reactPlugin.configs.flat['jsx-runtime'],
11 | {
12 | settings: {
13 | react: {
14 | version: 'detect',
15 | },
16 | },
17 | },
18 | prettierConfig,
19 | );
20 |
--------------------------------------------------------------------------------
/rollup.config.mjs:
--------------------------------------------------------------------------------
1 | import externals from 'rollup-plugin-node-externals';
2 | import resolve from '@rollup/plugin-node-resolve';
3 | import commonjs from '@rollup/plugin-commonjs';
4 | import typescript from '@rollup/plugin-typescript';
5 |
6 | const getConfig = () => ({
7 | input: 'src/index.ts',
8 | output: {
9 | dir: 'build',
10 | format: 'esm',
11 | sourcemap: true,
12 | preserveModules: true,
13 | preserveModulesRoot: 'src',
14 | },
15 | plugins: [externals(), resolve(), commonjs(), typescript()],
16 | });
17 |
18 | export default [getConfig()];
19 |
--------------------------------------------------------------------------------
/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import eslint from '@eslint/js';
2 | import tseslint from 'typescript-eslint';
3 | import reactPlugin from 'eslint-plugin-react';
4 | import prettierConfig from 'eslint-config-prettier';
5 |
6 | export default tseslint.config(
7 | {
8 | ignores: ['**/build/**', '**/playground/**'],
9 | },
10 | eslint.configs.recommended,
11 | tseslint.configs.recommended,
12 | reactPlugin.configs.flat.recommended,
13 | reactPlugin.configs.flat['jsx-runtime'],
14 | {
15 | settings: {
16 | react: {
17 | version: 'detect',
18 | },
19 | },
20 | },
21 | prettierConfig,
22 | );
23 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "rootDir": "src",
4 | "declaration": true,
5 | "declarationDir": "build",
6 | "module": "NodeNext",
7 | "target": "es6",
8 | "lib": ["es6", "dom", "es2016", "es2017"],
9 | "sourceMap": true,
10 | "strict": true,
11 | "jsx": "react",
12 | "moduleResolution": "nodenext",
13 | "allowSyntheticDefaultImports": true,
14 | "esModuleInterop": true,
15 | "noImplicitAny": false,
16 | "skipLibCheck": true,
17 | "inlineSources": true,
18 | "noEmitOnError": true,
19 | "noEmit": true
20 | },
21 | "include": ["src/**/*"],
22 | "exclude": ["node_modules", "build", "src/**/*.test.tsx"]
23 | }
24 |
--------------------------------------------------------------------------------
/playground/src/Snippet.tsx:
--------------------------------------------------------------------------------
1 | import { Button, Code, Tooltip } from '@radix-ui/themes';
2 | import { Copy, Check } from 'lucide-react';
3 | import { useCopyToClipboard } from './useCopyToClipboard';
4 |
5 | export interface SnippetProps {
6 | code: string;
7 | }
8 |
9 | export const Snippet = ({ code }: SnippetProps) => {
10 | const [copied, copy] = useCopyToClipboard(code);
11 | return (
12 |
13 | {code}
14 |
15 |
16 |
19 |
20 |
21 | );
22 | };
23 |
--------------------------------------------------------------------------------
/playground/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "playground",
3 | "version": "0.1.0",
4 | "type": "module",
5 | "scripts": {
6 | "dev": "linklocal && vite",
7 | "build": "tsc && vite build",
8 | "prettier": "prettier --write ./src",
9 | "lint": "eslint ./src --fix",
10 | "fix": "npm run prettier && npm run lint",
11 | "preview": "vite preview"
12 | },
13 | "dependencies": {
14 | "@radix-ui/themes": "^3.1.6",
15 | "lucide-react": "^0.469.0",
16 | "react": "^19.0.0",
17 | "react-dom": "^19.0.0",
18 | "react-resize-detector": "file:.."
19 | },
20 | "devDependencies": {
21 | "@types/node": "^22.10.2",
22 | "@types/react": "^19.0.2",
23 | "@types/react-dom": "^19.0.2",
24 | "@vitejs/plugin-react": "^4.3.4",
25 | "eslint": "^9.17.0",
26 | "eslint-config-prettier": "^9.1.0",
27 | "eslint-plugin-react": "^7.37.3",
28 | "linklocal": "^2.8.2",
29 | "prettier": "3.4.2",
30 | "typescript": "^5.7.2",
31 | "typescript-eslint": "^8.19.0",
32 | "vite": "^6.0.6"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/playground/src/useCopyToClipboard.ts:
--------------------------------------------------------------------------------
1 | import { useEffect } from 'react';
2 | import { useCallback, useState } from 'react';
3 |
4 | export const useCopyToClipboard = (text: string) => {
5 | const [copied, setCopied] = useState(false);
6 |
7 | const copy = useCallback(async () => {
8 | if (!navigator?.clipboard) {
9 | console.warn('Clipboard not supported');
10 | return false;
11 | }
12 |
13 | // Try to save to clipboard then set copied state if successful
14 | try {
15 | await navigator.clipboard.writeText(text);
16 | setCopied(true);
17 | return true;
18 | } catch (error) {
19 | console.warn('Copy failed', error);
20 | setCopied(false);
21 | return false;
22 | }
23 | }, []);
24 |
25 | // Clear copied state after 3 seconds
26 | useEffect(() => {
27 | if (copied) {
28 | const timeout = setTimeout(() => setCopied(false), 3000);
29 | return () => clearTimeout(timeout);
30 | }
31 | }, [copied]);
32 |
33 | return [copied, copy] as const;
34 | };
35 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2023 Vitalii Maslianok
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.
--------------------------------------------------------------------------------
/playground/src/main.tsx:
--------------------------------------------------------------------------------
1 | import * as ReactDOMClient from 'react-dom/client';
2 | import { Flex, Theme } from '@radix-ui/themes';
3 |
4 | import { DemoProvider } from './context';
5 | import { Sidebar } from './Sidebar';
6 | import { ResizeCard } from './ResizeCard';
7 | import { BackgroundImage } from './BackgroundImage';
8 |
9 | import '@radix-ui/themes/styles.css';
10 | import './index.css';
11 |
12 | const root = ReactDOMClient.createRoot(document.getElementById('root')!);
13 |
14 | root.render(
15 |
16 |
17 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | ,
40 | );
41 |
--------------------------------------------------------------------------------
/playground/src/context.tsx:
--------------------------------------------------------------------------------
1 | import { createContext, useContext, useMemo, useState } from 'react';
2 |
3 | export type RefreshModeType = 'throttle' | 'debounce' | undefined;
4 |
5 | export type Box = ResizeObserverBoxOptions | undefined;
6 |
7 | export interface DemoContext {
8 | box: Box;
9 | setBox: React.Dispatch>;
10 |
11 | refreshMode: RefreshModeType;
12 | setRefreshMode: React.Dispatch>;
13 |
14 | isLoading: boolean;
15 | setIsLoading: React.Dispatch>;
16 |
17 | handleHeight: boolean;
18 | setHandleHeight: React.Dispatch>;
19 |
20 | handleWidth: boolean;
21 | setHandleWidth: React.Dispatch>;
22 |
23 | disableRerender: boolean;
24 | setDisableRerender: React.Dispatch>;
25 | }
26 |
27 | const defaultContext = {} as DemoContext;
28 |
29 | export const DemoContext = createContext(defaultContext);
30 |
31 | export const useDemoContext = () => useContext(DemoContext);
32 |
33 | export const DemoProvider = ({ children }: { children: React.ReactNode }) => {
34 | const [box, setBox] = useState(undefined);
35 | const [refreshMode, setRefreshMode] = useState(undefined);
36 | const [isLoading, setIsLoading] = useState(false);
37 | const [handleHeight, setHandleHeight] = useState(true);
38 | const [handleWidth, setHandleWidth] = useState(true);
39 | const [disableRerender, setDisableRerender] = useState(false);
40 |
41 | const value = useMemo(
42 | () => ({
43 | refreshMode,
44 | setRefreshMode,
45 | isLoading,
46 | setIsLoading,
47 | handleHeight,
48 | setHandleHeight,
49 | handleWidth,
50 | setHandleWidth,
51 | box,
52 | setBox,
53 | disableRerender,
54 | setDisableRerender,
55 | }),
56 | [refreshMode, isLoading, handleHeight, handleWidth, box, disableRerender],
57 | );
58 |
59 | return {children};
60 | };
61 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-resize-detector",
3 | "version": "12.3.0",
4 | "description": "React resize detector",
5 | "type": "module",
6 | "exports": "./build/index.js",
7 | "types": "./build/index.d.ts",
8 | "files": [
9 | "build"
10 | ],
11 | "repository": {
12 | "type": "git",
13 | "url": "git+https://github.com/maslianok/react-resize-detector.git"
14 | },
15 | "scripts": {
16 | "prebuild": "tsc",
17 | "build": "rollup -c",
18 | "prettier": "prettier --write .",
19 | "lint": "eslint . --fix",
20 | "fix": "npm run prettier && npm run lint",
21 | "prerelease": "npm version prerelease --preid=rc",
22 | "prepublishOnly": "npm run build"
23 | },
24 | "dependencies": {
25 | "es-toolkit": "^1.39.6"
26 | },
27 | "devDependencies": {
28 | "@eslint/js": "^9.28.0",
29 | "@rollup/plugin-commonjs": "^28.0.3",
30 | "@rollup/plugin-node-resolve": "^16.0.1",
31 | "@rollup/plugin-typescript": "^12.1.2",
32 | "@types/react": "^19.1.7",
33 | "@types/react-dom": "^19.1.6",
34 | "eslint": "^9.28.0",
35 | "eslint-config-prettier": "^10.1.5",
36 | "eslint-plugin-react": "^7.37.5",
37 | "prettier": "^3.5.3",
38 | "rollup": "^4.42.0",
39 | "rollup-plugin-node-externals": "^8.0.0",
40 | "tslib": "^2.8.1",
41 | "typescript": "^5.8.3",
42 | "typescript-eslint": "^8.34.0"
43 | },
44 | "peerDependencies": {
45 | "react": "^18.0.0 || ^19.0.0"
46 | },
47 | "author": "Vitalii Maslianok (https://github.com/maslianok)",
48 | "bugs": {
49 | "url": "https://github.com/maslianok/react-resize-detector/issues"
50 | },
51 | "homepage": "https://github.com/maslianok/react-resize-detector",
52 | "keywords": [
53 | "react",
54 | "resize",
55 | "detector",
56 | "resizeObserver",
57 | "observer"
58 | ],
59 | "license": "MIT",
60 | "sideEffects": false,
61 | "maintainers": [
62 | {
63 | "name": "Vitalii Maslianok",
64 | "email": "maslianok@gmail.com"
65 | }
66 | ],
67 | "contributors": [
68 | {
69 | "name": "James J. Womack (@james_womack)"
70 | },
71 | {
72 | "name": "Roman Zhuravlov (@snelsi)"
73 | }
74 | ]
75 | }
76 |
--------------------------------------------------------------------------------
/src/types.ts:
--------------------------------------------------------------------------------
1 | import type { MutableRefObject } from 'react';
2 |
3 | export type Dimensions = {
4 | height?: number;
5 | width?: number;
6 | };
7 |
8 | /** If element is mounted, returns its dimensions and `ResizeObserverEntry`
9 | * If element is unmounted, returns null */
10 | export type ResizePayload =
11 | | { width: number; height: number; entry: ResizeObserverEntry }
12 | | { width: null; height: null; entry: null };
13 |
14 | export type RefreshModeType = 'throttle' | 'debounce';
15 | export type RefreshOptionsType = { leading?: boolean; trailing?: boolean };
16 | export type OnResizeCallback = (payload: ResizePayload) => void;
17 |
18 | export type Props = {
19 | /**
20 | * Function that will be invoked with observable element's width, height and ResizeObserverEntry.
21 | * If element is unmounted, width and height will be null.
22 | * Default: undefined
23 | */
24 | onResize?: OnResizeCallback;
25 | /**
26 | * Trigger update on height change.
27 | * Default: true
28 | */
29 | handleHeight?: boolean;
30 | /**
31 | * Trigger onResize on width change.
32 | * Default: true
33 | */
34 | handleWidth?: boolean;
35 | /**
36 | * Do not trigger update when a component mounts.
37 | * Default: false
38 | */
39 | skipOnMount?: boolean;
40 | /**
41 | * Disable re-renders triggered by the hook. When true, only the onResize callback will be called.
42 | * Default: false
43 | */
44 | disableRerender?: boolean;
45 | /**
46 | * Changes the update strategy. Possible values: "throttle" and "debounce".
47 | * See `es-toolkit` docs for more information https://es-toolkit.dev/
48 | * undefined - callback will be fired for every frame.
49 | * Default: undefined
50 | */
51 | refreshMode?: RefreshModeType;
52 | /**
53 | * Set the timeout/interval for `refreshMode` strategy
54 | * Default: undefined
55 | */
56 | refreshRate?: number;
57 | /**
58 | * Pass additional params to `refreshMode` according to es-toolkit docs
59 | * Default: undefined
60 | */
61 | refreshOptions?: RefreshOptionsType;
62 | /**
63 | * These options will be used as a second parameter of `resizeObserver.observe` method
64 | * @see https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver/observe
65 | * Default: undefined
66 | */
67 | observerOptions?: ResizeObserverOptions;
68 | };
69 |
70 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
71 | export type OnRefChangeType = {
72 | (node: T | null): void;
73 | current?: T | null;
74 | };
75 |
76 | export interface UseResizeDetectorReturn extends Dimensions {
77 | ref: OnRefChangeType;
78 | }
79 |
80 | export interface useResizeDetectorProps extends Props {
81 | targetRef?: MutableRefObject;
82 | }
83 |
--------------------------------------------------------------------------------
/playground/src/index.css:
--------------------------------------------------------------------------------
1 | *,
2 | *::before,
3 | *::after {
4 | box-sizing: border-box;
5 | margin: 0;
6 | padding: 0;
7 | }
8 |
9 | :root {
10 | --highlight-color: var(--pink-8);
11 | }
12 |
13 | nav {
14 | width: 420px;
15 | flex: 0 0 auto;
16 |
17 | @media (max-width: 768px) {
18 | width: 100%;
19 | }
20 | }
21 |
22 | main {
23 | display: flex;
24 | position: relative;
25 | overflow: hidden;
26 | flex: 1 1 auto;
27 | padding: 24px;
28 | }
29 |
30 | @keyframes fadeOut {
31 | from {
32 | opacity: 1;
33 | }
34 | to {
35 | opacity: 0;
36 | }
37 | }
38 |
39 | .rt-RadioCardsItem {
40 | text-align: center;
41 | }
42 |
43 | main .rt-BaseCard {
44 | --card-padding: var(--space-5);
45 |
46 | box-shadow: var(--shadow-4);
47 |
48 | min-width: 240px;
49 | min-height: 240px;
50 | max-width: 92%;
51 | max-height: 92%;
52 | width: 340px;
53 | height: 340px;
54 | resize: both;
55 | will-change: width, height;
56 |
57 | display: flex;
58 | align-items: center;
59 | justify-content: center;
60 | flex-direction: column;
61 | text-align: center;
62 | margin: auto;
63 |
64 | transition: 0.3s ease-out;
65 | transition-property: background, border, padding;
66 |
67 | & .highlight {
68 | position: absolute;
69 | inset: 20px;
70 | border-radius: 16px;
71 | border: 4px solid var(--highlight-color);
72 | pointer-events: none;
73 |
74 | animation: fadeOut 1s ease-out forwards;
75 | }
76 |
77 | & .inner {
78 | border-radius: calc(var(--card-border-radius));
79 | width: 100%;
80 | height: 100%;
81 | flex: 1 1 auto;
82 | padding: var(--card-padding);
83 |
84 | display: flex;
85 | align-items: center;
86 | justify-content: center;
87 | flex-direction: column;
88 |
89 | transition: inherit;
90 |
91 | & i {
92 | color: var(--highlight-color);
93 | }
94 |
95 | & .rt-Code {
96 | text-decoration: underline dotted;
97 | cursor: help;
98 | }
99 | }
100 |
101 | &[data-debug-colors='true'] {
102 | --card-background-color: var(--green-4);
103 | box-shadow: var(--shadow-1);
104 | & .inner {
105 | background: var(--blue-4);
106 | box-shadow: var(--shadow-1);
107 | }
108 | }
109 | }
110 |
111 | body:has(#debug-hover:hover) main .rt-BaseCard,
112 | main .rt-BaseCard:has(code:hover),
113 | main .rt-BaseCard:has(code[data-state*='open']) {
114 | --card-background-color: var(--green-4);
115 | box-shadow: var(--shadow-1);
116 | & .inner {
117 | background: var(--blue-4);
118 | box-shadow: var(--shadow-1);
119 | }
120 | }
121 |
122 | .snippet {
123 | position: relative;
124 | display: flex;
125 | align-items: center;
126 | width: 100%;
127 | margin-top: 8px;
128 |
129 | & > code {
130 | min-height: 40px;
131 | display: flex;
132 | align-items: center;
133 | width: 100%;
134 | padding: 12px;
135 | }
136 |
137 | & > button {
138 | position: absolute;
139 | right: 4px;
140 | top: 50%;
141 | transform: translateY(-50%);
142 |
143 | box-sizing: border-box;
144 | padding: 4px;
145 | margin: 0;
146 | width: 32px;
147 | height: 32px;
148 |
149 | & svg {
150 | --size: 20px;
151 | width: var(--size);
152 | height: var(--size);
153 | }
154 | }
155 | }
156 |
157 | #debug-hover {
158 | cursor: help;
159 | border: 1px dashed var(--accent-a6);
160 | box-shadow: none;
161 |
162 | & p > em {
163 | text-decoration: underline dotted;
164 | }
165 |
166 | /* Hide if device doesn't support hover */
167 | @media (hover: none) {
168 | display: none;
169 | }
170 | }
171 |
--------------------------------------------------------------------------------
/playground/src/ResizeCard.tsx:
--------------------------------------------------------------------------------
1 | import { useRef, useState } from 'react';
2 |
3 | import { Card, Code, Flex, Heading, Text, Spinner } from '@radix-ui/themes';
4 |
5 | // 1) Import `useResizeDetector` hook from 'react-resize-detector'
6 | import { useResizeDetector } from 'react-resize-detector';
7 |
8 | import { useDemoContext } from './context';
9 | import { DimensionsTooltip, getDimensions, useDimensions } from './useDimensions';
10 |
11 | export const ResizeCard = () => {
12 | const [dimensions, setDimensions] = useDimensions();
13 | const renderedRef = useRef(0);
14 | renderedRef.current++;
15 |
16 |
17 | const [count, setCount] = useState(0);
18 | const { refreshMode, box, handleHeight, handleWidth, isLoading, disableRerender } = useDemoContext();
19 |
20 | // 2) Call `useResizeDetector` to get dimensions of the element.
21 | // It will return `width` and `height` of the element in pixels.
22 | // You need to pass a `ref` to the element you want to observe.
23 | const { ref } = useResizeDetector({
24 | // 3) You can customize `useResizeDetector` behavior by overriding default options.
25 | // For example, you can throttle the refresh rate of the resize event
26 |
27 | // Limit the refresh rate of the resize event.
28 | // Refs: https://es-toolkit.dev/reference/function/debounce.html#debounce
29 | refreshMode,
30 | refreshRate: 200,
31 |
32 | // If you only need to observe the width or height, you can disable the other dimension
33 | handleHeight,
34 | handleWidth,
35 |
36 | // Disable re-renders triggered by the hook. When true, only the onResize callback will be called.
37 | // This is useful when you want to handle resize events without causing component re-renders.
38 | disableRerender,
39 |
40 | // You can pass additional options directly to the ResizeObserver
41 | // For example, you can change the box model used to calculate the dimensions
42 | // By default padding and border are not included in the dimensions
43 | observerOptions: {
44 | box,
45 | },
46 |
47 | // You can attach a side effect to the resize event
48 | // For example, count the number of times the element has been resized
49 | onResize: ({ width, height, entry }) => {
50 | if (width && height) {
51 | if (!disableRerender) {
52 | setCount((count) => count + 1);
53 | setDimensions(getDimensions(entry));
54 | } else {
55 | setDimensions(prev => {
56 | const newDimensions = getDimensions(entry);
57 | if ((prev.inner.width >= 300 && newDimensions.inner.width < 300)
58 | || (prev.inner.width <= 300 && newDimensions.inner.width >= 300)) {
59 | setCount((count) => count + 1);
60 | return newDimensions;
61 | }
62 | return prev;
63 | });
64 | }
65 | }
66 | },
67 |
68 | // For the full list of options, see the API section in the README:
69 | // https://github.com/maslianok/react-resize-detector/tree/master?tab=readme-ov-file#api
70 | });
71 |
72 | // 4) `useResizeDetector` supports dynamic ref change. It's useful when you
73 | // need to use conditional rendering or when the ref is not available immediately.
74 | if (isLoading) {
75 | return (
76 |
77 |
78 |
79 | );
80 | }
81 |
82 | return (
83 |
88 |
89 |
90 |
91 | Card resized {count} times
92 |
93 |
94 | Width:{' '}
95 |
96 | {dimensions.inner.width}px
97 |
98 | , Height:{' '}
99 |
100 | {dimensions.inner.height}px
101 |
102 |
103 |
104 | Rendered: {renderedRef.current}
105 |
106 |
107 | );
108 | };
109 |
--------------------------------------------------------------------------------
/src/useResizeDetector.ts:
--------------------------------------------------------------------------------
1 | import { useEffect, useState, useRef, useCallback } from 'react';
2 | import type { DebouncedFunc } from 'es-toolkit/compat';
3 |
4 | import { getDimensions, patchResizeCallback, useCallbackRef, useRefProxy } from './utils.js';
5 |
6 | import type { Dimensions, UseResizeDetectorReturn, useResizeDetectorProps } from './types.js';
7 |
8 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
9 | function useResizeDetector({
10 | skipOnMount = false,
11 | refreshMode,
12 | refreshRate = 1000,
13 | refreshOptions,
14 | handleWidth = true,
15 | handleHeight = true,
16 | targetRef,
17 | observerOptions,
18 | onResize,
19 | disableRerender = false,
20 | }: useResizeDetectorProps = {}): UseResizeDetectorReturn {
21 | // If `skipOnMount` is enabled, skip the first resize event
22 | const skipResize = useRef(skipOnMount);
23 |
24 | // Wrap the `onResize` callback with a ref to avoid re-renders
25 | const onResizeRef = useCallbackRef(onResize);
26 |
27 | const [size, setSize] = useState({
28 | width: undefined,
29 | height: undefined,
30 | });
31 |
32 | const sizeRef = useRef({
33 | width: undefined,
34 | height: undefined,
35 | });
36 |
37 | // Create a proxy ref to handle conditional rendering and dynamic ref changes of the target element
38 | const { refProxy, refElement } = useRefProxy(targetRef);
39 |
40 | const { box } = observerOptions || {};
41 |
42 | const resizeCallback: ResizeObserverCallback = useCallback(
43 | (entries: ResizeObserverEntry[]) => {
44 | if (!handleWidth && !handleHeight) return;
45 |
46 | if (skipResize.current) {
47 | skipResize.current = false;
48 | return;
49 | }
50 |
51 | // Only update the size if one of the observed dimensions has changed
52 | const shouldSetSize = (prevSize: Dimensions, nextSize: Dimensions) =>
53 | (handleWidth && prevSize.width !== nextSize.width) || (handleHeight && prevSize.height !== nextSize.height);
54 |
55 | entries.forEach((entry) => {
56 | const dimensions = getDimensions(entry, box);
57 | if (disableRerender) {
58 | if (shouldSetSize(sizeRef.current, dimensions)) {
59 | sizeRef.current.width = dimensions.width;
60 | sizeRef.current.height = dimensions.height;
61 | onResizeRef?.({
62 | width: dimensions.width,
63 | height: dimensions.height,
64 | entry,
65 | });
66 | }
67 | } else {
68 | setSize((prevSize) => {
69 | if (!shouldSetSize(prevSize, dimensions)) return prevSize;
70 | onResizeRef?.({
71 | width: dimensions.width,
72 | height: dimensions.height,
73 | entry,
74 | });
75 | return dimensions;
76 | });
77 | }
78 | });
79 | },
80 | [handleWidth, handleHeight, skipResize, box, disableRerender],
81 | );
82 |
83 | // Throttle/Debounce the resize event if refreshMode is configured
84 | const resizeHandler = useCallback(patchResizeCallback(resizeCallback, refreshMode, refreshRate, refreshOptions), [
85 | resizeCallback,
86 | refreshMode,
87 | refreshRate,
88 | refreshOptions,
89 | ]);
90 |
91 | // Attach ResizeObserver to the element
92 | useEffect(() => {
93 | let resizeObserver: ResizeObserver | undefined;
94 | if (refElement) {
95 | try {
96 | resizeObserver = new window.ResizeObserver(resizeHandler);
97 | resizeObserver.observe(refElement, observerOptions);
98 | } catch (error) {
99 | console.warn('ResizeObserver not supported or failed to initialize:', error);
100 | }
101 | }
102 | // If refElement is not available, reset the size
103 | else if (size.width || size.height) {
104 | onResizeRef?.({
105 | width: null,
106 | height: null,
107 | entry: null,
108 | });
109 | sizeRef.current.width = undefined;
110 | sizeRef.current.height = undefined;
111 | if (!disableRerender) {
112 | setSize({ width: undefined, height: undefined });
113 | }
114 | }
115 |
116 | // Disconnect the ResizeObserver when the component is unmounted
117 | return () => {
118 | resizeObserver?.disconnect?.();
119 | (resizeHandler as DebouncedFunc).cancel?.();
120 | };
121 | }, [resizeHandler, refElement]);
122 |
123 | return { ref: refProxy, ...(disableRerender ? sizeRef.current : size) };
124 | }
125 |
126 | export default useResizeDetector;
127 |
--------------------------------------------------------------------------------
/src/utils.ts:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { debounce, throttle } from 'es-toolkit/compat'
3 | import type { DebouncedFunc } from 'es-toolkit/compat'
4 |
5 |
6 | import { OnRefChangeType, Props } from './types.js';
7 |
8 | export type PatchedResizeObserverCallback = DebouncedFunc | ResizeObserverCallback;
9 |
10 | /**
11 | * Wraps the resize callback with a es-toolkit debounce / throttle based on the refresh mode
12 | */
13 | export const patchResizeCallback = (
14 | resizeCallback: ResizeObserverCallback,
15 | refreshMode: Props['refreshMode'],
16 | refreshRate: Props['refreshRate'],
17 | refreshOptions: Props['refreshOptions'],
18 | ): PatchedResizeObserverCallback => {
19 | switch (refreshMode) {
20 | case 'debounce':
21 | return debounce(resizeCallback, refreshRate, refreshOptions);
22 | case 'throttle':
23 | return throttle(resizeCallback, refreshRate, refreshOptions);
24 | default:
25 | return resizeCallback;
26 | }
27 | };
28 |
29 | /**
30 | * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a
31 | * prop or avoid re-executing effects when passed as a dependency
32 | */
33 | export const useCallbackRef =
34 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
35 | any>(callback: T | undefined): T => {
36 | const callbackRef = React.useRef(callback);
37 |
38 | React.useEffect(() => {
39 | callbackRef.current = callback;
40 | });
41 |
42 | return React.useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);
43 | };
44 |
45 | /** `useRef` hook doesn't handle conditional rendering or dynamic ref changes.
46 | * This hook creates a proxy that ensures that `refElement` is updated whenever the ref is changed. */
47 | export const useRefProxy =
48 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
49 | (targetRef: React.MutableRefObject | undefined) => {
50 | // we are going to use this ref to store the last element that was passed to the hook
51 | const [refElement, setRefElement] = React.useState(targetRef?.current || null);
52 |
53 | // if targetRef is passed, we need to update the refElement
54 | // we have to use setTimeout because ref get assigned after the hook is called
55 | // in the future releases we are going to remove targetRef and force users to use ref returned by the hook
56 | if (targetRef) {
57 | setTimeout(() => {
58 | if (targetRef.current !== refElement) {
59 | setRefElement(targetRef.current);
60 | }
61 | }, 0);
62 | }
63 |
64 | // this is a memo that will be called every time the ref is changed
65 | // This proxy will properly call setState either when the ref is called as a function or when `.current` is set
66 | // we call setState inside to trigger rerender
67 | const refProxy: OnRefChangeType = React.useMemo(
68 | () =>
69 | new Proxy(
70 | (node) => {
71 | if (node !== refElement) {
72 | setRefElement(node);
73 | }
74 | },
75 | {
76 | get(target, prop) {
77 | if (prop === 'current') {
78 | return refElement;
79 | }
80 | return target[prop];
81 | },
82 | set(target, prop, value) {
83 | if (prop === 'current') {
84 | setRefElement(value);
85 | } else {
86 | target[prop] = value;
87 | }
88 | return true;
89 | },
90 | },
91 | ),
92 | [refElement],
93 | );
94 |
95 | return { refProxy, refElement, setRefElement };
96 | };
97 |
98 | /** Calculates the dimensions of the element based on the current box model.
99 | * @see https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/The_box_model
100 | */
101 | export const getDimensions = (entry: ResizeObserverEntry, box: ResizeObserverBoxOptions | undefined) => {
102 | // Value Border Padding Inner Content
103 | // ---------------------------------------------------
104 | // 'border-box' Yes Yes Yes
105 | // 'content-box' No No Yes
106 | // undefined No No? Yes
107 |
108 | const borderBox = entry.borderBoxSize?.[0];
109 | const contentBox = entry.contentBoxSize?.[0];
110 |
111 | if (box === 'border-box' && borderBox) {
112 | return {
113 | width: borderBox.inlineSize,
114 | height: borderBox.blockSize,
115 | };
116 | }
117 |
118 | if (box === 'content-box' && contentBox) {
119 | return {
120 | width: contentBox.inlineSize,
121 | height: contentBox.blockSize,
122 | };
123 | }
124 |
125 | return {
126 | width: entry.contentRect.width,
127 | height: entry.contentRect.height,
128 | };
129 | };
130 |
--------------------------------------------------------------------------------
/playground/src/useDimensions.tsx:
--------------------------------------------------------------------------------
1 | import { useState } from 'react';
2 | import { Code, DataList, Tooltip, Theme } from '@radix-ui/themes';
3 |
4 | export interface TRBL {
5 | top: number;
6 | right: number;
7 | bottom: number;
8 | left: number;
9 | }
10 |
11 | export interface Dimensions {
12 | border: TRBL;
13 | padding: TRBL;
14 | inner: {
15 | width: number;
16 | height: number;
17 | };
18 | }
19 |
20 | const defaultValue: TRBL = {
21 | top: 0,
22 | right: 0,
23 | bottom: 0,
24 | left: 0,
25 | };
26 |
27 | // You can use the `ResizeObserverEntry` returned in the `onResize` callback to calculate border and padding dimensions of the element.
28 | export const getDimensions = (entry: ResizeObserverEntry): Dimensions => {
29 | const style = getComputedStyle(entry.target);
30 |
31 | // Get the border and padding dimensions of the element
32 | const border = {
33 | top: parseFloat(style.borderTopWidth),
34 | right: parseFloat(style.borderRightWidth),
35 | bottom: parseFloat(style.borderBottomWidth),
36 | left: parseFloat(style.borderLeftWidth),
37 | };
38 | const padding = {
39 | top: parseFloat(style.paddingTop),
40 | right: parseFloat(style.paddingRight),
41 | bottom: parseFloat(style.paddingBottom),
42 | left: parseFloat(style.paddingLeft),
43 | };
44 |
45 | // You can calculate the inner content dimensions by subtracting the border and padding from the content box size,
46 | // Or you can use the `contentBoxSize` property of the `ResizeObserverEntry` object directly.
47 | const inner = {
48 | width: entry.contentBoxSize[0].inlineSize,
49 | height: entry.contentBoxSize[0].blockSize,
50 | };
51 |
52 | return {
53 | border,
54 | padding,
55 | inner,
56 | };
57 | };
58 |
59 | export const useDimensions = () =>
60 | useState({
61 | border: defaultValue,
62 | padding: defaultValue,
63 | inner: {
64 | width: 0,
65 | height: 0,
66 | },
67 | });
68 |
69 | export const DimensionsTooltip = ({
70 | dimensions,
71 | children,
72 | orientation,
73 | }: {
74 | dimensions: Dimensions;
75 | children: React.ReactNode;
76 | orientation: 'horizontal' | 'vertical';
77 | }) => {
78 | if (orientation === 'horizontal') {
79 | return (
80 |
83 |
84 |
85 | Border left:
86 |
87 | {dimensions.border.left}px
88 |
89 |
90 |
91 | Padding left:
92 |
93 | {dimensions.padding.left}px
94 |
95 |
96 |
97 | Inner width:
98 |
99 | {dimensions.inner.width}px
100 |
101 |
102 |
103 | Padding right:
104 |
105 | {dimensions.padding.right}px
106 |
107 |
108 |
109 | Border right:
110 |
111 | {dimensions.border.right}px
112 |
113 |
114 |
115 |
116 | }
117 | >
118 | {children}
119 |
120 | );
121 | }
122 |
123 | return (
124 |
127 |
128 |
129 | Border top:
130 |
131 | {dimensions.border.top}px
132 |
133 |
134 |
135 | Padding top:
136 |
137 | {dimensions.padding.top}px
138 |
139 |
140 |
141 | Inner height:
142 |
143 | {dimensions.inner.height}px
144 |
145 |
146 |
147 | Padding bottom:
148 |
149 | {dimensions.padding.bottom}px
150 |
151 |
152 |
153 | Border bottom:
154 |
155 | {dimensions.border.bottom}px
156 |
157 |
158 |
159 |
160 | }
161 | >
162 | {children}
163 |
164 | );
165 | };
166 |
--------------------------------------------------------------------------------
/playground/src/BackgroundImage.tsx:
--------------------------------------------------------------------------------
1 | export const BackgroundImage = ({ style, ...props }: React.ComponentPropsWithoutRef<'svg'>) => (
2 |
118 | );
119 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Handle element resizes like it's 2025!
2 |
3 |
4 |
5 | #### [Live demo](https://react-resize-detector.vercel.app/)
6 |
7 | Modern browsers now have native support for detecting element size changes through [ResizeObservers](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver). This library utilizes ResizeObservers to facilitate managing element size changes in React applications.
8 |
9 | 🐥 Tiny ~2kb
10 |
11 | 🐼 Written in TypeScript
12 |
13 | 🐠 Used by 170k repositories
14 |
15 | 🦄 Produces 100 million downloads annually
16 |
17 | No `window.resize` listeners! No timeouts!
18 |
19 | ## Should you use this library?
20 |
21 | **Consider CSS Container Queries first!** They now work in [all major browsers](https://caniuse.com/css-container-queries) and might solve your use case with pure CSS.
22 |
23 | CSS Container Queries Example
24 |
25 | ```html
26 |
27 |
28 |
Card title
29 |
Card content
30 |
31 |
32 | ```
33 |
34 | ```css
35 | .post {
36 | container-type: inline-size;
37 | }
38 |
39 | /* Default heading styles for the card title */
40 | .card h2 {
41 | font-size: 1em;
42 | }
43 |
44 | /* If the container is larger than 700px */
45 | @container (min-width: 700px) {
46 | .card h2 {
47 | font-size: 2em;
48 | }
49 | }
50 | ```
51 |
52 |
53 |
54 | **Use this library when you need:**
55 |
56 | - JavaScript-based resize logic with full TypeScript support
57 | - Complex calculations based on dimensions
58 | - Integration with React state/effects
59 | - Programmatic control over resize behavior
60 |
61 | ## Installation
62 |
63 | ```bash
64 | npm install react-resize-detector
65 | # OR
66 | yarn add react-resize-detector
67 | # OR
68 | pnpm add react-resize-detector
69 | ```
70 |
71 | ## Quick Start
72 |
73 | ### Basic Usage
74 |
75 | ```tsx
76 | import { useResizeDetector } from 'react-resize-detector';
77 |
78 | const CustomComponent = () => {
79 | const { width, height, ref } = useResizeDetector();
80 | return {`${width}x${height}`}
;
81 | };
82 | ```
83 |
84 | ### With Resize Callback
85 |
86 | ```tsx
87 | import { useCallback } from 'react';
88 | import { useResizeDetector, OnResizeCallback } from 'react-resize-detector';
89 |
90 | const CustomComponent = () => {
91 | const onResize: OnResizeCallback = useCallback((payload) => {
92 | if (payload.width !== null && payload.height !== null) {
93 | console.log('Dimensions:', payload.width, payload.height);
94 | } else {
95 | console.log('Element unmounted');
96 | }
97 | }, []);
98 |
99 | const { width, height, ref } = useResizeDetector({
100 | onResize,
101 | });
102 |
103 | return {`${width}x${height}`}
;
104 | };
105 | ```
106 |
107 | ### With External Ref (Advanced)
108 |
109 | _It's not advised to use this approach, as dynamically mounting and unmounting the observed element could lead to unexpected behavior._
110 |
111 | ```tsx
112 | import { useRef } from 'react';
113 | import { useResizeDetector } from 'react-resize-detector';
114 |
115 | const CustomComponent = () => {
116 | const targetRef = useRef(null);
117 | const { width, height } = useResizeDetector({ targetRef });
118 | return {`${width}x${height}`}
;
119 | };
120 | ```
121 |
122 | ## API Reference
123 |
124 | ### Hook Signature
125 |
126 | ```typescript
127 | useResizeDetector(
128 | props?: useResizeDetectorProps
129 | ): UseResizeDetectorReturn
130 | ```
131 |
132 | ### Props
133 |
134 | | Prop | Type | Description | Default |
135 | | ----------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------- |
136 | | `onResize` | `(payload: ResizePayload) => void` | Callback invoked with resize information | `undefined` |
137 | | `handleWidth` | `boolean` | Trigger updates on width changes | `true` |
138 | | `handleHeight` | `boolean` | Trigger updates on height changes | `true` |
139 | | `skipOnMount` | `boolean` | Skip the first resize event when component mounts | `false` |
140 | | `disableRerender` | `boolean` | Disable re-renders triggered by the hook. Only the onResize callback will be called | `false` |
141 | | `refreshMode` | `'throttle' \| 'debounce'` | Rate limiting strategy. See [es-toolkit docs](https://es-toolkit.dev) | `undefined` |
142 | | `refreshRate` | `number` | Delay in milliseconds for rate limiting | `1000` |
143 | | `refreshOptions` | `{ leading?: boolean; trailing?: boolean }` | Additional options for throttle/debounce | `undefined` |
144 | | `observerOptions` | `ResizeObserverOptions` | Options passed to [`resizeObserver.observe`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver/observe) | `undefined` |
145 | | `targetRef` | `MutableRefObject` | External ref to observe (use with caution) | `undefined` |
146 |
147 | ## Advanced Examples
148 |
149 | ### Responsive Component
150 |
151 | ```jsx
152 | import { useResizeDetector } from 'react-resize-detector';
153 |
154 | const ResponsiveCard = () => {
155 | const { width, ref } = useResizeDetector();
156 |
157 | const cardStyle = {
158 | padding: width > 600 ? '2rem' : '1rem',
159 | fontSize: width > 400 ? '1.2em' : '1em',
160 | flexDirection: width > 500 ? 'row' : 'column',
161 | };
162 |
163 | return (
164 |
165 |
Responsive Card
166 |
Width: {width}px
167 |
168 | );
169 | };
170 | ```
171 |
172 | ### Chart Resizing
173 |
174 | ```jsx
175 | import { useResizeDetector } from 'react-resize-detector';
176 | import { useEffect, useRef } from 'react';
177 |
178 | const Chart = () => {
179 | const chartRef = useRef(null);
180 | const { width, height, ref } = useResizeDetector({
181 | refreshMode: 'debounce',
182 | refreshRate: 100,
183 | });
184 |
185 | useEffect(() => {
186 | if (width && height && chartRef.current) {
187 | // Redraw chart with new dimensions
188 | redrawChart(chartRef.current, width, height);
189 | }
190 | }, [width, height]);
191 |
192 | return ;
193 | };
194 | ```
195 |
196 | ### Performance Optimization
197 |
198 | ```jsx
199 | import { useResizeDetector } from 'react-resize-detector';
200 |
201 | const OptimizedComponent = () => {
202 | const { width, height, ref } = useResizeDetector({
203 | // Only track width changes
204 | handleHeight: false,
205 | // Debounce rapid changes
206 | refreshMode: 'debounce',
207 | refreshRate: 150,
208 | // Skip initial mount calculation
209 | skipOnMount: true,
210 | // Use border-box for more accurate measurements
211 | observerOptions: { box: 'border-box' },
212 | });
213 |
214 | return Optimized: {width}px wide
;
215 | };
216 | ```
217 |
218 | ### Disable Re-renders
219 |
220 | ```jsx
221 | import { useResizeDetector } from 'react-resize-detector';
222 |
223 | const NonRerenderingComponent = () => {
224 | const { ref } = useResizeDetector({
225 | // Disable re-renders triggered by the hook
226 | disableRerender: true,
227 | // Handle resize events through callback only
228 | onResize: ({ width, height }) => {
229 | // Update external state or perform side effects
230 | // without causing component re-renders
231 | console.log('Resized to:', width, height);
232 | },
233 | });
234 |
235 | return This component won't re-render on resize
;
236 | };
237 | ```
238 |
239 | ## Browser Support
240 |
241 | - ✅ Chrome 64+
242 | - ✅ Firefox 69+
243 | - ✅ Safari 13.1+
244 | - ✅ Edge 79+
245 |
246 | For older browsers, consider using a [ResizeObserver polyfill](https://github.com/que-etc/resize-observer-polyfill).
247 |
248 | ## Testing
249 |
250 | ```jsx
251 | const { ResizeObserver } = window;
252 |
253 | beforeEach(() => {
254 | delete window.ResizeObserver;
255 | // Mock ResizeObserver for tests
256 | window.ResizeObserver = jest.fn().mockImplementation(() => ({
257 | observe: jest.fn(),
258 | unobserve: jest.fn(),
259 | disconnect: jest.fn(),
260 | }));
261 | });
262 |
263 | afterEach(() => {
264 | window.ResizeObserver = ResizeObserver;
265 | jest.restoreAllMocks();
266 | });
267 | ```
268 |
269 | ## Performance Tips
270 |
271 | 1. **Use `handleWidth`/`handleHeight: false`** if you only need one dimension
272 | 2. **Enable `skipOnMount: true`** if you don't need initial measurements
273 | 3. **Use `debounce` or `throttle`** for expensive resize handlers
274 | 4. **Specify `observerOptions.box`** for consistent measurements
275 |
276 | ## License
277 |
278 | MIT
279 |
280 | ## ❤️ Support
281 |
282 | Show us some love and STAR ⭐ the project if you find it useful
283 |
--------------------------------------------------------------------------------
/playground/src/Sidebar.tsx:
--------------------------------------------------------------------------------
1 | import { useCallback } from 'react';
2 |
3 | import {
4 | Button,
5 | Code,
6 | Flex,
7 | Heading,
8 | Link,
9 | Tabs,
10 | Text,
11 | Theme,
12 | RadioCards,
13 | Switch,
14 | Spinner,
15 | ScrollArea,
16 | Badge,
17 | Table,
18 | Tooltip,
19 | Callout,
20 | } from '@radix-ui/themes';
21 | import { Github, MessageCircleQuestion, Rocket, WandSparkles } from 'lucide-react';
22 |
23 | import { Box, RefreshModeType, useDemoContext } from './context';
24 | import { Snippet } from './Snippet';
25 |
26 | export const Sidebar = () => {
27 | const {
28 | box,
29 | setBox,
30 | refreshMode,
31 | setRefreshMode,
32 | handleHeight,
33 | setHandleHeight,
34 | handleWidth,
35 | setHandleWidth,
36 | isLoading,
37 | setIsLoading,
38 | disableRerender,
39 | setDisableRerender,
40 | } = useDemoContext();
41 |
42 | const toggleLoading = useCallback(() => {
43 | setIsLoading(true);
44 | setTimeout(() => setIsLoading(false), 1000);
45 | }, []);
46 |
47 | return (
48 |
49 |
348 |
349 | );
350 | };
351 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | es-toolkit:
12 | specifier: ^1.39.6
13 | version: 1.39.6
14 | react:
15 | specifier: ^18.0.0 || ^19.0.0
16 | version: 19.0.0
17 | devDependencies:
18 | '@eslint/js':
19 | specifier: ^9.28.0
20 | version: 9.28.0
21 | '@rollup/plugin-commonjs':
22 | specifier: ^28.0.3
23 | version: 28.0.3(rollup@4.42.0)
24 | '@rollup/plugin-node-resolve':
25 | specifier: ^16.0.1
26 | version: 16.0.1(rollup@4.42.0)
27 | '@rollup/plugin-typescript':
28 | specifier: ^12.1.2
29 | version: 12.1.2(rollup@4.42.0)(tslib@2.8.1)(typescript@5.8.3)
30 | '@types/react':
31 | specifier: ^19.1.7
32 | version: 19.1.7
33 | '@types/react-dom':
34 | specifier: ^19.1.6
35 | version: 19.1.6(@types/react@19.1.7)
36 | eslint:
37 | specifier: ^9.28.0
38 | version: 9.28.0
39 | eslint-config-prettier:
40 | specifier: ^10.1.5
41 | version: 10.1.5(eslint@9.28.0)
42 | eslint-plugin-react:
43 | specifier: ^7.37.5
44 | version: 7.37.5(eslint@9.28.0)
45 | prettier:
46 | specifier: ^3.5.3
47 | version: 3.5.3
48 | rollup:
49 | specifier: ^4.42.0
50 | version: 4.42.0
51 | rollup-plugin-node-externals:
52 | specifier: ^8.0.0
53 | version: 8.0.0(rollup@4.42.0)
54 | tslib:
55 | specifier: ^2.8.1
56 | version: 2.8.1
57 | typescript:
58 | specifier: ^5.8.3
59 | version: 5.8.3
60 | typescript-eslint:
61 | specifier: ^8.34.0
62 | version: 8.34.0(eslint@9.28.0)(typescript@5.8.3)
63 |
64 | packages:
65 |
66 | '@eslint-community/eslint-utils@4.4.1':
67 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==}
68 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
69 | peerDependencies:
70 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
71 |
72 | '@eslint-community/eslint-utils@4.7.0':
73 | resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==}
74 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
75 | peerDependencies:
76 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
77 |
78 | '@eslint-community/regexpp@4.12.1':
79 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
80 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
81 |
82 | '@eslint/config-array@0.20.0':
83 | resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==}
84 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
85 |
86 | '@eslint/config-helpers@0.2.2':
87 | resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==}
88 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
89 |
90 | '@eslint/core@0.14.0':
91 | resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==}
92 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
93 |
94 | '@eslint/eslintrc@3.3.1':
95 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
96 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
97 |
98 | '@eslint/js@9.28.0':
99 | resolution: {integrity: sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==}
100 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
101 |
102 | '@eslint/object-schema@2.1.6':
103 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
104 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
105 |
106 | '@eslint/plugin-kit@0.3.1':
107 | resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==}
108 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
109 |
110 | '@humanfs/core@0.19.1':
111 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
112 | engines: {node: '>=18.18.0'}
113 |
114 | '@humanfs/node@0.16.6':
115 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
116 | engines: {node: '>=18.18.0'}
117 |
118 | '@humanwhocodes/module-importer@1.0.1':
119 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
120 | engines: {node: '>=12.22'}
121 |
122 | '@humanwhocodes/retry@0.3.1':
123 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
124 | engines: {node: '>=18.18'}
125 |
126 | '@humanwhocodes/retry@0.4.3':
127 | resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
128 | engines: {node: '>=18.18'}
129 |
130 | '@jridgewell/sourcemap-codec@1.5.0':
131 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
132 |
133 | '@nodelib/fs.scandir@2.1.5':
134 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
135 | engines: {node: '>= 8'}
136 |
137 | '@nodelib/fs.stat@2.0.5':
138 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
139 | engines: {node: '>= 8'}
140 |
141 | '@nodelib/fs.walk@1.2.8':
142 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
143 | engines: {node: '>= 8'}
144 |
145 | '@rollup/plugin-commonjs@28.0.3':
146 | resolution: {integrity: sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ==}
147 | engines: {node: '>=16.0.0 || 14 >= 14.17'}
148 | peerDependencies:
149 | rollup: ^2.68.0||^3.0.0||^4.0.0
150 | peerDependenciesMeta:
151 | rollup:
152 | optional: true
153 |
154 | '@rollup/plugin-node-resolve@16.0.1':
155 | resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==}
156 | engines: {node: '>=14.0.0'}
157 | peerDependencies:
158 | rollup: ^2.78.0||^3.0.0||^4.0.0
159 | peerDependenciesMeta:
160 | rollup:
161 | optional: true
162 |
163 | '@rollup/plugin-typescript@12.1.2':
164 | resolution: {integrity: sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg==}
165 | engines: {node: '>=14.0.0'}
166 | peerDependencies:
167 | rollup: ^2.14.0||^3.0.0||^4.0.0
168 | tslib: '*'
169 | typescript: '>=3.7.0'
170 | peerDependenciesMeta:
171 | rollup:
172 | optional: true
173 | tslib:
174 | optional: true
175 |
176 | '@rollup/pluginutils@5.1.4':
177 | resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==}
178 | engines: {node: '>=14.0.0'}
179 | peerDependencies:
180 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
181 | peerDependenciesMeta:
182 | rollup:
183 | optional: true
184 |
185 | '@rollup/rollup-android-arm-eabi@4.42.0':
186 | resolution: {integrity: sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ==}
187 | cpu: [arm]
188 | os: [android]
189 |
190 | '@rollup/rollup-android-arm64@4.42.0':
191 | resolution: {integrity: sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw==}
192 | cpu: [arm64]
193 | os: [android]
194 |
195 | '@rollup/rollup-darwin-arm64@4.42.0':
196 | resolution: {integrity: sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA==}
197 | cpu: [arm64]
198 | os: [darwin]
199 |
200 | '@rollup/rollup-darwin-x64@4.42.0':
201 | resolution: {integrity: sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA==}
202 | cpu: [x64]
203 | os: [darwin]
204 |
205 | '@rollup/rollup-freebsd-arm64@4.42.0':
206 | resolution: {integrity: sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ==}
207 | cpu: [arm64]
208 | os: [freebsd]
209 |
210 | '@rollup/rollup-freebsd-x64@4.42.0':
211 | resolution: {integrity: sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ==}
212 | cpu: [x64]
213 | os: [freebsd]
214 |
215 | '@rollup/rollup-linux-arm-gnueabihf@4.42.0':
216 | resolution: {integrity: sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A==}
217 | cpu: [arm]
218 | os: [linux]
219 |
220 | '@rollup/rollup-linux-arm-musleabihf@4.42.0':
221 | resolution: {integrity: sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ==}
222 | cpu: [arm]
223 | os: [linux]
224 |
225 | '@rollup/rollup-linux-arm64-gnu@4.42.0':
226 | resolution: {integrity: sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q==}
227 | cpu: [arm64]
228 | os: [linux]
229 |
230 | '@rollup/rollup-linux-arm64-musl@4.42.0':
231 | resolution: {integrity: sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g==}
232 | cpu: [arm64]
233 | os: [linux]
234 |
235 | '@rollup/rollup-linux-loongarch64-gnu@4.42.0':
236 | resolution: {integrity: sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg==}
237 | cpu: [loong64]
238 | os: [linux]
239 |
240 | '@rollup/rollup-linux-powerpc64le-gnu@4.42.0':
241 | resolution: {integrity: sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA==}
242 | cpu: [ppc64]
243 | os: [linux]
244 |
245 | '@rollup/rollup-linux-riscv64-gnu@4.42.0':
246 | resolution: {integrity: sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA==}
247 | cpu: [riscv64]
248 | os: [linux]
249 |
250 | '@rollup/rollup-linux-riscv64-musl@4.42.0':
251 | resolution: {integrity: sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw==}
252 | cpu: [riscv64]
253 | os: [linux]
254 |
255 | '@rollup/rollup-linux-s390x-gnu@4.42.0':
256 | resolution: {integrity: sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw==}
257 | cpu: [s390x]
258 | os: [linux]
259 |
260 | '@rollup/rollup-linux-x64-gnu@4.42.0':
261 | resolution: {integrity: sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw==}
262 | cpu: [x64]
263 | os: [linux]
264 |
265 | '@rollup/rollup-linux-x64-musl@4.42.0':
266 | resolution: {integrity: sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w==}
267 | cpu: [x64]
268 | os: [linux]
269 |
270 | '@rollup/rollup-win32-arm64-msvc@4.42.0':
271 | resolution: {integrity: sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A==}
272 | cpu: [arm64]
273 | os: [win32]
274 |
275 | '@rollup/rollup-win32-ia32-msvc@4.42.0':
276 | resolution: {integrity: sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g==}
277 | cpu: [ia32]
278 | os: [win32]
279 |
280 | '@rollup/rollup-win32-x64-msvc@4.42.0':
281 | resolution: {integrity: sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA==}
282 | cpu: [x64]
283 | os: [win32]
284 |
285 | '@types/estree@1.0.6':
286 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
287 |
288 | '@types/estree@1.0.7':
289 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
290 |
291 | '@types/json-schema@7.0.15':
292 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
293 |
294 | '@types/react-dom@19.1.6':
295 | resolution: {integrity: sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==}
296 | peerDependencies:
297 | '@types/react': ^19.0.0
298 |
299 | '@types/react@19.1.7':
300 | resolution: {integrity: sha512-BnsPLV43ddr05N71gaGzyZ5hzkCmGwhMvYc8zmvI8Ci1bRkkDSzDDVfAXfN2tk748OwI7ediiPX6PfT9p0QGVg==}
301 |
302 | '@types/resolve@1.20.2':
303 | resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
304 |
305 | '@typescript-eslint/eslint-plugin@8.34.0':
306 | resolution: {integrity: sha512-QXwAlHlbcAwNlEEMKQS2RCgJsgXrTJdjXT08xEgbPFa2yYQgVjBymxP5DrfrE7X7iodSzd9qBUHUycdyVJTW1w==}
307 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
308 | peerDependencies:
309 | '@typescript-eslint/parser': ^8.34.0
310 | eslint: ^8.57.0 || ^9.0.0
311 | typescript: '>=4.8.4 <5.9.0'
312 |
313 | '@typescript-eslint/parser@8.34.0':
314 | resolution: {integrity: sha512-vxXJV1hVFx3IXz/oy2sICsJukaBrtDEQSBiV48/YIV5KWjX1dO+bcIr/kCPrW6weKXvsaGKFNlwH0v2eYdRRbA==}
315 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
316 | peerDependencies:
317 | eslint: ^8.57.0 || ^9.0.0
318 | typescript: '>=4.8.4 <5.9.0'
319 |
320 | '@typescript-eslint/project-service@8.34.0':
321 | resolution: {integrity: sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==}
322 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
323 | peerDependencies:
324 | typescript: '>=4.8.4 <5.9.0'
325 |
326 | '@typescript-eslint/scope-manager@8.34.0':
327 | resolution: {integrity: sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw==}
328 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
329 |
330 | '@typescript-eslint/tsconfig-utils@8.34.0':
331 | resolution: {integrity: sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==}
332 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
333 | peerDependencies:
334 | typescript: '>=4.8.4 <5.9.0'
335 |
336 | '@typescript-eslint/type-utils@8.34.0':
337 | resolution: {integrity: sha512-n7zSmOcUVhcRYC75W2pnPpbO1iwhJY3NLoHEtbJwJSNlVAZuwqu05zY3f3s2SDWWDSo9FdN5szqc73DCtDObAg==}
338 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
339 | peerDependencies:
340 | eslint: ^8.57.0 || ^9.0.0
341 | typescript: '>=4.8.4 <5.9.0'
342 |
343 | '@typescript-eslint/types@8.34.0':
344 | resolution: {integrity: sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA==}
345 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
346 |
347 | '@typescript-eslint/typescript-estree@8.34.0':
348 | resolution: {integrity: sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==}
349 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
350 | peerDependencies:
351 | typescript: '>=4.8.4 <5.9.0'
352 |
353 | '@typescript-eslint/utils@8.34.0':
354 | resolution: {integrity: sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ==}
355 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
356 | peerDependencies:
357 | eslint: ^8.57.0 || ^9.0.0
358 | typescript: '>=4.8.4 <5.9.0'
359 |
360 | '@typescript-eslint/visitor-keys@8.34.0':
361 | resolution: {integrity: sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==}
362 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
363 |
364 | acorn-jsx@5.3.2:
365 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
366 | peerDependencies:
367 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
368 |
369 | acorn@8.14.0:
370 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
371 | engines: {node: '>=0.4.0'}
372 | hasBin: true
373 |
374 | ajv@6.12.6:
375 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
376 |
377 | ansi-styles@4.3.0:
378 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
379 | engines: {node: '>=8'}
380 |
381 | argparse@2.0.1:
382 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
383 |
384 | array-buffer-byte-length@1.0.2:
385 | resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
386 | engines: {node: '>= 0.4'}
387 |
388 | array-includes@3.1.8:
389 | resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
390 | engines: {node: '>= 0.4'}
391 |
392 | array.prototype.findlast@1.2.5:
393 | resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
394 | engines: {node: '>= 0.4'}
395 |
396 | array.prototype.flat@1.3.3:
397 | resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==}
398 | engines: {node: '>= 0.4'}
399 |
400 | array.prototype.flatmap@1.3.3:
401 | resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==}
402 | engines: {node: '>= 0.4'}
403 |
404 | array.prototype.tosorted@1.1.4:
405 | resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
406 | engines: {node: '>= 0.4'}
407 |
408 | arraybuffer.prototype.slice@1.0.4:
409 | resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
410 | engines: {node: '>= 0.4'}
411 |
412 | available-typed-arrays@1.0.7:
413 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
414 | engines: {node: '>= 0.4'}
415 |
416 | balanced-match@1.0.2:
417 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
418 |
419 | brace-expansion@1.1.11:
420 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
421 |
422 | brace-expansion@2.0.1:
423 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
424 |
425 | braces@3.0.3:
426 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
427 | engines: {node: '>=8'}
428 |
429 | call-bind-apply-helpers@1.0.1:
430 | resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==}
431 | engines: {node: '>= 0.4'}
432 |
433 | call-bind-apply-helpers@1.0.2:
434 | resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
435 | engines: {node: '>= 0.4'}
436 |
437 | call-bind@1.0.8:
438 | resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
439 | engines: {node: '>= 0.4'}
440 |
441 | call-bound@1.0.3:
442 | resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==}
443 | engines: {node: '>= 0.4'}
444 |
445 | call-bound@1.0.4:
446 | resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
447 | engines: {node: '>= 0.4'}
448 |
449 | callsites@3.1.0:
450 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
451 | engines: {node: '>=6'}
452 |
453 | chalk@4.1.2:
454 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
455 | engines: {node: '>=10'}
456 |
457 | color-convert@2.0.1:
458 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
459 | engines: {node: '>=7.0.0'}
460 |
461 | color-name@1.1.4:
462 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
463 |
464 | commondir@1.0.1:
465 | resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
466 |
467 | concat-map@0.0.1:
468 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
469 |
470 | cross-spawn@7.0.6:
471 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
472 | engines: {node: '>= 8'}
473 |
474 | csstype@3.1.3:
475 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
476 |
477 | data-view-buffer@1.0.2:
478 | resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
479 | engines: {node: '>= 0.4'}
480 |
481 | data-view-byte-length@1.0.2:
482 | resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
483 | engines: {node: '>= 0.4'}
484 |
485 | data-view-byte-offset@1.0.1:
486 | resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
487 | engines: {node: '>= 0.4'}
488 |
489 | debug@4.4.0:
490 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
491 | engines: {node: '>=6.0'}
492 | peerDependencies:
493 | supports-color: '*'
494 | peerDependenciesMeta:
495 | supports-color:
496 | optional: true
497 |
498 | deep-is@0.1.4:
499 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
500 |
501 | deepmerge@4.3.1:
502 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
503 | engines: {node: '>=0.10.0'}
504 |
505 | define-data-property@1.1.4:
506 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
507 | engines: {node: '>= 0.4'}
508 |
509 | define-properties@1.2.1:
510 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
511 | engines: {node: '>= 0.4'}
512 |
513 | doctrine@2.1.0:
514 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
515 | engines: {node: '>=0.10.0'}
516 |
517 | dunder-proto@1.0.1:
518 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
519 | engines: {node: '>= 0.4'}
520 |
521 | es-abstract@1.23.8:
522 | resolution: {integrity: sha512-lfab8IzDn6EpI1ibZakcgS6WsfEBiB+43cuJo+wgylx1xKXf+Sp+YR3vFuQwC/u3sxYwV8Cxe3B0DpVUu/WiJQ==}
523 | engines: {node: '>= 0.4'}
524 |
525 | es-define-property@1.0.1:
526 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
527 | engines: {node: '>= 0.4'}
528 |
529 | es-errors@1.3.0:
530 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
531 | engines: {node: '>= 0.4'}
532 |
533 | es-iterator-helpers@1.2.1:
534 | resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==}
535 | engines: {node: '>= 0.4'}
536 |
537 | es-object-atoms@1.0.0:
538 | resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
539 | engines: {node: '>= 0.4'}
540 |
541 | es-object-atoms@1.1.1:
542 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
543 | engines: {node: '>= 0.4'}
544 |
545 | es-set-tostringtag@2.0.3:
546 | resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
547 | engines: {node: '>= 0.4'}
548 |
549 | es-shim-unscopables@1.0.2:
550 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
551 |
552 | es-to-primitive@1.3.0:
553 | resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
554 | engines: {node: '>= 0.4'}
555 |
556 | es-toolkit@1.39.6:
557 | resolution: {integrity: sha512-uiVjnLem6kkfXumlwUEWEKnwUN5QbSEB0DHy2rNJt0nkYcob5K0TXJ7oJRzhAcvx+SRmz4TahKyN5V9cly/IPA==}
558 |
559 | escape-string-regexp@4.0.0:
560 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
561 | engines: {node: '>=10'}
562 |
563 | eslint-config-prettier@10.1.5:
564 | resolution: {integrity: sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==}
565 | hasBin: true
566 | peerDependencies:
567 | eslint: '>=7.0.0'
568 |
569 | eslint-plugin-react@7.37.5:
570 | resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==}
571 | engines: {node: '>=4'}
572 | peerDependencies:
573 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
574 |
575 | eslint-scope@8.4.0:
576 | resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
577 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
578 |
579 | eslint-visitor-keys@3.4.3:
580 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
581 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
582 |
583 | eslint-visitor-keys@4.2.0:
584 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
585 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
586 |
587 | eslint@9.28.0:
588 | resolution: {integrity: sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==}
589 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
590 | hasBin: true
591 | peerDependencies:
592 | jiti: '*'
593 | peerDependenciesMeta:
594 | jiti:
595 | optional: true
596 |
597 | espree@10.3.0:
598 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
599 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
600 |
601 | esquery@1.6.0:
602 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
603 | engines: {node: '>=0.10'}
604 |
605 | esrecurse@4.3.0:
606 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
607 | engines: {node: '>=4.0'}
608 |
609 | estraverse@5.3.0:
610 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
611 | engines: {node: '>=4.0'}
612 |
613 | estree-walker@2.0.2:
614 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
615 |
616 | esutils@2.0.3:
617 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
618 | engines: {node: '>=0.10.0'}
619 |
620 | fast-deep-equal@3.1.3:
621 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
622 |
623 | fast-glob@3.3.2:
624 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
625 | engines: {node: '>=8.6.0'}
626 |
627 | fast-json-stable-stringify@2.1.0:
628 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
629 |
630 | fast-levenshtein@2.0.6:
631 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
632 |
633 | fastq@1.18.0:
634 | resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==}
635 |
636 | fdir@6.4.2:
637 | resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==}
638 | peerDependencies:
639 | picomatch: ^3 || ^4
640 | peerDependenciesMeta:
641 | picomatch:
642 | optional: true
643 |
644 | file-entry-cache@8.0.0:
645 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
646 | engines: {node: '>=16.0.0'}
647 |
648 | fill-range@7.1.1:
649 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
650 | engines: {node: '>=8'}
651 |
652 | find-up@5.0.0:
653 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
654 | engines: {node: '>=10'}
655 |
656 | flat-cache@4.0.1:
657 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
658 | engines: {node: '>=16'}
659 |
660 | flatted@3.3.2:
661 | resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==}
662 |
663 | for-each@0.3.3:
664 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
665 |
666 | fsevents@2.3.3:
667 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
668 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
669 | os: [darwin]
670 |
671 | function-bind@1.1.2:
672 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
673 |
674 | function.prototype.name@1.1.8:
675 | resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
676 | engines: {node: '>= 0.4'}
677 |
678 | functions-have-names@1.2.3:
679 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
680 |
681 | get-intrinsic@1.2.6:
682 | resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==}
683 | engines: {node: '>= 0.4'}
684 |
685 | get-intrinsic@1.3.0:
686 | resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
687 | engines: {node: '>= 0.4'}
688 |
689 | get-proto@1.0.1:
690 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
691 | engines: {node: '>= 0.4'}
692 |
693 | get-symbol-description@1.1.0:
694 | resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
695 | engines: {node: '>= 0.4'}
696 |
697 | glob-parent@5.1.2:
698 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
699 | engines: {node: '>= 6'}
700 |
701 | glob-parent@6.0.2:
702 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
703 | engines: {node: '>=10.13.0'}
704 |
705 | globals@14.0.0:
706 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
707 | engines: {node: '>=18'}
708 |
709 | globalthis@1.0.4:
710 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
711 | engines: {node: '>= 0.4'}
712 |
713 | gopd@1.2.0:
714 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
715 | engines: {node: '>= 0.4'}
716 |
717 | graphemer@1.4.0:
718 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
719 |
720 | has-bigints@1.1.0:
721 | resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
722 | engines: {node: '>= 0.4'}
723 |
724 | has-flag@4.0.0:
725 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
726 | engines: {node: '>=8'}
727 |
728 | has-property-descriptors@1.0.2:
729 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
730 |
731 | has-proto@1.2.0:
732 | resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
733 | engines: {node: '>= 0.4'}
734 |
735 | has-symbols@1.1.0:
736 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
737 | engines: {node: '>= 0.4'}
738 |
739 | has-tostringtag@1.0.2:
740 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
741 | engines: {node: '>= 0.4'}
742 |
743 | hasown@2.0.2:
744 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
745 | engines: {node: '>= 0.4'}
746 |
747 | ignore@5.3.2:
748 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
749 | engines: {node: '>= 4'}
750 |
751 | ignore@7.0.5:
752 | resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
753 | engines: {node: '>= 4'}
754 |
755 | import-fresh@3.3.0:
756 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
757 | engines: {node: '>=6'}
758 |
759 | imurmurhash@0.1.4:
760 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
761 | engines: {node: '>=0.8.19'}
762 |
763 | internal-slot@1.1.0:
764 | resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
765 | engines: {node: '>= 0.4'}
766 |
767 | is-array-buffer@3.0.5:
768 | resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
769 | engines: {node: '>= 0.4'}
770 |
771 | is-async-function@2.0.0:
772 | resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
773 | engines: {node: '>= 0.4'}
774 |
775 | is-bigint@1.1.0:
776 | resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
777 | engines: {node: '>= 0.4'}
778 |
779 | is-boolean-object@1.2.1:
780 | resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==}
781 | engines: {node: '>= 0.4'}
782 |
783 | is-callable@1.2.7:
784 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
785 | engines: {node: '>= 0.4'}
786 |
787 | is-core-module@2.16.1:
788 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
789 | engines: {node: '>= 0.4'}
790 |
791 | is-data-view@1.0.2:
792 | resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
793 | engines: {node: '>= 0.4'}
794 |
795 | is-date-object@1.1.0:
796 | resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
797 | engines: {node: '>= 0.4'}
798 |
799 | is-extglob@2.1.1:
800 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
801 | engines: {node: '>=0.10.0'}
802 |
803 | is-finalizationregistry@1.1.1:
804 | resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
805 | engines: {node: '>= 0.4'}
806 |
807 | is-generator-function@1.0.10:
808 | resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
809 | engines: {node: '>= 0.4'}
810 |
811 | is-glob@4.0.3:
812 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
813 | engines: {node: '>=0.10.0'}
814 |
815 | is-map@2.0.3:
816 | resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
817 | engines: {node: '>= 0.4'}
818 |
819 | is-module@1.0.0:
820 | resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
821 |
822 | is-number-object@1.1.1:
823 | resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
824 | engines: {node: '>= 0.4'}
825 |
826 | is-number@7.0.0:
827 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
828 | engines: {node: '>=0.12.0'}
829 |
830 | is-reference@1.2.1:
831 | resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
832 |
833 | is-regex@1.2.1:
834 | resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
835 | engines: {node: '>= 0.4'}
836 |
837 | is-set@2.0.3:
838 | resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
839 | engines: {node: '>= 0.4'}
840 |
841 | is-shared-array-buffer@1.0.4:
842 | resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
843 | engines: {node: '>= 0.4'}
844 |
845 | is-string@1.1.1:
846 | resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
847 | engines: {node: '>= 0.4'}
848 |
849 | is-symbol@1.1.1:
850 | resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
851 | engines: {node: '>= 0.4'}
852 |
853 | is-typed-array@1.1.15:
854 | resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
855 | engines: {node: '>= 0.4'}
856 |
857 | is-weakmap@2.0.2:
858 | resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
859 | engines: {node: '>= 0.4'}
860 |
861 | is-weakref@1.1.0:
862 | resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==}
863 | engines: {node: '>= 0.4'}
864 |
865 | is-weakset@2.0.4:
866 | resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
867 | engines: {node: '>= 0.4'}
868 |
869 | isarray@2.0.5:
870 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
871 |
872 | isexe@2.0.0:
873 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
874 |
875 | iterator.prototype@1.1.4:
876 | resolution: {integrity: sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==}
877 | engines: {node: '>= 0.4'}
878 |
879 | js-tokens@4.0.0:
880 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
881 |
882 | js-yaml@4.1.0:
883 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
884 | hasBin: true
885 |
886 | json-buffer@3.0.1:
887 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
888 |
889 | json-schema-traverse@0.4.1:
890 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
891 |
892 | json-stable-stringify-without-jsonify@1.0.1:
893 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
894 |
895 | jsx-ast-utils@3.3.5:
896 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
897 | engines: {node: '>=4.0'}
898 |
899 | keyv@4.5.4:
900 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
901 |
902 | levn@0.4.1:
903 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
904 | engines: {node: '>= 0.8.0'}
905 |
906 | locate-path@6.0.0:
907 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
908 | engines: {node: '>=10'}
909 |
910 | lodash.merge@4.6.2:
911 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
912 |
913 | loose-envify@1.4.0:
914 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
915 | hasBin: true
916 |
917 | magic-string@0.30.17:
918 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
919 |
920 | math-intrinsics@1.1.0:
921 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
922 | engines: {node: '>= 0.4'}
923 |
924 | merge2@1.4.1:
925 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
926 | engines: {node: '>= 8'}
927 |
928 | micromatch@4.0.8:
929 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
930 | engines: {node: '>=8.6'}
931 |
932 | minimatch@3.1.2:
933 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
934 |
935 | minimatch@9.0.5:
936 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
937 | engines: {node: '>=16 || 14 >=14.17'}
938 |
939 | ms@2.1.3:
940 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
941 |
942 | natural-compare@1.4.0:
943 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
944 |
945 | object-assign@4.1.1:
946 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
947 | engines: {node: '>=0.10.0'}
948 |
949 | object-inspect@1.13.3:
950 | resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==}
951 | engines: {node: '>= 0.4'}
952 |
953 | object-keys@1.1.1:
954 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
955 | engines: {node: '>= 0.4'}
956 |
957 | object.assign@4.1.7:
958 | resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
959 | engines: {node: '>= 0.4'}
960 |
961 | object.entries@1.1.9:
962 | resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==}
963 | engines: {node: '>= 0.4'}
964 |
965 | object.fromentries@2.0.8:
966 | resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
967 | engines: {node: '>= 0.4'}
968 |
969 | object.values@1.2.1:
970 | resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
971 | engines: {node: '>= 0.4'}
972 |
973 | optionator@0.9.4:
974 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
975 | engines: {node: '>= 0.8.0'}
976 |
977 | own-keys@1.0.1:
978 | resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
979 | engines: {node: '>= 0.4'}
980 |
981 | p-limit@3.1.0:
982 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
983 | engines: {node: '>=10'}
984 |
985 | p-locate@5.0.0:
986 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
987 | engines: {node: '>=10'}
988 |
989 | parent-module@1.0.1:
990 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
991 | engines: {node: '>=6'}
992 |
993 | path-exists@4.0.0:
994 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
995 | engines: {node: '>=8'}
996 |
997 | path-key@3.1.1:
998 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
999 | engines: {node: '>=8'}
1000 |
1001 | path-parse@1.0.7:
1002 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1003 |
1004 | picomatch@2.3.1:
1005 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1006 | engines: {node: '>=8.6'}
1007 |
1008 | picomatch@4.0.2:
1009 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
1010 | engines: {node: '>=12'}
1011 |
1012 | possible-typed-array-names@1.0.0:
1013 | resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
1014 | engines: {node: '>= 0.4'}
1015 |
1016 | prelude-ls@1.2.1:
1017 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1018 | engines: {node: '>= 0.8.0'}
1019 |
1020 | prettier@3.5.3:
1021 | resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==}
1022 | engines: {node: '>=14'}
1023 | hasBin: true
1024 |
1025 | prop-types@15.8.1:
1026 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
1027 |
1028 | punycode@2.3.1:
1029 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1030 | engines: {node: '>=6'}
1031 |
1032 | queue-microtask@1.2.3:
1033 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1034 |
1035 | react-is@16.13.1:
1036 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
1037 |
1038 | react@19.0.0:
1039 | resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
1040 | engines: {node: '>=0.10.0'}
1041 |
1042 | reflect.getprototypeof@1.0.9:
1043 | resolution: {integrity: sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==}
1044 | engines: {node: '>= 0.4'}
1045 |
1046 | regexp.prototype.flags@1.5.3:
1047 | resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==}
1048 | engines: {node: '>= 0.4'}
1049 |
1050 | resolve-from@4.0.0:
1051 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1052 | engines: {node: '>=4'}
1053 |
1054 | resolve@1.22.10:
1055 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
1056 | engines: {node: '>= 0.4'}
1057 | hasBin: true
1058 |
1059 | resolve@2.0.0-next.5:
1060 | resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
1061 | hasBin: true
1062 |
1063 | reusify@1.0.4:
1064 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1065 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1066 |
1067 | rollup-plugin-node-externals@8.0.0:
1068 | resolution: {integrity: sha512-2HIOpWsWn5DqBoYl6iCAmB4kd5GoGbF68PR4xKR1YBPvywiqjtYvDEjHFodyqRL51iAMDITP074Zxs0OKs6F+g==}
1069 | engines: {node: '>= 21 || ^20.6.0 || ^18.19.0'}
1070 | peerDependencies:
1071 | rollup: ^4.0.0
1072 |
1073 | rollup@4.42.0:
1074 | resolution: {integrity: sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==}
1075 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1076 | hasBin: true
1077 |
1078 | run-parallel@1.2.0:
1079 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1080 |
1081 | safe-array-concat@1.1.3:
1082 | resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
1083 | engines: {node: '>=0.4'}
1084 |
1085 | safe-push-apply@1.0.0:
1086 | resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
1087 | engines: {node: '>= 0.4'}
1088 |
1089 | safe-regex-test@1.1.0:
1090 | resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
1091 | engines: {node: '>= 0.4'}
1092 |
1093 | semver@6.3.1:
1094 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
1095 | hasBin: true
1096 |
1097 | semver@7.6.3:
1098 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
1099 | engines: {node: '>=10'}
1100 | hasBin: true
1101 |
1102 | set-function-length@1.2.2:
1103 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
1104 | engines: {node: '>= 0.4'}
1105 |
1106 | set-function-name@2.0.2:
1107 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
1108 | engines: {node: '>= 0.4'}
1109 |
1110 | shebang-command@2.0.0:
1111 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1112 | engines: {node: '>=8'}
1113 |
1114 | shebang-regex@3.0.0:
1115 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1116 | engines: {node: '>=8'}
1117 |
1118 | side-channel-list@1.0.0:
1119 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
1120 | engines: {node: '>= 0.4'}
1121 |
1122 | side-channel-map@1.0.1:
1123 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
1124 | engines: {node: '>= 0.4'}
1125 |
1126 | side-channel-weakmap@1.0.2:
1127 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
1128 | engines: {node: '>= 0.4'}
1129 |
1130 | side-channel@1.1.0:
1131 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
1132 | engines: {node: '>= 0.4'}
1133 |
1134 | string.prototype.matchall@4.0.12:
1135 | resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==}
1136 | engines: {node: '>= 0.4'}
1137 |
1138 | string.prototype.repeat@1.0.0:
1139 | resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
1140 |
1141 | string.prototype.trim@1.2.10:
1142 | resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
1143 | engines: {node: '>= 0.4'}
1144 |
1145 | string.prototype.trimend@1.0.9:
1146 | resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
1147 | engines: {node: '>= 0.4'}
1148 |
1149 | string.prototype.trimstart@1.0.8:
1150 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
1151 | engines: {node: '>= 0.4'}
1152 |
1153 | strip-json-comments@3.1.1:
1154 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1155 | engines: {node: '>=8'}
1156 |
1157 | supports-color@7.2.0:
1158 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1159 | engines: {node: '>=8'}
1160 |
1161 | supports-preserve-symlinks-flag@1.0.0:
1162 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1163 | engines: {node: '>= 0.4'}
1164 |
1165 | to-regex-range@5.0.1:
1166 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1167 | engines: {node: '>=8.0'}
1168 |
1169 | ts-api-utils@2.1.0:
1170 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==}
1171 | engines: {node: '>=18.12'}
1172 | peerDependencies:
1173 | typescript: '>=4.8.4'
1174 |
1175 | tslib@2.8.1:
1176 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
1177 |
1178 | type-check@0.4.0:
1179 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1180 | engines: {node: '>= 0.8.0'}
1181 |
1182 | typed-array-buffer@1.0.3:
1183 | resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
1184 | engines: {node: '>= 0.4'}
1185 |
1186 | typed-array-byte-length@1.0.3:
1187 | resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
1188 | engines: {node: '>= 0.4'}
1189 |
1190 | typed-array-byte-offset@1.0.4:
1191 | resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
1192 | engines: {node: '>= 0.4'}
1193 |
1194 | typed-array-length@1.0.7:
1195 | resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
1196 | engines: {node: '>= 0.4'}
1197 |
1198 | typescript-eslint@8.34.0:
1199 | resolution: {integrity: sha512-MRpfN7uYjTrTGigFCt8sRyNqJFhjN0WwZecldaqhWm+wy0gaRt8Edb/3cuUy0zdq2opJWT6iXINKAtewnDOltQ==}
1200 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1201 | peerDependencies:
1202 | eslint: ^8.57.0 || ^9.0.0
1203 | typescript: '>=4.8.4 <5.9.0'
1204 |
1205 | typescript@5.8.3:
1206 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
1207 | engines: {node: '>=14.17'}
1208 | hasBin: true
1209 |
1210 | unbox-primitive@1.1.0:
1211 | resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
1212 | engines: {node: '>= 0.4'}
1213 |
1214 | uri-js@4.4.1:
1215 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1216 |
1217 | which-boxed-primitive@1.1.1:
1218 | resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
1219 | engines: {node: '>= 0.4'}
1220 |
1221 | which-builtin-type@1.2.1:
1222 | resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
1223 | engines: {node: '>= 0.4'}
1224 |
1225 | which-collection@1.0.2:
1226 | resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
1227 | engines: {node: '>= 0.4'}
1228 |
1229 | which-typed-array@1.1.18:
1230 | resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==}
1231 | engines: {node: '>= 0.4'}
1232 |
1233 | which@2.0.2:
1234 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1235 | engines: {node: '>= 8'}
1236 | hasBin: true
1237 |
1238 | word-wrap@1.2.5:
1239 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
1240 | engines: {node: '>=0.10.0'}
1241 |
1242 | yocto-queue@0.1.0:
1243 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1244 | engines: {node: '>=10'}
1245 |
1246 | snapshots:
1247 |
1248 | '@eslint-community/eslint-utils@4.4.1(eslint@9.28.0)':
1249 | dependencies:
1250 | eslint: 9.28.0
1251 | eslint-visitor-keys: 3.4.3
1252 |
1253 | '@eslint-community/eslint-utils@4.7.0(eslint@9.28.0)':
1254 | dependencies:
1255 | eslint: 9.28.0
1256 | eslint-visitor-keys: 3.4.3
1257 |
1258 | '@eslint-community/regexpp@4.12.1': {}
1259 |
1260 | '@eslint/config-array@0.20.0':
1261 | dependencies:
1262 | '@eslint/object-schema': 2.1.6
1263 | debug: 4.4.0
1264 | minimatch: 3.1.2
1265 | transitivePeerDependencies:
1266 | - supports-color
1267 |
1268 | '@eslint/config-helpers@0.2.2': {}
1269 |
1270 | '@eslint/core@0.14.0':
1271 | dependencies:
1272 | '@types/json-schema': 7.0.15
1273 |
1274 | '@eslint/eslintrc@3.3.1':
1275 | dependencies:
1276 | ajv: 6.12.6
1277 | debug: 4.4.0
1278 | espree: 10.3.0
1279 | globals: 14.0.0
1280 | ignore: 5.3.2
1281 | import-fresh: 3.3.0
1282 | js-yaml: 4.1.0
1283 | minimatch: 3.1.2
1284 | strip-json-comments: 3.1.1
1285 | transitivePeerDependencies:
1286 | - supports-color
1287 |
1288 | '@eslint/js@9.28.0': {}
1289 |
1290 | '@eslint/object-schema@2.1.6': {}
1291 |
1292 | '@eslint/plugin-kit@0.3.1':
1293 | dependencies:
1294 | '@eslint/core': 0.14.0
1295 | levn: 0.4.1
1296 |
1297 | '@humanfs/core@0.19.1': {}
1298 |
1299 | '@humanfs/node@0.16.6':
1300 | dependencies:
1301 | '@humanfs/core': 0.19.1
1302 | '@humanwhocodes/retry': 0.3.1
1303 |
1304 | '@humanwhocodes/module-importer@1.0.1': {}
1305 |
1306 | '@humanwhocodes/retry@0.3.1': {}
1307 |
1308 | '@humanwhocodes/retry@0.4.3': {}
1309 |
1310 | '@jridgewell/sourcemap-codec@1.5.0': {}
1311 |
1312 | '@nodelib/fs.scandir@2.1.5':
1313 | dependencies:
1314 | '@nodelib/fs.stat': 2.0.5
1315 | run-parallel: 1.2.0
1316 |
1317 | '@nodelib/fs.stat@2.0.5': {}
1318 |
1319 | '@nodelib/fs.walk@1.2.8':
1320 | dependencies:
1321 | '@nodelib/fs.scandir': 2.1.5
1322 | fastq: 1.18.0
1323 |
1324 | '@rollup/plugin-commonjs@28.0.3(rollup@4.42.0)':
1325 | dependencies:
1326 | '@rollup/pluginutils': 5.1.4(rollup@4.42.0)
1327 | commondir: 1.0.1
1328 | estree-walker: 2.0.2
1329 | fdir: 6.4.2(picomatch@4.0.2)
1330 | is-reference: 1.2.1
1331 | magic-string: 0.30.17
1332 | picomatch: 4.0.2
1333 | optionalDependencies:
1334 | rollup: 4.42.0
1335 |
1336 | '@rollup/plugin-node-resolve@16.0.1(rollup@4.42.0)':
1337 | dependencies:
1338 | '@rollup/pluginutils': 5.1.4(rollup@4.42.0)
1339 | '@types/resolve': 1.20.2
1340 | deepmerge: 4.3.1
1341 | is-module: 1.0.0
1342 | resolve: 1.22.10
1343 | optionalDependencies:
1344 | rollup: 4.42.0
1345 |
1346 | '@rollup/plugin-typescript@12.1.2(rollup@4.42.0)(tslib@2.8.1)(typescript@5.8.3)':
1347 | dependencies:
1348 | '@rollup/pluginutils': 5.1.4(rollup@4.42.0)
1349 | resolve: 1.22.10
1350 | typescript: 5.8.3
1351 | optionalDependencies:
1352 | rollup: 4.42.0
1353 | tslib: 2.8.1
1354 |
1355 | '@rollup/pluginutils@5.1.4(rollup@4.42.0)':
1356 | dependencies:
1357 | '@types/estree': 1.0.6
1358 | estree-walker: 2.0.2
1359 | picomatch: 4.0.2
1360 | optionalDependencies:
1361 | rollup: 4.42.0
1362 |
1363 | '@rollup/rollup-android-arm-eabi@4.42.0':
1364 | optional: true
1365 |
1366 | '@rollup/rollup-android-arm64@4.42.0':
1367 | optional: true
1368 |
1369 | '@rollup/rollup-darwin-arm64@4.42.0':
1370 | optional: true
1371 |
1372 | '@rollup/rollup-darwin-x64@4.42.0':
1373 | optional: true
1374 |
1375 | '@rollup/rollup-freebsd-arm64@4.42.0':
1376 | optional: true
1377 |
1378 | '@rollup/rollup-freebsd-x64@4.42.0':
1379 | optional: true
1380 |
1381 | '@rollup/rollup-linux-arm-gnueabihf@4.42.0':
1382 | optional: true
1383 |
1384 | '@rollup/rollup-linux-arm-musleabihf@4.42.0':
1385 | optional: true
1386 |
1387 | '@rollup/rollup-linux-arm64-gnu@4.42.0':
1388 | optional: true
1389 |
1390 | '@rollup/rollup-linux-arm64-musl@4.42.0':
1391 | optional: true
1392 |
1393 | '@rollup/rollup-linux-loongarch64-gnu@4.42.0':
1394 | optional: true
1395 |
1396 | '@rollup/rollup-linux-powerpc64le-gnu@4.42.0':
1397 | optional: true
1398 |
1399 | '@rollup/rollup-linux-riscv64-gnu@4.42.0':
1400 | optional: true
1401 |
1402 | '@rollup/rollup-linux-riscv64-musl@4.42.0':
1403 | optional: true
1404 |
1405 | '@rollup/rollup-linux-s390x-gnu@4.42.0':
1406 | optional: true
1407 |
1408 | '@rollup/rollup-linux-x64-gnu@4.42.0':
1409 | optional: true
1410 |
1411 | '@rollup/rollup-linux-x64-musl@4.42.0':
1412 | optional: true
1413 |
1414 | '@rollup/rollup-win32-arm64-msvc@4.42.0':
1415 | optional: true
1416 |
1417 | '@rollup/rollup-win32-ia32-msvc@4.42.0':
1418 | optional: true
1419 |
1420 | '@rollup/rollup-win32-x64-msvc@4.42.0':
1421 | optional: true
1422 |
1423 | '@types/estree@1.0.6': {}
1424 |
1425 | '@types/estree@1.0.7': {}
1426 |
1427 | '@types/json-schema@7.0.15': {}
1428 |
1429 | '@types/react-dom@19.1.6(@types/react@19.1.7)':
1430 | dependencies:
1431 | '@types/react': 19.1.7
1432 |
1433 | '@types/react@19.1.7':
1434 | dependencies:
1435 | csstype: 3.1.3
1436 |
1437 | '@types/resolve@1.20.2': {}
1438 |
1439 | '@typescript-eslint/eslint-plugin@8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3)':
1440 | dependencies:
1441 | '@eslint-community/regexpp': 4.12.1
1442 | '@typescript-eslint/parser': 8.34.0(eslint@9.28.0)(typescript@5.8.3)
1443 | '@typescript-eslint/scope-manager': 8.34.0
1444 | '@typescript-eslint/type-utils': 8.34.0(eslint@9.28.0)(typescript@5.8.3)
1445 | '@typescript-eslint/utils': 8.34.0(eslint@9.28.0)(typescript@5.8.3)
1446 | '@typescript-eslint/visitor-keys': 8.34.0
1447 | eslint: 9.28.0
1448 | graphemer: 1.4.0
1449 | ignore: 7.0.5
1450 | natural-compare: 1.4.0
1451 | ts-api-utils: 2.1.0(typescript@5.8.3)
1452 | typescript: 5.8.3
1453 | transitivePeerDependencies:
1454 | - supports-color
1455 |
1456 | '@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3)':
1457 | dependencies:
1458 | '@typescript-eslint/scope-manager': 8.34.0
1459 | '@typescript-eslint/types': 8.34.0
1460 | '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.8.3)
1461 | '@typescript-eslint/visitor-keys': 8.34.0
1462 | debug: 4.4.0
1463 | eslint: 9.28.0
1464 | typescript: 5.8.3
1465 | transitivePeerDependencies:
1466 | - supports-color
1467 |
1468 | '@typescript-eslint/project-service@8.34.0(typescript@5.8.3)':
1469 | dependencies:
1470 | '@typescript-eslint/tsconfig-utils': 8.34.0(typescript@5.8.3)
1471 | '@typescript-eslint/types': 8.34.0
1472 | debug: 4.4.0
1473 | typescript: 5.8.3
1474 | transitivePeerDependencies:
1475 | - supports-color
1476 |
1477 | '@typescript-eslint/scope-manager@8.34.0':
1478 | dependencies:
1479 | '@typescript-eslint/types': 8.34.0
1480 | '@typescript-eslint/visitor-keys': 8.34.0
1481 |
1482 | '@typescript-eslint/tsconfig-utils@8.34.0(typescript@5.8.3)':
1483 | dependencies:
1484 | typescript: 5.8.3
1485 |
1486 | '@typescript-eslint/type-utils@8.34.0(eslint@9.28.0)(typescript@5.8.3)':
1487 | dependencies:
1488 | '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.8.3)
1489 | '@typescript-eslint/utils': 8.34.0(eslint@9.28.0)(typescript@5.8.3)
1490 | debug: 4.4.0
1491 | eslint: 9.28.0
1492 | ts-api-utils: 2.1.0(typescript@5.8.3)
1493 | typescript: 5.8.3
1494 | transitivePeerDependencies:
1495 | - supports-color
1496 |
1497 | '@typescript-eslint/types@8.34.0': {}
1498 |
1499 | '@typescript-eslint/typescript-estree@8.34.0(typescript@5.8.3)':
1500 | dependencies:
1501 | '@typescript-eslint/project-service': 8.34.0(typescript@5.8.3)
1502 | '@typescript-eslint/tsconfig-utils': 8.34.0(typescript@5.8.3)
1503 | '@typescript-eslint/types': 8.34.0
1504 | '@typescript-eslint/visitor-keys': 8.34.0
1505 | debug: 4.4.0
1506 | fast-glob: 3.3.2
1507 | is-glob: 4.0.3
1508 | minimatch: 9.0.5
1509 | semver: 7.6.3
1510 | ts-api-utils: 2.1.0(typescript@5.8.3)
1511 | typescript: 5.8.3
1512 | transitivePeerDependencies:
1513 | - supports-color
1514 |
1515 | '@typescript-eslint/utils@8.34.0(eslint@9.28.0)(typescript@5.8.3)':
1516 | dependencies:
1517 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0)
1518 | '@typescript-eslint/scope-manager': 8.34.0
1519 | '@typescript-eslint/types': 8.34.0
1520 | '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.8.3)
1521 | eslint: 9.28.0
1522 | typescript: 5.8.3
1523 | transitivePeerDependencies:
1524 | - supports-color
1525 |
1526 | '@typescript-eslint/visitor-keys@8.34.0':
1527 | dependencies:
1528 | '@typescript-eslint/types': 8.34.0
1529 | eslint-visitor-keys: 4.2.0
1530 |
1531 | acorn-jsx@5.3.2(acorn@8.14.0):
1532 | dependencies:
1533 | acorn: 8.14.0
1534 |
1535 | acorn@8.14.0: {}
1536 |
1537 | ajv@6.12.6:
1538 | dependencies:
1539 | fast-deep-equal: 3.1.3
1540 | fast-json-stable-stringify: 2.1.0
1541 | json-schema-traverse: 0.4.1
1542 | uri-js: 4.4.1
1543 |
1544 | ansi-styles@4.3.0:
1545 | dependencies:
1546 | color-convert: 2.0.1
1547 |
1548 | argparse@2.0.1: {}
1549 |
1550 | array-buffer-byte-length@1.0.2:
1551 | dependencies:
1552 | call-bound: 1.0.3
1553 | is-array-buffer: 3.0.5
1554 |
1555 | array-includes@3.1.8:
1556 | dependencies:
1557 | call-bind: 1.0.8
1558 | define-properties: 1.2.1
1559 | es-abstract: 1.23.8
1560 | es-object-atoms: 1.0.0
1561 | get-intrinsic: 1.2.6
1562 | is-string: 1.1.1
1563 |
1564 | array.prototype.findlast@1.2.5:
1565 | dependencies:
1566 | call-bind: 1.0.8
1567 | define-properties: 1.2.1
1568 | es-abstract: 1.23.8
1569 | es-errors: 1.3.0
1570 | es-object-atoms: 1.0.0
1571 | es-shim-unscopables: 1.0.2
1572 |
1573 | array.prototype.flat@1.3.3:
1574 | dependencies:
1575 | call-bind: 1.0.8
1576 | define-properties: 1.2.1
1577 | es-abstract: 1.23.8
1578 | es-shim-unscopables: 1.0.2
1579 |
1580 | array.prototype.flatmap@1.3.3:
1581 | dependencies:
1582 | call-bind: 1.0.8
1583 | define-properties: 1.2.1
1584 | es-abstract: 1.23.8
1585 | es-shim-unscopables: 1.0.2
1586 |
1587 | array.prototype.tosorted@1.1.4:
1588 | dependencies:
1589 | call-bind: 1.0.8
1590 | define-properties: 1.2.1
1591 | es-abstract: 1.23.8
1592 | es-errors: 1.3.0
1593 | es-shim-unscopables: 1.0.2
1594 |
1595 | arraybuffer.prototype.slice@1.0.4:
1596 | dependencies:
1597 | array-buffer-byte-length: 1.0.2
1598 | call-bind: 1.0.8
1599 | define-properties: 1.2.1
1600 | es-abstract: 1.23.8
1601 | es-errors: 1.3.0
1602 | get-intrinsic: 1.2.6
1603 | is-array-buffer: 3.0.5
1604 |
1605 | available-typed-arrays@1.0.7:
1606 | dependencies:
1607 | possible-typed-array-names: 1.0.0
1608 |
1609 | balanced-match@1.0.2: {}
1610 |
1611 | brace-expansion@1.1.11:
1612 | dependencies:
1613 | balanced-match: 1.0.2
1614 | concat-map: 0.0.1
1615 |
1616 | brace-expansion@2.0.1:
1617 | dependencies:
1618 | balanced-match: 1.0.2
1619 |
1620 | braces@3.0.3:
1621 | dependencies:
1622 | fill-range: 7.1.1
1623 |
1624 | call-bind-apply-helpers@1.0.1:
1625 | dependencies:
1626 | es-errors: 1.3.0
1627 | function-bind: 1.1.2
1628 |
1629 | call-bind-apply-helpers@1.0.2:
1630 | dependencies:
1631 | es-errors: 1.3.0
1632 | function-bind: 1.1.2
1633 |
1634 | call-bind@1.0.8:
1635 | dependencies:
1636 | call-bind-apply-helpers: 1.0.1
1637 | es-define-property: 1.0.1
1638 | get-intrinsic: 1.2.6
1639 | set-function-length: 1.2.2
1640 |
1641 | call-bound@1.0.3:
1642 | dependencies:
1643 | call-bind-apply-helpers: 1.0.1
1644 | get-intrinsic: 1.2.6
1645 |
1646 | call-bound@1.0.4:
1647 | dependencies:
1648 | call-bind-apply-helpers: 1.0.2
1649 | get-intrinsic: 1.3.0
1650 |
1651 | callsites@3.1.0: {}
1652 |
1653 | chalk@4.1.2:
1654 | dependencies:
1655 | ansi-styles: 4.3.0
1656 | supports-color: 7.2.0
1657 |
1658 | color-convert@2.0.1:
1659 | dependencies:
1660 | color-name: 1.1.4
1661 |
1662 | color-name@1.1.4: {}
1663 |
1664 | commondir@1.0.1: {}
1665 |
1666 | concat-map@0.0.1: {}
1667 |
1668 | cross-spawn@7.0.6:
1669 | dependencies:
1670 | path-key: 3.1.1
1671 | shebang-command: 2.0.0
1672 | which: 2.0.2
1673 |
1674 | csstype@3.1.3: {}
1675 |
1676 | data-view-buffer@1.0.2:
1677 | dependencies:
1678 | call-bound: 1.0.3
1679 | es-errors: 1.3.0
1680 | is-data-view: 1.0.2
1681 |
1682 | data-view-byte-length@1.0.2:
1683 | dependencies:
1684 | call-bound: 1.0.3
1685 | es-errors: 1.3.0
1686 | is-data-view: 1.0.2
1687 |
1688 | data-view-byte-offset@1.0.1:
1689 | dependencies:
1690 | call-bound: 1.0.3
1691 | es-errors: 1.3.0
1692 | is-data-view: 1.0.2
1693 |
1694 | debug@4.4.0:
1695 | dependencies:
1696 | ms: 2.1.3
1697 |
1698 | deep-is@0.1.4: {}
1699 |
1700 | deepmerge@4.3.1: {}
1701 |
1702 | define-data-property@1.1.4:
1703 | dependencies:
1704 | es-define-property: 1.0.1
1705 | es-errors: 1.3.0
1706 | gopd: 1.2.0
1707 |
1708 | define-properties@1.2.1:
1709 | dependencies:
1710 | define-data-property: 1.1.4
1711 | has-property-descriptors: 1.0.2
1712 | object-keys: 1.1.1
1713 |
1714 | doctrine@2.1.0:
1715 | dependencies:
1716 | esutils: 2.0.3
1717 |
1718 | dunder-proto@1.0.1:
1719 | dependencies:
1720 | call-bind-apply-helpers: 1.0.1
1721 | es-errors: 1.3.0
1722 | gopd: 1.2.0
1723 |
1724 | es-abstract@1.23.8:
1725 | dependencies:
1726 | array-buffer-byte-length: 1.0.2
1727 | arraybuffer.prototype.slice: 1.0.4
1728 | available-typed-arrays: 1.0.7
1729 | call-bind: 1.0.8
1730 | call-bound: 1.0.3
1731 | data-view-buffer: 1.0.2
1732 | data-view-byte-length: 1.0.2
1733 | data-view-byte-offset: 1.0.1
1734 | es-define-property: 1.0.1
1735 | es-errors: 1.3.0
1736 | es-object-atoms: 1.0.0
1737 | es-set-tostringtag: 2.0.3
1738 | es-to-primitive: 1.3.0
1739 | function.prototype.name: 1.1.8
1740 | get-intrinsic: 1.2.6
1741 | get-symbol-description: 1.1.0
1742 | globalthis: 1.0.4
1743 | gopd: 1.2.0
1744 | has-property-descriptors: 1.0.2
1745 | has-proto: 1.2.0
1746 | has-symbols: 1.1.0
1747 | hasown: 2.0.2
1748 | internal-slot: 1.1.0
1749 | is-array-buffer: 3.0.5
1750 | is-callable: 1.2.7
1751 | is-data-view: 1.0.2
1752 | is-regex: 1.2.1
1753 | is-shared-array-buffer: 1.0.4
1754 | is-string: 1.1.1
1755 | is-typed-array: 1.1.15
1756 | is-weakref: 1.1.0
1757 | math-intrinsics: 1.1.0
1758 | object-inspect: 1.13.3
1759 | object-keys: 1.1.1
1760 | object.assign: 4.1.7
1761 | own-keys: 1.0.1
1762 | regexp.prototype.flags: 1.5.3
1763 | safe-array-concat: 1.1.3
1764 | safe-push-apply: 1.0.0
1765 | safe-regex-test: 1.1.0
1766 | string.prototype.trim: 1.2.10
1767 | string.prototype.trimend: 1.0.9
1768 | string.prototype.trimstart: 1.0.8
1769 | typed-array-buffer: 1.0.3
1770 | typed-array-byte-length: 1.0.3
1771 | typed-array-byte-offset: 1.0.4
1772 | typed-array-length: 1.0.7
1773 | unbox-primitive: 1.1.0
1774 | which-typed-array: 1.1.18
1775 |
1776 | es-define-property@1.0.1: {}
1777 |
1778 | es-errors@1.3.0: {}
1779 |
1780 | es-iterator-helpers@1.2.1:
1781 | dependencies:
1782 | call-bind: 1.0.8
1783 | call-bound: 1.0.3
1784 | define-properties: 1.2.1
1785 | es-abstract: 1.23.8
1786 | es-errors: 1.3.0
1787 | es-set-tostringtag: 2.0.3
1788 | function-bind: 1.1.2
1789 | get-intrinsic: 1.2.6
1790 | globalthis: 1.0.4
1791 | gopd: 1.2.0
1792 | has-property-descriptors: 1.0.2
1793 | has-proto: 1.2.0
1794 | has-symbols: 1.1.0
1795 | internal-slot: 1.1.0
1796 | iterator.prototype: 1.1.4
1797 | safe-array-concat: 1.1.3
1798 |
1799 | es-object-atoms@1.0.0:
1800 | dependencies:
1801 | es-errors: 1.3.0
1802 |
1803 | es-object-atoms@1.1.1:
1804 | dependencies:
1805 | es-errors: 1.3.0
1806 |
1807 | es-set-tostringtag@2.0.3:
1808 | dependencies:
1809 | get-intrinsic: 1.2.6
1810 | has-tostringtag: 1.0.2
1811 | hasown: 2.0.2
1812 |
1813 | es-shim-unscopables@1.0.2:
1814 | dependencies:
1815 | hasown: 2.0.2
1816 |
1817 | es-to-primitive@1.3.0:
1818 | dependencies:
1819 | is-callable: 1.2.7
1820 | is-date-object: 1.1.0
1821 | is-symbol: 1.1.1
1822 |
1823 | es-toolkit@1.39.6: {}
1824 |
1825 | escape-string-regexp@4.0.0: {}
1826 |
1827 | eslint-config-prettier@10.1.5(eslint@9.28.0):
1828 | dependencies:
1829 | eslint: 9.28.0
1830 |
1831 | eslint-plugin-react@7.37.5(eslint@9.28.0):
1832 | dependencies:
1833 | array-includes: 3.1.8
1834 | array.prototype.findlast: 1.2.5
1835 | array.prototype.flatmap: 1.3.3
1836 | array.prototype.tosorted: 1.1.4
1837 | doctrine: 2.1.0
1838 | es-iterator-helpers: 1.2.1
1839 | eslint: 9.28.0
1840 | estraverse: 5.3.0
1841 | hasown: 2.0.2
1842 | jsx-ast-utils: 3.3.5
1843 | minimatch: 3.1.2
1844 | object.entries: 1.1.9
1845 | object.fromentries: 2.0.8
1846 | object.values: 1.2.1
1847 | prop-types: 15.8.1
1848 | resolve: 2.0.0-next.5
1849 | semver: 6.3.1
1850 | string.prototype.matchall: 4.0.12
1851 | string.prototype.repeat: 1.0.0
1852 |
1853 | eslint-scope@8.4.0:
1854 | dependencies:
1855 | esrecurse: 4.3.0
1856 | estraverse: 5.3.0
1857 |
1858 | eslint-visitor-keys@3.4.3: {}
1859 |
1860 | eslint-visitor-keys@4.2.0: {}
1861 |
1862 | eslint@9.28.0:
1863 | dependencies:
1864 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.28.0)
1865 | '@eslint-community/regexpp': 4.12.1
1866 | '@eslint/config-array': 0.20.0
1867 | '@eslint/config-helpers': 0.2.2
1868 | '@eslint/core': 0.14.0
1869 | '@eslint/eslintrc': 3.3.1
1870 | '@eslint/js': 9.28.0
1871 | '@eslint/plugin-kit': 0.3.1
1872 | '@humanfs/node': 0.16.6
1873 | '@humanwhocodes/module-importer': 1.0.1
1874 | '@humanwhocodes/retry': 0.4.3
1875 | '@types/estree': 1.0.6
1876 | '@types/json-schema': 7.0.15
1877 | ajv: 6.12.6
1878 | chalk: 4.1.2
1879 | cross-spawn: 7.0.6
1880 | debug: 4.4.0
1881 | escape-string-regexp: 4.0.0
1882 | eslint-scope: 8.4.0
1883 | eslint-visitor-keys: 4.2.0
1884 | espree: 10.3.0
1885 | esquery: 1.6.0
1886 | esutils: 2.0.3
1887 | fast-deep-equal: 3.1.3
1888 | file-entry-cache: 8.0.0
1889 | find-up: 5.0.0
1890 | glob-parent: 6.0.2
1891 | ignore: 5.3.2
1892 | imurmurhash: 0.1.4
1893 | is-glob: 4.0.3
1894 | json-stable-stringify-without-jsonify: 1.0.1
1895 | lodash.merge: 4.6.2
1896 | minimatch: 3.1.2
1897 | natural-compare: 1.4.0
1898 | optionator: 0.9.4
1899 | transitivePeerDependencies:
1900 | - supports-color
1901 |
1902 | espree@10.3.0:
1903 | dependencies:
1904 | acorn: 8.14.0
1905 | acorn-jsx: 5.3.2(acorn@8.14.0)
1906 | eslint-visitor-keys: 4.2.0
1907 |
1908 | esquery@1.6.0:
1909 | dependencies:
1910 | estraverse: 5.3.0
1911 |
1912 | esrecurse@4.3.0:
1913 | dependencies:
1914 | estraverse: 5.3.0
1915 |
1916 | estraverse@5.3.0: {}
1917 |
1918 | estree-walker@2.0.2: {}
1919 |
1920 | esutils@2.0.3: {}
1921 |
1922 | fast-deep-equal@3.1.3: {}
1923 |
1924 | fast-glob@3.3.2:
1925 | dependencies:
1926 | '@nodelib/fs.stat': 2.0.5
1927 | '@nodelib/fs.walk': 1.2.8
1928 | glob-parent: 5.1.2
1929 | merge2: 1.4.1
1930 | micromatch: 4.0.8
1931 |
1932 | fast-json-stable-stringify@2.1.0: {}
1933 |
1934 | fast-levenshtein@2.0.6: {}
1935 |
1936 | fastq@1.18.0:
1937 | dependencies:
1938 | reusify: 1.0.4
1939 |
1940 | fdir@6.4.2(picomatch@4.0.2):
1941 | optionalDependencies:
1942 | picomatch: 4.0.2
1943 |
1944 | file-entry-cache@8.0.0:
1945 | dependencies:
1946 | flat-cache: 4.0.1
1947 |
1948 | fill-range@7.1.1:
1949 | dependencies:
1950 | to-regex-range: 5.0.1
1951 |
1952 | find-up@5.0.0:
1953 | dependencies:
1954 | locate-path: 6.0.0
1955 | path-exists: 4.0.0
1956 |
1957 | flat-cache@4.0.1:
1958 | dependencies:
1959 | flatted: 3.3.2
1960 | keyv: 4.5.4
1961 |
1962 | flatted@3.3.2: {}
1963 |
1964 | for-each@0.3.3:
1965 | dependencies:
1966 | is-callable: 1.2.7
1967 |
1968 | fsevents@2.3.3:
1969 | optional: true
1970 |
1971 | function-bind@1.1.2: {}
1972 |
1973 | function.prototype.name@1.1.8:
1974 | dependencies:
1975 | call-bind: 1.0.8
1976 | call-bound: 1.0.3
1977 | define-properties: 1.2.1
1978 | functions-have-names: 1.2.3
1979 | hasown: 2.0.2
1980 | is-callable: 1.2.7
1981 |
1982 | functions-have-names@1.2.3: {}
1983 |
1984 | get-intrinsic@1.2.6:
1985 | dependencies:
1986 | call-bind-apply-helpers: 1.0.1
1987 | dunder-proto: 1.0.1
1988 | es-define-property: 1.0.1
1989 | es-errors: 1.3.0
1990 | es-object-atoms: 1.0.0
1991 | function-bind: 1.1.2
1992 | gopd: 1.2.0
1993 | has-symbols: 1.1.0
1994 | hasown: 2.0.2
1995 | math-intrinsics: 1.1.0
1996 |
1997 | get-intrinsic@1.3.0:
1998 | dependencies:
1999 | call-bind-apply-helpers: 1.0.2
2000 | es-define-property: 1.0.1
2001 | es-errors: 1.3.0
2002 | es-object-atoms: 1.1.1
2003 | function-bind: 1.1.2
2004 | get-proto: 1.0.1
2005 | gopd: 1.2.0
2006 | has-symbols: 1.1.0
2007 | hasown: 2.0.2
2008 | math-intrinsics: 1.1.0
2009 |
2010 | get-proto@1.0.1:
2011 | dependencies:
2012 | dunder-proto: 1.0.1
2013 | es-object-atoms: 1.1.1
2014 |
2015 | get-symbol-description@1.1.0:
2016 | dependencies:
2017 | call-bound: 1.0.3
2018 | es-errors: 1.3.0
2019 | get-intrinsic: 1.2.6
2020 |
2021 | glob-parent@5.1.2:
2022 | dependencies:
2023 | is-glob: 4.0.3
2024 |
2025 | glob-parent@6.0.2:
2026 | dependencies:
2027 | is-glob: 4.0.3
2028 |
2029 | globals@14.0.0: {}
2030 |
2031 | globalthis@1.0.4:
2032 | dependencies:
2033 | define-properties: 1.2.1
2034 | gopd: 1.2.0
2035 |
2036 | gopd@1.2.0: {}
2037 |
2038 | graphemer@1.4.0: {}
2039 |
2040 | has-bigints@1.1.0: {}
2041 |
2042 | has-flag@4.0.0: {}
2043 |
2044 | has-property-descriptors@1.0.2:
2045 | dependencies:
2046 | es-define-property: 1.0.1
2047 |
2048 | has-proto@1.2.0:
2049 | dependencies:
2050 | dunder-proto: 1.0.1
2051 |
2052 | has-symbols@1.1.0: {}
2053 |
2054 | has-tostringtag@1.0.2:
2055 | dependencies:
2056 | has-symbols: 1.1.0
2057 |
2058 | hasown@2.0.2:
2059 | dependencies:
2060 | function-bind: 1.1.2
2061 |
2062 | ignore@5.3.2: {}
2063 |
2064 | ignore@7.0.5: {}
2065 |
2066 | import-fresh@3.3.0:
2067 | dependencies:
2068 | parent-module: 1.0.1
2069 | resolve-from: 4.0.0
2070 |
2071 | imurmurhash@0.1.4: {}
2072 |
2073 | internal-slot@1.1.0:
2074 | dependencies:
2075 | es-errors: 1.3.0
2076 | hasown: 2.0.2
2077 | side-channel: 1.1.0
2078 |
2079 | is-array-buffer@3.0.5:
2080 | dependencies:
2081 | call-bind: 1.0.8
2082 | call-bound: 1.0.3
2083 | get-intrinsic: 1.2.6
2084 |
2085 | is-async-function@2.0.0:
2086 | dependencies:
2087 | has-tostringtag: 1.0.2
2088 |
2089 | is-bigint@1.1.0:
2090 | dependencies:
2091 | has-bigints: 1.1.0
2092 |
2093 | is-boolean-object@1.2.1:
2094 | dependencies:
2095 | call-bound: 1.0.3
2096 | has-tostringtag: 1.0.2
2097 |
2098 | is-callable@1.2.7: {}
2099 |
2100 | is-core-module@2.16.1:
2101 | dependencies:
2102 | hasown: 2.0.2
2103 |
2104 | is-data-view@1.0.2:
2105 | dependencies:
2106 | call-bound: 1.0.3
2107 | get-intrinsic: 1.2.6
2108 | is-typed-array: 1.1.15
2109 |
2110 | is-date-object@1.1.0:
2111 | dependencies:
2112 | call-bound: 1.0.3
2113 | has-tostringtag: 1.0.2
2114 |
2115 | is-extglob@2.1.1: {}
2116 |
2117 | is-finalizationregistry@1.1.1:
2118 | dependencies:
2119 | call-bound: 1.0.3
2120 |
2121 | is-generator-function@1.0.10:
2122 | dependencies:
2123 | has-tostringtag: 1.0.2
2124 |
2125 | is-glob@4.0.3:
2126 | dependencies:
2127 | is-extglob: 2.1.1
2128 |
2129 | is-map@2.0.3: {}
2130 |
2131 | is-module@1.0.0: {}
2132 |
2133 | is-number-object@1.1.1:
2134 | dependencies:
2135 | call-bound: 1.0.3
2136 | has-tostringtag: 1.0.2
2137 |
2138 | is-number@7.0.0: {}
2139 |
2140 | is-reference@1.2.1:
2141 | dependencies:
2142 | '@types/estree': 1.0.6
2143 |
2144 | is-regex@1.2.1:
2145 | dependencies:
2146 | call-bound: 1.0.3
2147 | gopd: 1.2.0
2148 | has-tostringtag: 1.0.2
2149 | hasown: 2.0.2
2150 |
2151 | is-set@2.0.3: {}
2152 |
2153 | is-shared-array-buffer@1.0.4:
2154 | dependencies:
2155 | call-bound: 1.0.3
2156 |
2157 | is-string@1.1.1:
2158 | dependencies:
2159 | call-bound: 1.0.3
2160 | has-tostringtag: 1.0.2
2161 |
2162 | is-symbol@1.1.1:
2163 | dependencies:
2164 | call-bound: 1.0.3
2165 | has-symbols: 1.1.0
2166 | safe-regex-test: 1.1.0
2167 |
2168 | is-typed-array@1.1.15:
2169 | dependencies:
2170 | which-typed-array: 1.1.18
2171 |
2172 | is-weakmap@2.0.2: {}
2173 |
2174 | is-weakref@1.1.0:
2175 | dependencies:
2176 | call-bound: 1.0.3
2177 |
2178 | is-weakset@2.0.4:
2179 | dependencies:
2180 | call-bound: 1.0.3
2181 | get-intrinsic: 1.2.6
2182 |
2183 | isarray@2.0.5: {}
2184 |
2185 | isexe@2.0.0: {}
2186 |
2187 | iterator.prototype@1.1.4:
2188 | dependencies:
2189 | define-data-property: 1.1.4
2190 | es-object-atoms: 1.0.0
2191 | get-intrinsic: 1.2.6
2192 | has-symbols: 1.1.0
2193 | reflect.getprototypeof: 1.0.9
2194 | set-function-name: 2.0.2
2195 |
2196 | js-tokens@4.0.0: {}
2197 |
2198 | js-yaml@4.1.0:
2199 | dependencies:
2200 | argparse: 2.0.1
2201 |
2202 | json-buffer@3.0.1: {}
2203 |
2204 | json-schema-traverse@0.4.1: {}
2205 |
2206 | json-stable-stringify-without-jsonify@1.0.1: {}
2207 |
2208 | jsx-ast-utils@3.3.5:
2209 | dependencies:
2210 | array-includes: 3.1.8
2211 | array.prototype.flat: 1.3.3
2212 | object.assign: 4.1.7
2213 | object.values: 1.2.1
2214 |
2215 | keyv@4.5.4:
2216 | dependencies:
2217 | json-buffer: 3.0.1
2218 |
2219 | levn@0.4.1:
2220 | dependencies:
2221 | prelude-ls: 1.2.1
2222 | type-check: 0.4.0
2223 |
2224 | locate-path@6.0.0:
2225 | dependencies:
2226 | p-locate: 5.0.0
2227 |
2228 | lodash.merge@4.6.2: {}
2229 |
2230 | loose-envify@1.4.0:
2231 | dependencies:
2232 | js-tokens: 4.0.0
2233 |
2234 | magic-string@0.30.17:
2235 | dependencies:
2236 | '@jridgewell/sourcemap-codec': 1.5.0
2237 |
2238 | math-intrinsics@1.1.0: {}
2239 |
2240 | merge2@1.4.1: {}
2241 |
2242 | micromatch@4.0.8:
2243 | dependencies:
2244 | braces: 3.0.3
2245 | picomatch: 2.3.1
2246 |
2247 | minimatch@3.1.2:
2248 | dependencies:
2249 | brace-expansion: 1.1.11
2250 |
2251 | minimatch@9.0.5:
2252 | dependencies:
2253 | brace-expansion: 2.0.1
2254 |
2255 | ms@2.1.3: {}
2256 |
2257 | natural-compare@1.4.0: {}
2258 |
2259 | object-assign@4.1.1: {}
2260 |
2261 | object-inspect@1.13.3: {}
2262 |
2263 | object-keys@1.1.1: {}
2264 |
2265 | object.assign@4.1.7:
2266 | dependencies:
2267 | call-bind: 1.0.8
2268 | call-bound: 1.0.3
2269 | define-properties: 1.2.1
2270 | es-object-atoms: 1.0.0
2271 | has-symbols: 1.1.0
2272 | object-keys: 1.1.1
2273 |
2274 | object.entries@1.1.9:
2275 | dependencies:
2276 | call-bind: 1.0.8
2277 | call-bound: 1.0.4
2278 | define-properties: 1.2.1
2279 | es-object-atoms: 1.1.1
2280 |
2281 | object.fromentries@2.0.8:
2282 | dependencies:
2283 | call-bind: 1.0.8
2284 | define-properties: 1.2.1
2285 | es-abstract: 1.23.8
2286 | es-object-atoms: 1.0.0
2287 |
2288 | object.values@1.2.1:
2289 | dependencies:
2290 | call-bind: 1.0.8
2291 | call-bound: 1.0.3
2292 | define-properties: 1.2.1
2293 | es-object-atoms: 1.0.0
2294 |
2295 | optionator@0.9.4:
2296 | dependencies:
2297 | deep-is: 0.1.4
2298 | fast-levenshtein: 2.0.6
2299 | levn: 0.4.1
2300 | prelude-ls: 1.2.1
2301 | type-check: 0.4.0
2302 | word-wrap: 1.2.5
2303 |
2304 | own-keys@1.0.1:
2305 | dependencies:
2306 | get-intrinsic: 1.2.6
2307 | object-keys: 1.1.1
2308 | safe-push-apply: 1.0.0
2309 |
2310 | p-limit@3.1.0:
2311 | dependencies:
2312 | yocto-queue: 0.1.0
2313 |
2314 | p-locate@5.0.0:
2315 | dependencies:
2316 | p-limit: 3.1.0
2317 |
2318 | parent-module@1.0.1:
2319 | dependencies:
2320 | callsites: 3.1.0
2321 |
2322 | path-exists@4.0.0: {}
2323 |
2324 | path-key@3.1.1: {}
2325 |
2326 | path-parse@1.0.7: {}
2327 |
2328 | picomatch@2.3.1: {}
2329 |
2330 | picomatch@4.0.2: {}
2331 |
2332 | possible-typed-array-names@1.0.0: {}
2333 |
2334 | prelude-ls@1.2.1: {}
2335 |
2336 | prettier@3.5.3: {}
2337 |
2338 | prop-types@15.8.1:
2339 | dependencies:
2340 | loose-envify: 1.4.0
2341 | object-assign: 4.1.1
2342 | react-is: 16.13.1
2343 |
2344 | punycode@2.3.1: {}
2345 |
2346 | queue-microtask@1.2.3: {}
2347 |
2348 | react-is@16.13.1: {}
2349 |
2350 | react@19.0.0: {}
2351 |
2352 | reflect.getprototypeof@1.0.9:
2353 | dependencies:
2354 | call-bind: 1.0.8
2355 | define-properties: 1.2.1
2356 | dunder-proto: 1.0.1
2357 | es-abstract: 1.23.8
2358 | es-errors: 1.3.0
2359 | get-intrinsic: 1.2.6
2360 | gopd: 1.2.0
2361 | which-builtin-type: 1.2.1
2362 |
2363 | regexp.prototype.flags@1.5.3:
2364 | dependencies:
2365 | call-bind: 1.0.8
2366 | define-properties: 1.2.1
2367 | es-errors: 1.3.0
2368 | set-function-name: 2.0.2
2369 |
2370 | resolve-from@4.0.0: {}
2371 |
2372 | resolve@1.22.10:
2373 | dependencies:
2374 | is-core-module: 2.16.1
2375 | path-parse: 1.0.7
2376 | supports-preserve-symlinks-flag: 1.0.0
2377 |
2378 | resolve@2.0.0-next.5:
2379 | dependencies:
2380 | is-core-module: 2.16.1
2381 | path-parse: 1.0.7
2382 | supports-preserve-symlinks-flag: 1.0.0
2383 |
2384 | reusify@1.0.4: {}
2385 |
2386 | rollup-plugin-node-externals@8.0.0(rollup@4.42.0):
2387 | dependencies:
2388 | rollup: 4.42.0
2389 |
2390 | rollup@4.42.0:
2391 | dependencies:
2392 | '@types/estree': 1.0.7
2393 | optionalDependencies:
2394 | '@rollup/rollup-android-arm-eabi': 4.42.0
2395 | '@rollup/rollup-android-arm64': 4.42.0
2396 | '@rollup/rollup-darwin-arm64': 4.42.0
2397 | '@rollup/rollup-darwin-x64': 4.42.0
2398 | '@rollup/rollup-freebsd-arm64': 4.42.0
2399 | '@rollup/rollup-freebsd-x64': 4.42.0
2400 | '@rollup/rollup-linux-arm-gnueabihf': 4.42.0
2401 | '@rollup/rollup-linux-arm-musleabihf': 4.42.0
2402 | '@rollup/rollup-linux-arm64-gnu': 4.42.0
2403 | '@rollup/rollup-linux-arm64-musl': 4.42.0
2404 | '@rollup/rollup-linux-loongarch64-gnu': 4.42.0
2405 | '@rollup/rollup-linux-powerpc64le-gnu': 4.42.0
2406 | '@rollup/rollup-linux-riscv64-gnu': 4.42.0
2407 | '@rollup/rollup-linux-riscv64-musl': 4.42.0
2408 | '@rollup/rollup-linux-s390x-gnu': 4.42.0
2409 | '@rollup/rollup-linux-x64-gnu': 4.42.0
2410 | '@rollup/rollup-linux-x64-musl': 4.42.0
2411 | '@rollup/rollup-win32-arm64-msvc': 4.42.0
2412 | '@rollup/rollup-win32-ia32-msvc': 4.42.0
2413 | '@rollup/rollup-win32-x64-msvc': 4.42.0
2414 | fsevents: 2.3.3
2415 |
2416 | run-parallel@1.2.0:
2417 | dependencies:
2418 | queue-microtask: 1.2.3
2419 |
2420 | safe-array-concat@1.1.3:
2421 | dependencies:
2422 | call-bind: 1.0.8
2423 | call-bound: 1.0.3
2424 | get-intrinsic: 1.2.6
2425 | has-symbols: 1.1.0
2426 | isarray: 2.0.5
2427 |
2428 | safe-push-apply@1.0.0:
2429 | dependencies:
2430 | es-errors: 1.3.0
2431 | isarray: 2.0.5
2432 |
2433 | safe-regex-test@1.1.0:
2434 | dependencies:
2435 | call-bound: 1.0.3
2436 | es-errors: 1.3.0
2437 | is-regex: 1.2.1
2438 |
2439 | semver@6.3.1: {}
2440 |
2441 | semver@7.6.3: {}
2442 |
2443 | set-function-length@1.2.2:
2444 | dependencies:
2445 | define-data-property: 1.1.4
2446 | es-errors: 1.3.0
2447 | function-bind: 1.1.2
2448 | get-intrinsic: 1.2.6
2449 | gopd: 1.2.0
2450 | has-property-descriptors: 1.0.2
2451 |
2452 | set-function-name@2.0.2:
2453 | dependencies:
2454 | define-data-property: 1.1.4
2455 | es-errors: 1.3.0
2456 | functions-have-names: 1.2.3
2457 | has-property-descriptors: 1.0.2
2458 |
2459 | shebang-command@2.0.0:
2460 | dependencies:
2461 | shebang-regex: 3.0.0
2462 |
2463 | shebang-regex@3.0.0: {}
2464 |
2465 | side-channel-list@1.0.0:
2466 | dependencies:
2467 | es-errors: 1.3.0
2468 | object-inspect: 1.13.3
2469 |
2470 | side-channel-map@1.0.1:
2471 | dependencies:
2472 | call-bound: 1.0.3
2473 | es-errors: 1.3.0
2474 | get-intrinsic: 1.2.6
2475 | object-inspect: 1.13.3
2476 |
2477 | side-channel-weakmap@1.0.2:
2478 | dependencies:
2479 | call-bound: 1.0.3
2480 | es-errors: 1.3.0
2481 | get-intrinsic: 1.2.6
2482 | object-inspect: 1.13.3
2483 | side-channel-map: 1.0.1
2484 |
2485 | side-channel@1.1.0:
2486 | dependencies:
2487 | es-errors: 1.3.0
2488 | object-inspect: 1.13.3
2489 | side-channel-list: 1.0.0
2490 | side-channel-map: 1.0.1
2491 | side-channel-weakmap: 1.0.2
2492 |
2493 | string.prototype.matchall@4.0.12:
2494 | dependencies:
2495 | call-bind: 1.0.8
2496 | call-bound: 1.0.3
2497 | define-properties: 1.2.1
2498 | es-abstract: 1.23.8
2499 | es-errors: 1.3.0
2500 | es-object-atoms: 1.0.0
2501 | get-intrinsic: 1.2.6
2502 | gopd: 1.2.0
2503 | has-symbols: 1.1.0
2504 | internal-slot: 1.1.0
2505 | regexp.prototype.flags: 1.5.3
2506 | set-function-name: 2.0.2
2507 | side-channel: 1.1.0
2508 |
2509 | string.prototype.repeat@1.0.0:
2510 | dependencies:
2511 | define-properties: 1.2.1
2512 | es-abstract: 1.23.8
2513 |
2514 | string.prototype.trim@1.2.10:
2515 | dependencies:
2516 | call-bind: 1.0.8
2517 | call-bound: 1.0.3
2518 | define-data-property: 1.1.4
2519 | define-properties: 1.2.1
2520 | es-abstract: 1.23.8
2521 | es-object-atoms: 1.0.0
2522 | has-property-descriptors: 1.0.2
2523 |
2524 | string.prototype.trimend@1.0.9:
2525 | dependencies:
2526 | call-bind: 1.0.8
2527 | call-bound: 1.0.3
2528 | define-properties: 1.2.1
2529 | es-object-atoms: 1.0.0
2530 |
2531 | string.prototype.trimstart@1.0.8:
2532 | dependencies:
2533 | call-bind: 1.0.8
2534 | define-properties: 1.2.1
2535 | es-object-atoms: 1.0.0
2536 |
2537 | strip-json-comments@3.1.1: {}
2538 |
2539 | supports-color@7.2.0:
2540 | dependencies:
2541 | has-flag: 4.0.0
2542 |
2543 | supports-preserve-symlinks-flag@1.0.0: {}
2544 |
2545 | to-regex-range@5.0.1:
2546 | dependencies:
2547 | is-number: 7.0.0
2548 |
2549 | ts-api-utils@2.1.0(typescript@5.8.3):
2550 | dependencies:
2551 | typescript: 5.8.3
2552 |
2553 | tslib@2.8.1: {}
2554 |
2555 | type-check@0.4.0:
2556 | dependencies:
2557 | prelude-ls: 1.2.1
2558 |
2559 | typed-array-buffer@1.0.3:
2560 | dependencies:
2561 | call-bound: 1.0.3
2562 | es-errors: 1.3.0
2563 | is-typed-array: 1.1.15
2564 |
2565 | typed-array-byte-length@1.0.3:
2566 | dependencies:
2567 | call-bind: 1.0.8
2568 | for-each: 0.3.3
2569 | gopd: 1.2.0
2570 | has-proto: 1.2.0
2571 | is-typed-array: 1.1.15
2572 |
2573 | typed-array-byte-offset@1.0.4:
2574 | dependencies:
2575 | available-typed-arrays: 1.0.7
2576 | call-bind: 1.0.8
2577 | for-each: 0.3.3
2578 | gopd: 1.2.0
2579 | has-proto: 1.2.0
2580 | is-typed-array: 1.1.15
2581 | reflect.getprototypeof: 1.0.9
2582 |
2583 | typed-array-length@1.0.7:
2584 | dependencies:
2585 | call-bind: 1.0.8
2586 | for-each: 0.3.3
2587 | gopd: 1.2.0
2588 | is-typed-array: 1.1.15
2589 | possible-typed-array-names: 1.0.0
2590 | reflect.getprototypeof: 1.0.9
2591 |
2592 | typescript-eslint@8.34.0(eslint@9.28.0)(typescript@5.8.3):
2593 | dependencies:
2594 | '@typescript-eslint/eslint-plugin': 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3)
2595 | '@typescript-eslint/parser': 8.34.0(eslint@9.28.0)(typescript@5.8.3)
2596 | '@typescript-eslint/utils': 8.34.0(eslint@9.28.0)(typescript@5.8.3)
2597 | eslint: 9.28.0
2598 | typescript: 5.8.3
2599 | transitivePeerDependencies:
2600 | - supports-color
2601 |
2602 | typescript@5.8.3: {}
2603 |
2604 | unbox-primitive@1.1.0:
2605 | dependencies:
2606 | call-bound: 1.0.3
2607 | has-bigints: 1.1.0
2608 | has-symbols: 1.1.0
2609 | which-boxed-primitive: 1.1.1
2610 |
2611 | uri-js@4.4.1:
2612 | dependencies:
2613 | punycode: 2.3.1
2614 |
2615 | which-boxed-primitive@1.1.1:
2616 | dependencies:
2617 | is-bigint: 1.1.0
2618 | is-boolean-object: 1.2.1
2619 | is-number-object: 1.1.1
2620 | is-string: 1.1.1
2621 | is-symbol: 1.1.1
2622 |
2623 | which-builtin-type@1.2.1:
2624 | dependencies:
2625 | call-bound: 1.0.3
2626 | function.prototype.name: 1.1.8
2627 | has-tostringtag: 1.0.2
2628 | is-async-function: 2.0.0
2629 | is-date-object: 1.1.0
2630 | is-finalizationregistry: 1.1.1
2631 | is-generator-function: 1.0.10
2632 | is-regex: 1.2.1
2633 | is-weakref: 1.1.0
2634 | isarray: 2.0.5
2635 | which-boxed-primitive: 1.1.1
2636 | which-collection: 1.0.2
2637 | which-typed-array: 1.1.18
2638 |
2639 | which-collection@1.0.2:
2640 | dependencies:
2641 | is-map: 2.0.3
2642 | is-set: 2.0.3
2643 | is-weakmap: 2.0.2
2644 | is-weakset: 2.0.4
2645 |
2646 | which-typed-array@1.1.18:
2647 | dependencies:
2648 | available-typed-arrays: 1.0.7
2649 | call-bind: 1.0.8
2650 | call-bound: 1.0.3
2651 | for-each: 0.3.3
2652 | gopd: 1.2.0
2653 | has-tostringtag: 1.0.2
2654 |
2655 | which@2.0.2:
2656 | dependencies:
2657 | isexe: 2.0.0
2658 |
2659 | word-wrap@1.2.5: {}
2660 |
2661 | yocto-queue@0.1.0: {}
2662 |
--------------------------------------------------------------------------------