diff --git a/packages/collection-toolbar/package.json b/packages/collection-toolbar/package.json index 938d33fd8e..fdce6d3d1a 100644 --- a/packages/collection-toolbar/package.json +++ b/packages/collection-toolbar/package.json @@ -31,6 +31,8 @@ "@leafygreen-ui/emotion": "workspace:^", "@leafygreen-ui/lib": "workspace:^", "@leafygreen-ui/tokens": "workspace:^", + "@leafygreen-ui/compound-component": "workspace:^", + "@leafygreen-ui/typography": "workspace:^", "@lg-tools/test-harnesses": "workspace:^" }, "peerDependencies": { diff --git a/packages/collection-toolbar/src/CollectionToolbar.stories.tsx b/packages/collection-toolbar/src/CollectionToolbar.stories.tsx index be8ae36fd8..0f24b82898 100644 --- a/packages/collection-toolbar/src/CollectionToolbar.stories.tsx +++ b/packages/collection-toolbar/src/CollectionToolbar.stories.tsx @@ -16,6 +16,12 @@ const meta: StoryMetaType = { variant: Object.values(Variant), }, }, + docs: { + description: { + component: + 'CollectionToolbar is a component that displays a toolbar for a collection.', + }, + }, }, argTypes: { darkMode: storybookArgTypes.darkMode, @@ -30,11 +36,17 @@ const meta: StoryMetaType = { }, args: { children: 'Collection Toolbar', + size: { + control: 'select', + options: Object.values(Size), + }, }, }; export default meta; export const LiveExample: StoryFn = props => ( - + + Collection Title + ); diff --git a/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.spec.tsx b/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.spec.tsx index 18ec3ac09e..8138f6eb03 100644 --- a/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.spec.tsx +++ b/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.spec.tsx @@ -1,11 +1,41 @@ import React from 'react'; import { render, screen } from '@testing-library/react'; +import { Variant } from '../shared.types'; +import { getTestUtils } from '../testing/getTestUtils'; + import { CollectionToolbar } from '.'; describe('packages/collection-toolbar', () => { test('renders correctly', () => { - render(Collection Toolbar); - expect(screen.getByText('Collection Toolbar')).toBeInTheDocument(); + render(); + const utils = getTestUtils(); + expect(utils.getCollectionToolbar()).toBeInTheDocument(); + }); + + test('applies className to the root element', () => { + render(); + const utils = getTestUtils(); + expect(utils.getCollectionToolbar()?.className).toContain('test-class'); + }); + + describe('variant: collapsible', () => { + test('renders title when variant is collapsible', () => { + render( + + Test Title + , + ); + expect(screen.getByText('Test Title')).toBeInTheDocument(); + }); + + test('does not render title when variant is not collapsible', () => { + render( + + Test Title + , + ); + expect(screen.queryByText('Test Title')).not.toBeInTheDocument(); + }); }); }); diff --git a/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.styles.ts b/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.styles.ts index b793f985f6..3445ca1093 100644 --- a/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.styles.ts +++ b/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.styles.ts @@ -1,12 +1,10 @@ import { css, cx } from '@leafygreen-ui/emotion'; -import { Size, Variant } from './CollectionToolbar.types'; +import { Size, Variant } from '../shared.types'; export const baseStyles = css``; export const getCollectionToolbarStyles = ({ - size, - variant, className, }: { size?: Size; diff --git a/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.tsx b/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.tsx index f9e3f062e0..5b894a5469 100644 --- a/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.tsx +++ b/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.tsx @@ -1,23 +1,65 @@ -import React from 'react'; +import React, { forwardRef } from 'react'; -import { getCollectionToolbarStyles } from './CollectionToolbar.styles'; import { - CollectionToolbarProps, + CompoundComponent, + findChild, +} from '@leafygreen-ui/compound-component'; + +import { Title } from '../components'; +import { CollectionToolbarProvider } from '../Context/CollectionToolbarProvider'; +import { + CollectionToolbarSubComponentProperty, Size, Variant, -} from './CollectionToolbar.types'; +} from '../shared.types'; +import { getLgIds } from '../utils'; + +import { getCollectionToolbarStyles } from './CollectionToolbar.styles'; +import { CollectionToolbarProps } from './CollectionToolbar.types'; + +export const CollectionToolbar = CompoundComponent( + // eslint-disable-next-line react/display-name + forwardRef( + ( + { + size = Size.Default, + variant = Variant.Default, + className, + children, + 'data-lgid': dataLgId, + darkMode, + ...rest + }, + fwdRef, + ) => { + const lgIds = getLgIds(dataLgId); + const title = findChild( + children, + CollectionToolbarSubComponentProperty.Title, + ); -export function CollectionToolbar({ - size = Size.Default, - variant = Variant.Default, - className, - children, -}: CollectionToolbarProps) { - return ( -
- {children} -
- ); -} + const showTitle = title && variant === Variant.Collapsible; -CollectionToolbar.displayName = 'CollectionToolbar'; + return ( + +
+ {showTitle && title} +
+
+ ); + }, + ), + { + displayName: 'CollectionToolbar', + Title, + }, +); diff --git a/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.types.ts b/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.types.ts index cb9154409a..6a41c699d3 100644 --- a/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.types.ts +++ b/packages/collection-toolbar/src/CollectionToolbar/CollectionToolbar.types.ts @@ -1,23 +1,23 @@ -import React from 'react'; +import { ComponentPropsWithRef } from 'react'; -import { Size as ImportedSize } from '@leafygreen-ui/tokens'; +import { DarkModeProps, LgIdProps } from '@leafygreen-ui/lib'; -export const Variant = { - Compact: 'compact', - Default: 'default', - Collapsible: 'collapsible', -} as const; -export type Variant = (typeof Variant)[keyof typeof Variant]; +import { Size, Variant } from '../shared.types'; -export const Size = { - Default: ImportedSize.Default, - Small: ImportedSize.Small, -} as const; -export type Size = (typeof Size)[keyof typeof Size]; - -export interface CollectionToolbarProps { - size?: typeof ImportedSize.Default | typeof ImportedSize.Small; +export interface CollectionToolbarProps + extends ComponentPropsWithRef<'div'>, + DarkModeProps, + LgIdProps { + /** + * The size of the CollectionToolbar and it's sub-components. + * + * @default `'default'` + */ + size?: typeof Size.Default | typeof Size.Small; + /** + * The variant of the CollectionToolbar. Determines the layout of the CollectionToolbar. + * + * @default `'default'` + */ variant?: Variant; - className?: string; - children?: React.ReactNode; } diff --git a/packages/collection-toolbar/src/CollectionToolbar/index.ts b/packages/collection-toolbar/src/CollectionToolbar/index.ts index b06973804d..0f12b57376 100644 --- a/packages/collection-toolbar/src/CollectionToolbar/index.ts +++ b/packages/collection-toolbar/src/CollectionToolbar/index.ts @@ -1,6 +1,2 @@ export { CollectionToolbar } from './CollectionToolbar'; -export { - type CollectionToolbarProps, - Size, - Variant, -} from './CollectionToolbar.types'; +export { type CollectionToolbarProps } from './CollectionToolbar.types'; diff --git a/packages/collection-toolbar/src/Context/CollectionToolbarProvider.tsx b/packages/collection-toolbar/src/Context/CollectionToolbarProvider.tsx new file mode 100644 index 0000000000..7399446d36 --- /dev/null +++ b/packages/collection-toolbar/src/Context/CollectionToolbarProvider.tsx @@ -0,0 +1,62 @@ +import React, { + createContext, + PropsWithChildren, + useContext, + useMemo, +} from 'react'; + +import LeafyGreenProvider from '@leafygreen-ui/leafygreen-provider'; +import { DarkModeProps } from '@leafygreen-ui/lib'; + +import { Size } from '../shared.types'; +import { getLgIds, type GetLgIdsReturnType } from '../utils'; + +export interface CollectionToolbarContextProps extends DarkModeProps { + /** + * The size of the CollectionToolbar and it's sub-components. + * + * @default `'default'` + */ + size?: Size; + /** + * LGIDs for CollectionToolbar components + */ + lgIds: GetLgIdsReturnType; +} + +export const CollectionToolbarContext = + createContext({ + size: Size.Default, + lgIds: getLgIds(), + }); + +export const useCollectionToolbarContext = () => { + const context = useContext(CollectionToolbarContext); + if (!context) + throw new Error( + 'useCollectionToolbarContext must be used within a CollectionToolbarProvider', + ); + return useContext(CollectionToolbarContext); +}; + +export const CollectionToolbarProvider = ({ + children, + darkMode, + size, + lgIds, +}: PropsWithChildren) => { + const collectionToolbarProviderData = useMemo(() => { + return { + size, + lgIds, + }; + }, [size, lgIds]); + + return ( + + + {children} + + + ); +}; diff --git a/packages/collection-toolbar/src/components/Title/Title.spec.tsx b/packages/collection-toolbar/src/components/Title/Title.spec.tsx new file mode 100644 index 0000000000..b589037820 --- /dev/null +++ b/packages/collection-toolbar/src/components/Title/Title.spec.tsx @@ -0,0 +1,87 @@ +import React, { createRef } from 'react'; +import { render, screen } from '@testing-library/react'; + +import { CollectionToolbarSubComponentProperty } from '../../shared.types'; +import { getTestUtils } from '../../testing/getTestUtils'; + +import Title from './Title'; + +// Mock H3 to properly forward refs for testing while preserving polymorphic behavior +jest.mock('@leafygreen-ui/typography', () => { + const React = require('react'); + return { + // eslint-disable-next-line react/display-name + H3: React.forwardRef( + ( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + { as, ...props }: { as?: React.ElementType } & Record, + ref: React.Ref, + ) => { + const Component = as || 'h3'; + return React.createElement(Component, { ...props, ref }); + }, + ), + }; +}); + +describe('packages/collection-toolbar/CollectionToolbar/components/Title', () => { + test('renders children correctly', () => { + render(Test Title); + const utils = getTestUtils(); + expect(screen.getByText('Test Title')).toBeInTheDocument(); + expect(utils.getTitle()).toBeInTheDocument(); + }); + + test('renders as an h3 element as default', () => { + render(Test Title); + expect(screen.getByRole('heading', { level: 3 })).toBeInTheDocument(); + }); + + test('renders as a p element when using as prop', () => { + render(Test Title); + expect(screen.getByText('Test Title').tagName).toBe('P'); + }); + + test('applies className to the rendered element', () => { + render(Test Title); + expect(screen.getByText('Test Title')).toHaveClass('custom-class'); + }); + + test('does not allow darkMode prop', () => { + // @ts-expect-error: darkMode prop is not allowed + render(Test Title); + const utils = getTestUtils(); + expect(utils.getTitle()).not.toHaveClass('dark-mode'); + }); + + test('has the correct static property for compound component identification', () => { + expect(Title[CollectionToolbarSubComponentProperty.Title]).toBe(true); + }); + + test('applies data-lgid attribute from context', () => { + render(Test Title); + const titleElement = screen.getByText('Test Title'); + expect(titleElement).toHaveAttribute( + 'data-lgid', + 'lg-collection_toolbar-title', + ); + }); + + test('spreads additional HTML attributes to the element', () => { + render( + + Test Title + , + ); + const titleElement = screen.getByText('Test Title'); + expect(titleElement).toHaveAttribute('data-testid', 'custom-title'); + expect(titleElement).toHaveAttribute('aria-label', 'Custom label'); + }); + + test('forwards ref to the rendered element', () => { + const ref = createRef(); + render(Test Title); + expect(ref.current).not.toBeNull(); + expect(ref.current).toBe(screen.getByText('Test Title')); + }); +}); diff --git a/packages/collection-toolbar/src/components/Title/Title.tsx b/packages/collection-toolbar/src/components/Title/Title.tsx new file mode 100644 index 0000000000..4f3cb0c8b6 --- /dev/null +++ b/packages/collection-toolbar/src/components/Title/Title.tsx @@ -0,0 +1,38 @@ +import React, { forwardRef } from 'react'; + +import { CompoundSubComponent } from '@leafygreen-ui/compound-component'; +import { H3 } from '@leafygreen-ui/typography'; + +import { useCollectionToolbarContext } from '../../Context/CollectionToolbarProvider'; +import { CollectionToolbarSubComponentProperty } from '../../shared.types'; + +import { TitleProps } from './Title.types'; + +/** + * Title is a compound component that renders a title for CollectionToolbar. + * It will only render if the CollectionToolbar variant is set to Collapsible. + */ +const Title = CompoundSubComponent( + // eslint-disable-next-line react/display-name + forwardRef( + ({ className, children, ...rest }, fwdRef) => { + const { lgIds } = useCollectionToolbarContext(); + return ( +

+ {children} +

+ ); + }, + ), + { + displayName: 'Title', + key: CollectionToolbarSubComponentProperty.Title, + }, +); + +export default Title; diff --git a/packages/collection-toolbar/src/components/Title/Title.types.ts b/packages/collection-toolbar/src/components/Title/Title.types.ts new file mode 100644 index 0000000000..51c9c4f5a1 --- /dev/null +++ b/packages/collection-toolbar/src/components/Title/Title.types.ts @@ -0,0 +1,4 @@ +import { DarkModeProps } from '@leafygreen-ui/lib'; +import { H3Props } from '@leafygreen-ui/typography'; + +export interface TitleProps extends Omit {} diff --git a/packages/collection-toolbar/src/components/Title/index.ts b/packages/collection-toolbar/src/components/Title/index.ts new file mode 100644 index 0000000000..5705e01d46 --- /dev/null +++ b/packages/collection-toolbar/src/components/Title/index.ts @@ -0,0 +1,2 @@ +export { default as Title } from './Title'; +export type { TitleProps } from './Title.types'; diff --git a/packages/collection-toolbar/src/components/index.ts b/packages/collection-toolbar/src/components/index.ts new file mode 100644 index 0000000000..b6689aa40c --- /dev/null +++ b/packages/collection-toolbar/src/components/index.ts @@ -0,0 +1 @@ +export { Title, type TitleProps } from './Title'; diff --git a/packages/collection-toolbar/src/index.ts b/packages/collection-toolbar/src/index.ts index 4742b1df23..028a04fb55 100644 --- a/packages/collection-toolbar/src/index.ts +++ b/packages/collection-toolbar/src/index.ts @@ -1,6 +1,6 @@ export { CollectionToolbar, type CollectionToolbarProps, - Size, - Variant, } from './CollectionToolbar'; +export { type TitleProps as CollectionToolbarTitleProps } from './components'; +export { Size, Variant } from './shared.types'; diff --git a/packages/collection-toolbar/src/shared.types.ts b/packages/collection-toolbar/src/shared.types.ts new file mode 100644 index 0000000000..63cbbf610d --- /dev/null +++ b/packages/collection-toolbar/src/shared.types.ts @@ -0,0 +1,41 @@ +import { Size as ImportedSize } from '@leafygreen-ui/tokens'; + +/** + * Variant options for CollectionToolbar. + * + * @default 'default' + */ +export const Variant = { + Compact: 'compact', + Default: 'default', + Collapsible: 'collapsible', +} as const; +export type Variant = (typeof Variant)[keyof typeof Variant]; + +/** + * Size options for CollectionToolbar. + * + * @default 'default' + */ +export const Size = { + Default: ImportedSize.Default, + Small: ImportedSize.Small, +} as const; +export type Size = (typeof Size)[keyof typeof Size]; + +/** + * Static property names used to identify CollectionToolbar compound components. + * These are implementation details for the compound component pattern and should not be exported. + */ +export const CollectionToolbarSubComponentProperty = { + Title: 'isCollectionToolbarTitle', + SearchInput: 'isCollectionToolbarSearchInput', + Actions: 'isCollectionToolbarActions', + Filters: 'isCollectionToolbarFilters', +} as const; + +/** + * Type representing the possible static property names for CollectionToolbar sub components. + */ +export type CollectionToolbarSubComponentProperty = + (typeof CollectionToolbarSubComponentProperty)[keyof typeof CollectionToolbarSubComponentProperty]; diff --git a/packages/collection-toolbar/src/testing/getTestUtils.spec.tsx b/packages/collection-toolbar/src/testing/getTestUtils.spec.tsx index 03d1b689b3..3854df4c20 100644 --- a/packages/collection-toolbar/src/testing/getTestUtils.spec.tsx +++ b/packages/collection-toolbar/src/testing/getTestUtils.spec.tsx @@ -1,8 +1,3 @@ -import React from 'react'; -import { render } from '@testing-library/react'; - -import { CollectionToolbar } from '.'; - describe('packages/collection-toolbar/getTestUtils', () => { test('condition', () => {}); }); diff --git a/packages/collection-toolbar/src/testing/getTestUtils.tsx b/packages/collection-toolbar/src/testing/getTestUtils.tsx index ad89a6e99d..a56972a3e0 100644 --- a/packages/collection-toolbar/src/testing/getTestUtils.tsx +++ b/packages/collection-toolbar/src/testing/getTestUtils.tsx @@ -2,14 +2,29 @@ import { findByLgId, getByLgId, queryByLgId } from '@lg-tools/test-harnesses'; import { LgIdString } from '@leafygreen-ui/lib'; -import { DEFAULT_LGID_ROOT, getLgIds } from '../utils/getLgIds'; +import { DEFAULT_LGID_ROOT, getLgIds } from '../utils'; import { TestUtilsReturnType } from './getTestUtils.types'; -export const getTestUtils = ( +export const getTestUtils = ( lgId: LgIdString = DEFAULT_LGID_ROOT, -): TestUtilsReturnType => { +): TestUtilsReturnType => { const lgIds = getLgIds(lgId); - return {}; + const findCollectionToolbar = () => findByLgId!(lgIds.root); + const getCollectionToolbar = () => getByLgId!(lgIds.root); + const queryCollectionToolbar = () => queryByLgId!(lgIds.root); + + const getTitle = () => getByLgId!(lgIds.title); + const findTitle = () => findByLgId!(lgIds.title); + const queryTitle = () => queryByLgId!(lgIds.title); + + return { + findCollectionToolbar, + getCollectionToolbar, + queryCollectionToolbar, + getTitle, + findTitle, + queryTitle, + }; }; diff --git a/packages/collection-toolbar/src/testing/getTestUtils.types.ts b/packages/collection-toolbar/src/testing/getTestUtils.types.ts index 4b2df87c73..326949c45e 100644 --- a/packages/collection-toolbar/src/testing/getTestUtils.types.ts +++ b/packages/collection-toolbar/src/testing/getTestUtils.types.ts @@ -1 +1,9 @@ -export interface TestUtilsReturnType {} +export interface TestUtilsReturnType { + findCollectionToolbar: () => Promise; + getCollectionToolbar: () => T; + queryCollectionToolbar: () => T | null; + + getTitle: () => T; + findTitle: () => Promise; + queryTitle: () => T | null; +} diff --git a/packages/collection-toolbar/src/utils/getLgIds.ts b/packages/collection-toolbar/src/utils.ts similarity index 91% rename from packages/collection-toolbar/src/utils/getLgIds.ts rename to packages/collection-toolbar/src/utils.ts index 35a1a7186e..58320a209b 100644 --- a/packages/collection-toolbar/src/utils/getLgIds.ts +++ b/packages/collection-toolbar/src/utils.ts @@ -5,6 +5,7 @@ export const DEFAULT_LGID_ROOT = 'lg-collection_toolbar'; export const getLgIds = (root: LgIdString = DEFAULT_LGID_ROOT) => { const ids = { root, + title: `${root}-title`, } as const; return ids; }; diff --git a/packages/collection-toolbar/tsconfig.json b/packages/collection-toolbar/tsconfig.json index 1e86ae9a22..4cb74a4a21 100644 --- a/packages/collection-toolbar/tsconfig.json +++ b/packages/collection-toolbar/tsconfig.json @@ -10,17 +10,23 @@ "exclude": ["**/*.spec.*", "**/*.stories.*"], "references": [ { - "path": "../emotion" + "path": "../compound-component" }, { - "path": "../lib" + "path": "../emotion" }, { "path": "../leafygreen-provider" }, + { + "path": "../lib" + }, { "path": "../tokens" }, + { + "path": "../typography" + }, { "path": "../../tools/test-harnesses" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 449e62f44f..ae5d98d015 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1419,6 +1419,9 @@ importers: packages/collection-toolbar: dependencies: + '@leafygreen-ui/compound-component': + specifier: workspace:^ + version: link:../compound-component '@leafygreen-ui/emotion': specifier: workspace:^ version: link:../emotion @@ -1431,6 +1434,9 @@ importers: '@leafygreen-ui/tokens': specifier: workspace:^ version: link:../tokens + '@leafygreen-ui/typography': + specifier: workspace:^ + version: link:../typography '@lg-tools/test-harnesses': specifier: workspace:^ version: link:../../tools/test-harnesses @@ -4063,7 +4069,7 @@ importers: version: 1.1.0 jscodeshift: specifier: 17.3.0 - version: 17.3.0(@babel/preset-env@7.24.3(@babel/core@7.24.3)) + version: 17.3.0(@babel/preset-env@7.24.3(@babel/core@7.28.0)) prettier: specifier: 2.8.8 version: 2.8.8 @@ -4103,7 +4109,7 @@ importers: dependencies: '@babel/eslint-parser': specifier: 7.28.4 - version: 7.28.4(@babel/core@7.24.3)(eslint@9.16.0) + version: 7.28.4(@babel/core@7.28.0)(eslint@9.16.0) '@typescript-eslint/types': specifier: 8.44.0 version: 8.44.0 @@ -4434,7 +4440,7 @@ importers: version: 2.1.0 babel-loader: specifier: 9.2.1 - version: 9.2.1(@babel/core@7.24.3)(webpack@5.88.0) + version: 9.2.1(@babel/core@7.28.0)(webpack@5.88.0) buffer: specifier: 6.0.3 version: 6.0.3 @@ -11911,9 +11917,9 @@ snapshots: eslint-visitor-keys: 2.1.0 semver: 6.3.1 - '@babel/eslint-parser@7.28.4(@babel/core@7.24.3)(eslint@9.16.0)': + '@babel/eslint-parser@7.28.4(@babel/core@7.28.0)(eslint@9.16.0)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.28.0 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 9.16.0 eslint-visitor-keys: 2.1.0 @@ -11972,6 +11978,14 @@ snapshots: regexpu-core: 6.2.0 semver: 6.3.1 + '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-annotate-as-pure': 7.27.3 + regexpu-core: 6.2.0 + semver: 6.3.1 + optional: true + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -11983,6 +11997,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + debug: 4.4.1 + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/helper-globals@7.28.0': {} '@babel/helper-member-expression-to-functions@7.27.1': @@ -12041,6 +12067,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.27.1 + '@babel/traverse': 7.28.0 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/helper-replace-supers@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12098,6 +12134,12 @@ snapshots: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12107,6 +12149,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.0) + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12115,6 +12167,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.0 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-proposal-export-default-from@7.24.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12125,11 +12186,22 @@ snapshots: dependencies: '@babel/core': 7.24.3 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + optional: true + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12140,16 +12212,34 @@ snapshots: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-export-default-from@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12160,6 +12250,12 @@ snapshots: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 @@ -12170,21 +12266,45 @@ snapshots: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12200,41 +12320,89 @@ snapshots: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12251,11 +12419,24 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12265,6 +12446,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.0) + '@babel/traverse': 7.28.0 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12274,16 +12465,38 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.0) + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-block-scoping@7.28.0(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-block-scoping@7.28.0(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12308,6 +12521,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-classes@7.28.0(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12320,12 +12542,32 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-classes@7.28.0(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) + '@babel/traverse': 7.28.0 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 '@babel/template': 7.27.2 + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.27.2 + optional: true + '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12334,32 +12576,72 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.0 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 @@ -12374,6 +12656,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12383,26 +12674,60 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.0 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12411,6 +12736,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12437,6 +12771,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.0 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12445,17 +12790,39 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12471,6 +12838,12 @@ snapshots: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-object-rest-spread@7.28.0(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12482,6 +12855,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-object-rest-spread@7.28.0(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.0) + '@babel/traverse': 7.28.0 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12490,11 +12875,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12516,6 +12916,12 @@ snapshots: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12541,11 +12947,27 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-react-constant-elements@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12585,16 +13007,34 @@ snapshots: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-regenerator@7.28.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12603,21 +13043,48 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -12645,24 +13112,51 @@ snapshots: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/preset-env@7.24.3(@babel/core@7.24.3)': dependencies: '@babel/compat-data': 7.28.0 @@ -12749,6 +13243,93 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/preset-env@7.24.3(@babel/core@7.28.0)': + dependencies: + '@babel/compat-data': 7.28.0 + '@babel/core': 7.28.0 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.0) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-classes': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-object-rest-spread': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.0) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-regenerator': 7.28.1(@babel/core@7.28.0) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.0) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.28.0) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.0) + core-js-compat: 3.44.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/preset-flow@7.27.1(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 @@ -12763,6 +13344,14 @@ snapshots: '@babel/types': 7.28.1 esutils: 2.0.3 + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.28.1 + esutils: 2.0.3 + optional: true + '@babel/preset-react@7.24.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -15602,9 +16191,9 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.2.1(@babel/core@7.24.3)(webpack@5.88.0): + babel-loader@9.2.1(@babel/core@7.28.0)(webpack@5.88.0): dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.28.0 find-cache-dir: 4.0.0 schema-utils: 4.3.2 webpack: 5.88.0 @@ -15641,6 +16230,16 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.0): + dependencies: + '@babel/compat-data': 7.28.0 + '@babel/core': 7.28.0 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + optional: true + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.24.3): dependencies: '@babel/core': 7.24.3 @@ -15649,6 +16248,15 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.28.0): + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.0) + core-js-compat: 3.44.0 + transitivePeerDependencies: + - supports-color + optional: true + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.24.3): dependencies: '@babel/core': 7.24.3 @@ -15656,6 +16264,14 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.0): + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.0) + transitivePeerDependencies: + - supports-color + optional: true + babel-preset-current-node-syntax@1.1.0(@babel/core@7.24.3): dependencies: '@babel/core': 7.24.3 @@ -18214,7 +18830,7 @@ snapshots: dependencies: argparse: 2.0.1 - jscodeshift@17.3.0(@babel/preset-env@7.24.3(@babel/core@7.24.3)): + jscodeshift@17.3.0(@babel/preset-env@7.24.3(@babel/core@7.28.0)): dependencies: '@babel/core': 7.28.0 '@babel/parser': 7.28.0 @@ -18235,7 +18851,7 @@ snapshots: tmp: 0.2.3 write-file-atomic: 5.0.1 optionalDependencies: - '@babel/preset-env': 7.24.3(@babel/core@7.24.3) + '@babel/preset-env': 7.24.3(@babel/core@7.28.0) transitivePeerDependencies: - supports-color