diff --git a/.gitignore b/.gitignore index d0e233d6a42..f1a90d05693 100644 --- a/.gitignore +++ b/.gitignore @@ -165,6 +165,7 @@ pkg/services/quota/quotaimpl/storage/storage.json /packages/grafana-ui/.yarn/.cache /packages/grafana-ui/.storybook/static /packages/grafana-ui/unstable +/packages/grafana-flamegraph/.storybook/static /packages/**/dist /packages/**/compiled /packages/**/.rpt2_cache diff --git a/apps/dashboard/pkg/apis/dashboard/v0alpha1/validation.go b/apps/dashboard/pkg/apis/dashboard/v0alpha1/validation.go index 7c5573f600a..a90eab95126 100644 --- a/apps/dashboard/pkg/apis/dashboard/v0alpha1/validation.go +++ b/apps/dashboard/pkg/apis/dashboard/v0alpha1/validation.go @@ -66,6 +66,9 @@ func ValidateDashboardSpec(obj *Dashboard, forceValidation bool) (field.ErrorLis } func formatErrorPath(path []string) string { + if len(path) <= 4 { + return strings.Join(path, ".") + } // omitting the "lineage.schemas[0].schema.spec" prefix here. return strings.Join(path[4:], ".") } diff --git a/apps/dashboard/pkg/apis/dashboard/v1beta1/validation.go b/apps/dashboard/pkg/apis/dashboard/v1beta1/validation.go index b48e38ffd7b..248dc27111c 100644 --- a/apps/dashboard/pkg/apis/dashboard/v1beta1/validation.go +++ b/apps/dashboard/pkg/apis/dashboard/v1beta1/validation.go @@ -67,6 +67,9 @@ func ValidateDashboardSpec(obj *Dashboard, forceValidation bool) (field.ErrorLis } func formatErrorPath(path []string) string { + if len(path) <= 4 { + return strings.Join(path, ".") + } // omitting the "lineage.schemas[0].schema.spec" prefix here. return strings.Join(path[4:], ".") } diff --git a/docs/sources/setup-grafana/configure-grafana/_index.md b/docs/sources/setup-grafana/configure-grafana/_index.md index c81d24d0758..13c2b77fd2f 100644 --- a/docs/sources/setup-grafana/configure-grafana/_index.md +++ b/docs/sources/setup-grafana/configure-grafana/_index.md @@ -1933,6 +1933,10 @@ The initial delay before retrying a failed alert evaluation. Default is `1s`. This value is the starting point for exponential backoff. +#### `initialization_timeout` + +Allows the context deadline for the `AlertNG` service to be configurable. The default timeout is 30s. + #### `max_retry_delay` The maximum delay between retries during exponential backoff. Default is `4s`. diff --git a/packages/grafana-flamegraph/.storybook/copyAssets.ts b/packages/grafana-flamegraph/.storybook/copyAssets.ts new file mode 100644 index 00000000000..ab357f9b72c --- /dev/null +++ b/packages/grafana-flamegraph/.storybook/copyAssets.ts @@ -0,0 +1,66 @@ +// This script is used to copy assets from the public folder to a temporary static folder within +// the .storybook directory. +// We selectively limit assets that are uploaded to the Storybook bucket to prevent rate limiting +// when publishing new storybook. +// Note: Storybook has a static copying feature but it copies entire directories which can contain thousands of icons. + +import fs from 'fs-extra'; +import { resolve } from 'node:path'; + +// avoid importing from @grafana/data to prevent error: window is not defined +import { availableIconsIndex, IconName } from '../../grafana-data/src/types/icon.ts'; +import { getIconSubDir } from '../../grafana-ui/src/components/Icon/utils.ts'; + +const __dirname = import.meta.dirname; + +// doesn't require uploading 1000s of unused assets. +const iconPaths = Object.keys(availableIconsIndex) + .filter((iconName) => !iconName.startsWith('fa ')) + .map((iconName) => { + const subDir = getIconSubDir(iconName as IconName, 'default'); + return { + from: `../../../public/img/icons/${subDir}/${iconName}.svg`, + to: `./static/public/build/img/icons/${subDir}/${iconName}.svg`, + }; + }); + +export function copyAssetsSync() { + const assets = [ + { + from: '../../../public/fonts', + to: './static/public/fonts', + }, + { + from: '../../../public/img/grafana_text_logo-dark.svg', + to: './static/public/img/grafana_text_logo-dark.svg', + }, + { + from: '../../../public/img/grafana_text_logo-light.svg', + to: './static/public/img/grafana_text_logo-light.svg', + }, + { + from: '../../../public/img/fav32.png', + to: './static/public/img/fav32.png', + }, + { + from: '../../../public/lib', + to: './static/public/lib', + }, + ...iconPaths, + // copy over the MSW mock service worker so we can mock requests in Storybook + { + from: '../../../public/mockServiceWorker.js', + to: './static/mockServiceWorker.js', + }, + ]; + + for (const asset of assets) { + const fromPath = resolve(__dirname, asset.from); + const toPath = resolve(__dirname, asset.to); + if (!fs.existsSync(toPath)) { + fs.copySync(fromPath, toPath, { + filter: (src) => !fs.lstatSync(src).isSymbolicLink(), + }); + } + } +} diff --git a/packages/grafana-flamegraph/.storybook/main.ts b/packages/grafana-flamegraph/.storybook/main.ts new file mode 100644 index 00000000000..5f950843923 --- /dev/null +++ b/packages/grafana-flamegraph/.storybook/main.ts @@ -0,0 +1,53 @@ +import type { StorybookConfig } from '@storybook/react-webpack5'; +import { copyAssetsSync } from './copyAssets.ts'; + +import { createRequire } from 'node:module'; +const require = createRequire(import.meta.url); + +copyAssetsSync(); + +const config: StorybookConfig = { + stories: ['../src/**/*.story.tsx'], + addons: [ + { + name: '@storybook/preset-scss', + options: { + styleLoaderOptions: { + // this is required for theme switching .use() and .unuse() + injectType: 'lazyStyleTag', + }, + cssLoaderOptions: { + url: false, + importLoaders: 2, + }, + sassLoaderOptions: { + sassOptions: { + // silencing these warnings since we're planning to remove sass when angular is gone + silenceDeprecations: ['import', 'global-builtin'], + }, + }, + }, + }, + '@storybook/addon-webpack5-compiler-swc', + ], + framework: { + name: '@storybook/react-webpack5', + options: {}, + }, + staticDirs: ['static'], + webpackFinal: async (config) => { + const webpack = await import('webpack'); + + // Define process.env for browser context + config.plugins?.push( + new webpack.default.DefinePlugin({ + 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'), + 'process.env.STORYBOOK_THEME': JSON.stringify(process.env.STORYBOOK_THEME || 'system'), + }) + ); + + return config; + }, +}; + +export default config; diff --git a/packages/grafana-flamegraph/.storybook/preview.ts b/packages/grafana-flamegraph/.storybook/preview.ts new file mode 100644 index 00000000000..00d08fccc24 --- /dev/null +++ b/packages/grafana-flamegraph/.storybook/preview.ts @@ -0,0 +1,54 @@ +import { Preview } from '@storybook/react'; + +import { getBuiltInThemes, getTimeZone, getTimeZones, GrafanaTheme2 } from '@grafana/data'; + +import { withTheme } from '../src/utils/storybook/withTheme'; +import { withTimeZone } from '../src/utils/storybook/withTimeZone'; + +const allowedExtraThemes: string[] = []; + +if (process.env.NODE_ENV === 'development') { + allowedExtraThemes.push('debug'); + allowedExtraThemes.push('desertbloom'); + allowedExtraThemes.push('gildedgrove'); + allowedExtraThemes.push('gloom'); + allowedExtraThemes.push('sapphiredusk'); + allowedExtraThemes.push('tron'); +} + +const preview: Preview = { + decorators: [withTheme(), withTimeZone()], + globalTypes: { + theme: { + name: 'Theme', + description: 'Global theme for components', + defaultValue: 'system', + toolbar: { + icon: 'paintbrush', + items: getBuiltInThemes(allowedExtraThemes).map((theme) => ({ + value: theme.id, + title: theme.name, + })), + showName: true, + }, + }, + timeZone: { + description: 'Set the timezone for the storybook preview', + defaultValue: getTimeZone(), + toolbar: { + icon: 'globe', + items: getTimeZones(true) + .filter((timezone) => !!timezone) + .map((timezone) => ({ + title: timezone, + value: timezone, + })), + }, + }, + }, + initialGlobals: { + theme: process.env.STORYBOOK_THEME || 'system', + }, +}; + +export default preview; diff --git a/packages/grafana-flamegraph/package.json b/packages/grafana-flamegraph/package.json index 3e1c2347cd1..f4ec11c7cfa 100644 --- a/packages/grafana-flamegraph/package.json +++ b/packages/grafana-flamegraph/package.json @@ -36,7 +36,8 @@ "clean": "rimraf ./dist ./compiled ./package.tgz", "typecheck": "tsc --emitDeclarationOnly false --noEmit", "prepack": "cp package.json package.json.bak && node ../../scripts/prepare-npm-package.js", - "postpack": "mv package.json.bak package.json" + "postpack": "mv package.json.bak package.json", + "storybook": "storybook dev -p 6006" }, "browserslist": [ "defaults", @@ -60,11 +61,15 @@ "@babel/preset-env": "7.28.0", "@babel/preset-react": "7.27.1", "@rollup/plugin-node-resolve": "16.0.1", + "@storybook/addon-webpack5-compiler-swc": "^4.0.2", + "@storybook/react": "^10.0.8", + "@storybook/react-webpack5": "^10.0.8", "@testing-library/dom": "10.4.1", "@testing-library/jest-dom": "^6.1.2", "@testing-library/react": "16.3.0", "@testing-library/user-event": "14.6.1", "@types/d3": "^7", + "@types/fs-extra": "^11", "@types/jest": "^29.5.4", "@types/lodash": "4.17.20", "@types/node": "24.10.1", @@ -73,11 +78,13 @@ "@types/tinycolor2": "1.4.6", "babel-jest": "29.7.0", "esbuild": "0.25.8", + "fs-extra": "^11.3.2", "jest": "^29.6.4", "jest-canvas-mock": "2.5.2", "rollup": "^4.22.4", "rollup-plugin-esbuild": "6.2.1", "rollup-plugin-node-externals": "^8.0.0", + "storybook": "^10.0.8", "ts-jest": "29.4.0", "ts-node": "10.9.2", "typescript": "5.9.2" diff --git a/packages/grafana-flamegraph/src/FlameGraph/FlameGraph.story.tsx b/packages/grafana-flamegraph/src/FlameGraph/FlameGraph.story.tsx new file mode 100644 index 00000000000..fdd0cd08074 --- /dev/null +++ b/packages/grafana-flamegraph/src/FlameGraph/FlameGraph.story.tsx @@ -0,0 +1,31 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { createDataFrame } from '@grafana/data'; + +import { ColorScheme, SelectedView } from '../types'; + +import FlameGraph from './FlameGraph'; +import { CollapsedMap, FlameGraphDataContainer } from './dataTransform'; +import { data } from './testData/dataBasic'; + +const meta: Meta = { + title: 'FlameGraph', + component: FlameGraph, + args: { + rangeMin: 0, + rangeMax: 1, + textAlign: 'left', + colorScheme: ColorScheme.PackageBased, + selectedView: SelectedView.Both, + search: '', + }, +}; + +export default meta; +export const Basic: StoryObj = { + render: (args) => { + const dataContainer = new FlameGraphDataContainer(createDataFrame(data), { collapsing: false }); + + return ; + }, +}; diff --git a/packages/grafana-flamegraph/src/FlameGraph/testData/dataBasic.ts b/packages/grafana-flamegraph/src/FlameGraph/testData/dataBasic.ts new file mode 100644 index 00000000000..0d582dfa0b7 --- /dev/null +++ b/packages/grafana-flamegraph/src/FlameGraph/testData/dataBasic.ts @@ -0,0 +1,32 @@ +import { DataFrameDTO } from '@grafana/data'; + +export const data: DataFrameDTO = { + name: 'response', + refId: 'A', + // @ts-ignore + meta: { preferredVisualisationType: 'flamegraph' }, + fields: [ + { + name: 'level', + values: [0, 1, 2, 3, 2, 1], + }, + { + name: 'value', + values: [10000, 5000, 4000, 3000, 500, 3000], + config: { + unit: 'ms', + }, + }, + { + name: 'self', + values: [10000, 500, 1000, 3000, 500, 3000], + config: { + unit: 'ms', + }, + }, + { + name: 'label', + values: ['total', 'fn_1', 'fn_2', 'fn_3', 'fn_4', 'fn_5'], + }, + ], +}; diff --git a/packages/grafana-flamegraph/src/FlameGraphContainer.story.tsx b/packages/grafana-flamegraph/src/FlameGraphContainer.story.tsx new file mode 100644 index 00000000000..67fadcb0cac --- /dev/null +++ b/packages/grafana-flamegraph/src/FlameGraphContainer.story.tsx @@ -0,0 +1,23 @@ +import type { Meta, StoryObj } from '@storybook/react'; + +import { createDataFrame } from '@grafana/data'; +import { useTheme2 } from '@grafana/ui'; + +import { data } from './FlameGraph/testData/dataNestedSet'; +import FlameGraphContainer, { Props } from './FlameGraphContainer'; + +const WrappedFlameGraph = (props: Omit) => { + const theme = useTheme2(); + const df = createDataFrame(data); + return theme} />; +}; + +const meta: Meta = { + title: 'FlameGraphContainer', + render: (args) => { + return ; + }, +}; + +export default meta; +export const Basic: StoryObj = {}; diff --git a/packages/grafana-flamegraph/src/TopTable/FlameGraphTopTableContainer.story.tsx b/packages/grafana-flamegraph/src/TopTable/FlameGraphTopTableContainer.story.tsx new file mode 100644 index 00000000000..37eb7bd4c4e --- /dev/null +++ b/packages/grafana-flamegraph/src/TopTable/FlameGraphTopTableContainer.story.tsx @@ -0,0 +1,41 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { createDataFrame } from '@grafana/data'; + +import { FlameGraphDataContainer } from '../FlameGraph/dataTransform'; +import { data } from '../FlameGraph/testData/dataNestedSet'; +import { ColorScheme } from '../types'; + +import FlameGraphTopTableContainer from './FlameGraphTopTableContainer'; + +const meta: Meta = { + title: 'TopTable', + component: FlameGraphTopTableContainer, + args: { + colorScheme: ColorScheme.ValueBased, + }, + decorators: [ + (Story) => ( +
+ +
+ ), + ], +}; + +export default meta; +export const Basic: StoryObj = { + render: (args) => { + const dataContainer = new FlameGraphDataContainer(createDataFrame(data), { collapsing: true }); + + return ( + {}} + onSearch={() => {}} + onSandwich={() => {}} + /> + ); + }, +}; diff --git a/packages/grafana-flamegraph/src/TopTable/FlameGraphTopTableContainer.tsx b/packages/grafana-flamegraph/src/TopTable/FlameGraphTopTableContainer.tsx index b9072f42c29..dc70b7c5690 100644 --- a/packages/grafana-flamegraph/src/TopTable/FlameGraphTopTableContainer.tsx +++ b/packages/grafana-flamegraph/src/TopTable/FlameGraphTopTableContainer.tsx @@ -144,6 +144,7 @@ function buildFilteredTable(data: FlameGraphDataContainer, matchedLabels?: Set) => { + const theme = getThemeById(themeId); + + const css = ` + #storybook-root { + padding: ${theme.spacing(2)}; + } + + body { + background: ${theme.colors.background.primary}; + } + `; + + return ( + + + + + {children} + + ); +}; + +export const withTheme = + (): Decorator => + // eslint-disable-next-line react/display-name + (story, context) => {story()}; diff --git a/packages/grafana-flamegraph/src/utils/storybook/withTimeZone.tsx b/packages/grafana-flamegraph/src/utils/storybook/withTimeZone.tsx new file mode 100644 index 00000000000..27445b3c24e --- /dev/null +++ b/packages/grafana-flamegraph/src/utils/storybook/withTimeZone.tsx @@ -0,0 +1,12 @@ +import { Decorator } from '@storybook/react'; +import { useEffect } from 'react'; + +import { setTimeZoneResolver } from '@grafana/data'; + +export const withTimeZone = (): Decorator => (Story, context) => { + useEffect(() => { + setTimeZoneResolver(() => context.globals.timeZone ?? 'browser'); + }, [context.globals.timeZone]); + + return Story(); +}; diff --git a/yarn.lock b/yarn.lock index 131a46fe1fc..2022568eb8b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1473,7 +1473,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.11.1, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.0, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.0, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.24.5, @babel/runtime@npm:^7.24.7, @babel/runtime@npm:^7.25.0, @babel/runtime@npm:^7.25.6, @babel/runtime@npm:^7.25.7, @babel/runtime@npm:^7.26.7, @babel/runtime@npm:^7.27.0, @babel/runtime@npm:^7.27.6, @babel/runtime@npm:^7.28.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.7": +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.11.1, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.0, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.0, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.24.5, @babel/runtime@npm:^7.24.7, @babel/runtime@npm:^7.25.0, @babel/runtime@npm:^7.25.6, @babel/runtime@npm:^7.25.7, @babel/runtime@npm:^7.26.10, @babel/runtime@npm:^7.26.7, @babel/runtime@npm:^7.27.0, @babel/runtime@npm:^7.27.6, @babel/runtime@npm:^7.28.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.7": version: 7.28.4 resolution: "@babel/runtime@npm:7.28.4" checksum: 10/6c9a70452322ea80b3c9b2a412bcf60771819213a67576c8cec41e88a95bb7bf01fc983754cda35dc19603eef52df22203ccbf7777b9d6316932f9fb77c25163 @@ -2324,15 +2324,15 @@ __metadata: languageName: node linkType: hard -"@formatjs/ecma402-abstract@npm:2.3.4": - version: 2.3.4 - resolution: "@formatjs/ecma402-abstract@npm:2.3.4" +"@formatjs/ecma402-abstract@npm:2.3.6": + version: 2.3.6 + resolution: "@formatjs/ecma402-abstract@npm:2.3.6" dependencies: "@formatjs/fast-memoize": "npm:2.2.7" - "@formatjs/intl-localematcher": "npm:0.6.1" + "@formatjs/intl-localematcher": "npm:0.6.2" decimal.js: "npm:^10.4.3" tslib: "npm:^2.8.0" - checksum: 10/573971ffc291096a4b9fcc80b4708124e89bf2e3ac50e0f78b41eb797e9aa1b842f4dc3665e4467a853c738386821769d9e40408a1d25bc73323a1f057a16cf2 + checksum: 10/30b1b5cd6b62ba46245f934429936592df5500bc1b089dc92dd49c826757b873dd92c305dcfe370701e4df6b057bf007782113abb9b65db550d73be4961718bc languageName: node linkType: hard @@ -2376,13 +2376,13 @@ __metadata: linkType: hard "@formatjs/intl-durationformat@npm:^0.7.0": - version: 0.7.4 - resolution: "@formatjs/intl-durationformat@npm:0.7.4" + version: 0.7.6 + resolution: "@formatjs/intl-durationformat@npm:0.7.6" dependencies: - "@formatjs/ecma402-abstract": "npm:2.3.4" - "@formatjs/intl-localematcher": "npm:0.6.1" + "@formatjs/ecma402-abstract": "npm:2.3.6" + "@formatjs/intl-localematcher": "npm:0.6.2" tslib: "npm:^2.8.0" - checksum: 10/d62273ecd635475ca91e9b501301f3f396403fa91b584c550734b19b2d194ba1316b27303fed985c1d42ae933d54eb220da6540edfdf376b0d9371ecfd0d4e15 + checksum: 10/442236ba85bcd9cb7296c43a708271fa09f110b1ca9d5899066d00812fc2965eaeaec6b5240be421b80daba62860352131088449ba0fcd2061f671cec6240f0b languageName: node linkType: hard @@ -2395,12 +2395,12 @@ __metadata: languageName: node linkType: hard -"@formatjs/intl-localematcher@npm:0.6.1": - version: 0.6.1 - resolution: "@formatjs/intl-localematcher@npm:0.6.1" +"@formatjs/intl-localematcher@npm:0.6.2": + version: 0.6.2 + resolution: "@formatjs/intl-localematcher@npm:0.6.2" dependencies: tslib: "npm:^2.8.0" - checksum: 10/c7b3bc8395d18670677f207b2fd107561fff5d6394a9b4273c29e0bea920300ec3a2eefead600ebb7761c04a770cada28f78ac059f84d00520bfb57a9db36998 + checksum: 10/eb12a7f5367bbecdfafc20d7f005559ce840f420e970f425c5213d35e94e86dfe75bde03464971a26494bf8427d4961269db22ecad2834f2a19d888b5d9cc064 languageName: node linkType: hard @@ -3260,11 +3260,15 @@ __metadata: "@grafana/ui": "npm:12.4.0-pre" "@leeoniya/ufuzzy": "npm:1.0.19" "@rollup/plugin-node-resolve": "npm:16.0.1" + "@storybook/addon-webpack5-compiler-swc": "npm:^4.0.2" + "@storybook/react": "npm:^10.0.8" + "@storybook/react-webpack5": "npm:^10.0.8" "@testing-library/dom": "npm:10.4.1" "@testing-library/jest-dom": "npm:^6.1.2" "@testing-library/react": "npm:16.3.0" "@testing-library/user-event": "npm:14.6.1" "@types/d3": "npm:^7" + "@types/fs-extra": "npm:^11" "@types/jest": "npm:^29.5.4" "@types/lodash": "npm:4.17.20" "@types/node": "npm:24.10.1" @@ -3274,6 +3278,7 @@ __metadata: babel-jest: "npm:29.7.0" d3: "npm:^7.8.5" esbuild: "npm:0.25.8" + fs-extra: "npm:^11.3.2" jest: "npm:^29.6.4" jest-canvas-mock: "npm:2.5.2" lodash: "npm:4.17.21" @@ -3283,6 +3288,7 @@ __metadata: rollup: "npm:^4.22.4" rollup-plugin-esbuild: "npm:6.2.1" rollup-plugin-node-externals: "npm:^8.0.0" + storybook: "npm:^10.0.8" tinycolor2: "npm:1.6.0" ts-jest: "npm:29.4.0" ts-node: "npm:10.9.2" @@ -4245,7 +4251,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/type@npm:^3.0.10, @inquirer/type@npm:^3.0.9": +"@inquirer/type@npm:^3.0.10": version: 3.0.10 resolution: "@inquirer/type@npm:3.0.10" peerDependencies: @@ -4257,6 +4263,18 @@ __metadata: languageName: node linkType: hard +"@inquirer/type@npm:^3.0.9": + version: 3.0.9 + resolution: "@inquirer/type@npm:3.0.9" + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10/960ba4737405f70bac17e7cdc4696c60064b06c8dd13a4b3d0783763ba1714bdadbd598b88d537ab9415b7d5d61e011ac042cfbd1438b2a35298e2868724b853 + languageName: node + linkType: hard + "@internationalized/date@npm:^3.10.0": version: 3.10.0 resolution: "@internationalized/date@npm:3.10.0" @@ -5027,6 +5045,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.5.5": + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: 10/5d9d207b462c11e322d71911e55e21a4e2772f71ffe8d6f1221b8eb5ae6774458c1d242f897fb0814e8714ca9a6b498abfa74dfe4f434493342902b1a48b33a5 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:0.3.9": version: 0.3.9 resolution: "@jridgewell/trace-mapping@npm:0.3.9" @@ -6096,9 +6121,9 @@ __metadata: linkType: hard "@openfeature/core@npm:^1.9.0": - version: 1.9.0 - resolution: "@openfeature/core@npm:1.9.0" - checksum: 10/c6d20edc09053afd99752fe46d8328158680950bca4b86679f67f79249d7226eea127b31fffdc38e26ecb729f2bab5a4a5a7c1db708ae76b7fbbac68cd56f094 + version: 1.9.1 + resolution: "@openfeature/core@npm:1.9.1" + checksum: 10/6099e16b1b4cd6e3c45c05ab4acd44c9cb4ab501b676ab6f3e77f0be1b56abc7506c5629187381333a02975d315d831e0905582435b356d9676255e72a465899 languageName: node linkType: hard @@ -6123,11 +6148,11 @@ __metadata: linkType: hard "@openfeature/web-sdk@npm:^1.6.1": - version: 1.6.1 - resolution: "@openfeature/web-sdk@npm:1.6.1" + version: 1.7.1 + resolution: "@openfeature/web-sdk@npm:1.7.1" peerDependencies: "@openfeature/core": ^1.9.0 - checksum: 10/8bd7d1ea386e21cdd7492cab2fd1d2b138b4e6a376a4c0a40244633e5955f6452039bc2633fc5230bd7b494506a4137ba7210d40850634f9618f77a0ee435f9d + checksum: 10/358cabfddda8bf67a9bd96ce28f0f84a3218416907f8df4f2a58750ee840d164d86a1c859e8c9aa92d132fa28fcf72a0f17ceece798ff8af297d3e1c1e30cdab languageName: node linkType: hard @@ -7943,6 +7968,18 @@ __metadata: languageName: node linkType: hard +"@storybook/addon-webpack5-compiler-swc@npm:^4.0.2": + version: 4.0.2 + resolution: "@storybook/addon-webpack5-compiler-swc@npm:4.0.2" + dependencies: + "@swc/core": "npm:^1.13.5" + swc-loader: "npm:^0.2.6" + peerDependencies: + storybook: ^9.0.0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 + checksum: 10/1383346b97d9f679ad830751dd1c94c8ab1c6aeb141feda60dcc7ef2ac69e97c3fb3a2a2a3f020e07598dea315760cb0c079f928f29faaf12f143d627487b0e1 + languageName: node + linkType: hard + "@storybook/blocks@npm:8.6.2, @storybook/blocks@npm:^8.6.2": version: 8.6.2 resolution: "@storybook/blocks@npm:8.6.2" @@ -7962,6 +7999,34 @@ __metadata: languageName: node linkType: hard +"@storybook/builder-webpack5@npm:10.0.8": + version: 10.0.8 + resolution: "@storybook/builder-webpack5@npm:10.0.8" + dependencies: + "@storybook/core-webpack": "npm:10.0.8" + case-sensitive-paths-webpack-plugin: "npm:^2.4.0" + cjs-module-lexer: "npm:^1.2.3" + css-loader: "npm:^7.1.2" + es-module-lexer: "npm:^1.5.0" + fork-ts-checker-webpack-plugin: "npm:^9.1.0" + html-webpack-plugin: "npm:^5.5.0" + magic-string: "npm:^0.30.5" + style-loader: "npm:^4.0.0" + terser-webpack-plugin: "npm:^5.3.14" + ts-dedent: "npm:^2.0.0" + webpack: "npm:5" + webpack-dev-middleware: "npm:^6.1.2" + webpack-hot-middleware: "npm:^2.25.1" + webpack-virtual-modules: "npm:^0.6.0" + peerDependencies: + storybook: ^10.0.8 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/136ad58f58a3595d443fa4bd3a5dd9cca30a52a59c3a34e82d1b32b1be82e292b02d3c4b74204b1e5d92c3bab3de86a164ae69f19671a52408da5cc14f550720 + languageName: node + linkType: hard + "@storybook/builder-webpack5@npm:8.6.2": version: 8.6.2 resolution: "@storybook/builder-webpack5@npm:8.6.2" @@ -8017,6 +8082,17 @@ __metadata: languageName: node linkType: hard +"@storybook/core-webpack@npm:10.0.8": + version: 10.0.8 + resolution: "@storybook/core-webpack@npm:10.0.8" + dependencies: + ts-dedent: "npm:^2.0.0" + peerDependencies: + storybook: ^10.0.8 + checksum: 10/b71baea4b0c929d1173c39bf287be94fd2862c91cf0945bed62331a4ed2b6f96dc9273b1d8b229e885cfd260d0cac7d7a8a86582a20d95c5bf27669be198752e + languageName: node + linkType: hard + "@storybook/core-webpack@npm:8.6.2": version: 8.6.2 resolution: "@storybook/core-webpack@npm:8.6.2" @@ -8080,6 +8156,16 @@ __metadata: languageName: node linkType: hard +"@storybook/icons@npm:^1.6.0": + version: 1.6.0 + resolution: "@storybook/icons@npm:1.6.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + checksum: 10/f9036ca3b0d2904778eb4e202305f2780b549434380f9760f0bc704fe3ee19d7332f9560a66435ebb2156346cee9a863e40fa5e4b27790bf993b0c1180a3146d + languageName: node + linkType: hard + "@storybook/instrumenter@npm:8.6.2": version: 8.6.2 resolution: "@storybook/instrumenter@npm:8.6.2" @@ -8108,6 +8194,30 @@ __metadata: languageName: node linkType: hard +"@storybook/preset-react-webpack@npm:10.0.8": + version: 10.0.8 + resolution: "@storybook/preset-react-webpack@npm:10.0.8" + dependencies: + "@storybook/core-webpack": "npm:10.0.8" + "@storybook/react-docgen-typescript-plugin": "npm:1.0.6--canary.9.0c3f3b7.0" + "@types/semver": "npm:^7.3.4" + magic-string: "npm:^0.30.5" + react-docgen: "npm:^7.1.1" + resolve: "npm:^1.22.8" + semver: "npm:^7.3.7" + tsconfig-paths: "npm:^4.2.0" + webpack: "npm:5" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^10.0.8 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/b361b27b1550db1f03888fb06596cee35e1b6724aa41eafc23e47b28623d64c5ec1d33d0120f0280e49064a573144ccf8de114014f1d2f23730045be0ac86773 + languageName: node + linkType: hard + "@storybook/preset-react-webpack@npm:8.6.2": version: 8.6.2 resolution: "@storybook/preset-react-webpack@npm:8.6.2" @@ -8172,6 +8282,17 @@ __metadata: languageName: node linkType: hard +"@storybook/react-dom-shim@npm:10.0.8": + version: 10.0.8 + resolution: "@storybook/react-dom-shim@npm:10.0.8" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^10.0.8 + checksum: 10/99106afb92644ce801c0c24923e40d78d7ed935b9f8f10ceb1a1a827d777d294c37ecbdf793148747dcb4e735a34d876c691b6bac82c7058deef9ad451147dd1 + languageName: node + linkType: hard + "@storybook/react-dom-shim@npm:8.6.2": version: 8.6.2 resolution: "@storybook/react-dom-shim@npm:8.6.2" @@ -8183,6 +8304,25 @@ __metadata: languageName: node linkType: hard +"@storybook/react-webpack5@npm:^10.0.8": + version: 10.0.8 + resolution: "@storybook/react-webpack5@npm:10.0.8" + dependencies: + "@storybook/builder-webpack5": "npm:10.0.8" + "@storybook/preset-react-webpack": "npm:10.0.8" + "@storybook/react": "npm:10.0.8" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^10.0.8 + typescript: ">= 4.9.x" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/384b1261a9a94c4399109da0121c0070b8138a1a1ce7d1a39bab43fe5c4898144ffacb22308d6d7101677f5c4b70ffe0001b41054cc675ffe8d0fa7c84e9ed24 + languageName: node + linkType: hard + "@storybook/react-webpack5@npm:^8.6.2": version: 8.6.2 resolution: "@storybook/react-webpack5@npm:8.6.2" @@ -8202,6 +8342,24 @@ __metadata: languageName: node linkType: hard +"@storybook/react@npm:10.0.8, @storybook/react@npm:^10.0.8": + version: 10.0.8 + resolution: "@storybook/react@npm:10.0.8" + dependencies: + "@storybook/global": "npm:^5.0.0" + "@storybook/react-dom-shim": "npm:10.0.8" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^10.0.8 + typescript: ">= 4.9.x" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/cbb46246958a0d2db0cc641661a14e5ae20b08ee4d2626e6d39ae4332053b3c6d84bdb77e36bc839ae7dd770504049f187466383ee06aac33bc2ef5a1c69b78f + languageName: node + linkType: hard + "@storybook/react@npm:8.6.2, @storybook/react@npm:^8.6.2": version: 8.6.2 resolution: "@storybook/react@npm:8.6.2" @@ -8881,6 +9039,13 @@ __metadata: languageName: node linkType: hard +"@swc/core-darwin-arm64@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-darwin-arm64@npm:1.15.3" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@swc/core-darwin-x64@npm:1.13.3": version: 1.13.3 resolution: "@swc/core-darwin-x64@npm:1.13.3" @@ -8895,6 +9060,13 @@ __metadata: languageName: node linkType: hard +"@swc/core-darwin-x64@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-darwin-x64@npm:1.15.3" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@swc/core-linux-arm-gnueabihf@npm:1.13.3": version: 1.13.3 resolution: "@swc/core-linux-arm-gnueabihf@npm:1.13.3" @@ -8909,6 +9081,13 @@ __metadata: languageName: node linkType: hard +"@swc/core-linux-arm-gnueabihf@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.15.3" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@swc/core-linux-arm64-gnu@npm:1.13.3": version: 1.13.3 resolution: "@swc/core-linux-arm64-gnu@npm:1.13.3" @@ -8923,6 +9102,13 @@ __metadata: languageName: node linkType: hard +"@swc/core-linux-arm64-gnu@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-linux-arm64-gnu@npm:1.15.3" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@swc/core-linux-arm64-musl@npm:1.13.3": version: 1.13.3 resolution: "@swc/core-linux-arm64-musl@npm:1.13.3" @@ -8937,6 +9123,13 @@ __metadata: languageName: node linkType: hard +"@swc/core-linux-arm64-musl@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-linux-arm64-musl@npm:1.15.3" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@swc/core-linux-x64-gnu@npm:1.13.3": version: 1.13.3 resolution: "@swc/core-linux-x64-gnu@npm:1.13.3" @@ -8951,6 +9144,13 @@ __metadata: languageName: node linkType: hard +"@swc/core-linux-x64-gnu@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-linux-x64-gnu@npm:1.15.3" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@swc/core-linux-x64-musl@npm:1.13.3": version: 1.13.3 resolution: "@swc/core-linux-x64-musl@npm:1.13.3" @@ -8965,6 +9165,13 @@ __metadata: languageName: node linkType: hard +"@swc/core-linux-x64-musl@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-linux-x64-musl@npm:1.15.3" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@swc/core-win32-arm64-msvc@npm:1.13.3": version: 1.13.3 resolution: "@swc/core-win32-arm64-msvc@npm:1.13.3" @@ -8979,6 +9186,13 @@ __metadata: languageName: node linkType: hard +"@swc/core-win32-arm64-msvc@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-win32-arm64-msvc@npm:1.15.3" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@swc/core-win32-ia32-msvc@npm:1.13.3": version: 1.13.3 resolution: "@swc/core-win32-ia32-msvc@npm:1.13.3" @@ -8993,6 +9207,13 @@ __metadata: languageName: node linkType: hard +"@swc/core-win32-ia32-msvc@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-win32-ia32-msvc@npm:1.15.3" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@swc/core-win32-x64-msvc@npm:1.13.3": version: 1.13.3 resolution: "@swc/core-win32-x64-msvc@npm:1.13.3" @@ -9007,6 +9228,13 @@ __metadata: languageName: node linkType: hard +"@swc/core-win32-x64-msvc@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-win32-x64-msvc@npm:1.15.3" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@swc/core@npm:1.13.3": version: 1.13.3 resolution: "@swc/core@npm:1.13.3" @@ -9053,7 +9281,7 @@ __metadata: languageName: node linkType: hard -"@swc/core@npm:1.15.2, @swc/core@npm:^1.10.8, @swc/core@npm:^1.5.22": +"@swc/core@npm:1.15.2, @swc/core@npm:^1.13.5": version: 1.15.2 resolution: "@swc/core@npm:1.15.2" dependencies: @@ -9099,6 +9327,52 @@ __metadata: languageName: node linkType: hard +"@swc/core@npm:^1.10.8, @swc/core@npm:^1.5.22": + version: 1.15.3 + resolution: "@swc/core@npm:1.15.3" + dependencies: + "@swc/core-darwin-arm64": "npm:1.15.3" + "@swc/core-darwin-x64": "npm:1.15.3" + "@swc/core-linux-arm-gnueabihf": "npm:1.15.3" + "@swc/core-linux-arm64-gnu": "npm:1.15.3" + "@swc/core-linux-arm64-musl": "npm:1.15.3" + "@swc/core-linux-x64-gnu": "npm:1.15.3" + "@swc/core-linux-x64-musl": "npm:1.15.3" + "@swc/core-win32-arm64-msvc": "npm:1.15.3" + "@swc/core-win32-ia32-msvc": "npm:1.15.3" + "@swc/core-win32-x64-msvc": "npm:1.15.3" + "@swc/counter": "npm:^0.1.3" + "@swc/types": "npm:^0.1.25" + peerDependencies: + "@swc/helpers": ">=0.5.17" + dependenciesMeta: + "@swc/core-darwin-arm64": + optional: true + "@swc/core-darwin-x64": + optional: true + "@swc/core-linux-arm-gnueabihf": + optional: true + "@swc/core-linux-arm64-gnu": + optional: true + "@swc/core-linux-arm64-musl": + optional: true + "@swc/core-linux-x64-gnu": + optional: true + "@swc/core-linux-x64-musl": + optional: true + "@swc/core-win32-arm64-msvc": + optional: true + "@swc/core-win32-ia32-msvc": + optional: true + "@swc/core-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@swc/helpers": + optional: true + checksum: 10/280330d82328818138ed64fdcf9ea9abde6b6f16eca65a9d4db27dde06a8dfffd2649f3447d2243387277513c7430fa4142cafcfd64e943d682ce6a713cb8c2d + languageName: node + linkType: hard + "@swc/counter@npm:^0.1.3": version: 0.1.3 resolution: "@swc/counter@npm:0.1.3" @@ -9480,6 +9754,16 @@ __metadata: languageName: node linkType: hard +"@types/chai@npm:^5.2.2": + version: 5.2.3 + resolution: "@types/chai@npm:5.2.3" + dependencies: + "@types/deep-eql": "npm:*" + assertion-error: "npm:^2.0.1" + checksum: 10/e79947307dc235953622e65f83d2683835212357ca261389116ab90bed369ac862ba28b146b4fed08b503ae1e1a12cb93ce783f24bb8d562950469f4320e1c7c + languageName: node + linkType: hard + "@types/chance@npm:^1.1.7": version: 1.1.7 resolution: "@types/chance@npm:1.1.7" @@ -9844,6 +10128,13 @@ __metadata: languageName: node linkType: hard +"@types/deep-eql@npm:*": + version: 4.0.2 + resolution: "@types/deep-eql@npm:4.0.2" + checksum: 10/249a27b0bb22f6aa28461db56afa21ec044fa0e303221a62dff81831b20c8530502175f1a49060f7099e7be06181078548ac47c668de79ff9880241968d43d0c + languageName: node + linkType: hard + "@types/doctrine@npm:^0.0.9": version: 0.0.9 resolution: "@types/doctrine@npm:0.0.9" @@ -9916,7 +10207,7 @@ __metadata: languageName: node linkType: hard -"@types/fs-extra@npm:^11.0.4": +"@types/fs-extra@npm:^11, @types/fs-extra@npm:^11.0.4": version: 11.0.4 resolution: "@types/fs-extra@npm:11.0.4" dependencies: @@ -11134,6 +11425,38 @@ __metadata: languageName: node linkType: hard +"@vitest/expect@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/expect@npm:3.2.4" + dependencies: + "@types/chai": "npm:^5.2.2" + "@vitest/spy": "npm:3.2.4" + "@vitest/utils": "npm:3.2.4" + chai: "npm:^5.2.0" + tinyrainbow: "npm:^2.0.0" + checksum: 10/dc69ce886c13714dfbbff78f2d2cb7eb536017e82301a73c42d573a9e9d2bf91005ac7abd9b977adf0a3bd431209f45a8ac2418029b68b0a377e092607c843ce + languageName: node + linkType: hard + +"@vitest/mocker@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/mocker@npm:3.2.4" + dependencies: + "@vitest/spy": "npm:3.2.4" + estree-walker: "npm:^3.0.3" + magic-string: "npm:^0.30.17" + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + checksum: 10/5e92431b6ed9fc1679060e4caef3e4623f4750542a5d7cd944774f8217c4d231e273202e8aea00bab33260a5a9222ecb7005d80da0348c3c829bd37d123071a8 + languageName: node + linkType: hard + "@vitest/pretty-format@npm:2.0.5": version: 2.0.5 resolution: "@vitest/pretty-format@npm:2.0.5" @@ -11152,6 +11475,15 @@ __metadata: languageName: node linkType: hard +"@vitest/pretty-format@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/pretty-format@npm:3.2.4" + dependencies: + tinyrainbow: "npm:^2.0.0" + checksum: 10/8dd30cbf956e01fbab042fe651fb5175d9f0cd00b7b569a46cd98df89c4fec47dab12916201ad6e09a4f25f2a2ec8927a4bfdc61118593097f759c90b18a51d4 + languageName: node + linkType: hard + "@vitest/spy@npm:2.0.5": version: 2.0.5 resolution: "@vitest/spy@npm:2.0.5" @@ -11161,6 +11493,15 @@ __metadata: languageName: node linkType: hard +"@vitest/spy@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/spy@npm:3.2.4" + dependencies: + tinyspy: "npm:^4.0.3" + checksum: 10/7d38c299f42a8c7e5e41652b203af98ca54e63df69c3b072d0e401d5a57fbbba3e39d8538ac1b3022c26718a6388d0bcc222bc2f07faab75942543b9247c007d + languageName: node + linkType: hard + "@vitest/utils@npm:2.0.5": version: 2.0.5 resolution: "@vitest/utils@npm:2.0.5" @@ -11173,6 +11514,17 @@ __metadata: languageName: node linkType: hard +"@vitest/utils@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/utils@npm:3.2.4" + dependencies: + "@vitest/pretty-format": "npm:3.2.4" + loupe: "npm:^3.1.4" + tinyrainbow: "npm:^2.0.0" + checksum: 10/7f12ef63bd8ee13957744d1f336b0405f164ade4358bf9dfa531f75bbb58ffac02bf61aba65724311ddbc50b12ba54853a169e59c6b837c16086173b9a480710 + languageName: node + linkType: hard + "@vitest/utils@npm:^2.1.1": version: 2.1.9 resolution: "@vitest/utils@npm:2.1.9" @@ -13201,6 +13553,19 @@ __metadata: languageName: node linkType: hard +"chai@npm:^5.2.0": + version: 5.3.3 + resolution: "chai@npm:5.3.3" + dependencies: + assertion-error: "npm:^2.0.1" + check-error: "npm:^2.1.1" + deep-eql: "npm:^5.0.1" + loupe: "npm:^3.1.0" + pathval: "npm:^2.0.0" + checksum: 10/0d0ef63106083b05c7ba510697cd9991a02b8df5984a7d010ab4af10205c7a1f27d1c06bfa4679540894295ac4dcc22aa2a281e2e4cfe5133c1db379626689a2 + languageName: node + linkType: hard + "chalk@npm:4.1.0": version: 4.1.0 resolution: "chalk@npm:4.1.0" @@ -14455,7 +14820,7 @@ __metadata: languageName: node linkType: hard -"css-loader@npm:7.1.2": +"css-loader@npm:7.1.2, css-loader@npm:^7.1.2": version: 7.1.2 resolution: "css-loader@npm:7.1.2" dependencies: @@ -17951,7 +18316,7 @@ __metadata: languageName: node linkType: hard -"fork-ts-checker-webpack-plugin@npm:9.1.0": +"fork-ts-checker-webpack-plugin@npm:9.1.0, fork-ts-checker-webpack-plugin@npm:^9.1.0": version: 9.1.0 resolution: "fork-ts-checker-webpack-plugin@npm:9.1.0" dependencies: @@ -18097,6 +18462,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^11.3.2": + version: 11.3.2 + resolution: "fs-extra@npm:11.3.2" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10/d559545c73fda69c75aa786f345c2f738b623b42aea850200b1582e006a35278f63787179e3194ba19413c26a280441758952b0c7e88dd96762d497e365a6c3e + languageName: node + linkType: hard + "fs-extra@npm:^8.0.1, fs-extra@npm:^8.1.0": version: 8.1.0 resolution: "fs-extra@npm:8.1.0" @@ -20037,22 +20413,22 @@ __metadata: linkType: hard "i18next@npm:^23.5.1 || ^24.2.0": - version: 24.2.2 - resolution: "i18next@npm:24.2.2" + version: 24.2.3 + resolution: "i18next@npm:24.2.3" dependencies: - "@babel/runtime": "npm:^7.23.2" + "@babel/runtime": "npm:^7.26.10" peerDependencies: typescript: ^5 peerDependenciesMeta: typescript: optional: true - checksum: 10/f66ed9e56d9412e59502f5df39163631daf9f1264774732fb21edbd66a528ca7a6b67dc2e2aec95683c6c7956e42c651587a54bd8ee082bd12008880ce6cd326 + checksum: 10/6c73d964f2a98b1aa2c2717fe6da66fc265bcbbc5fcd52b2bfff51ff013d30d4f7d7449c4eb7f464d27af43e2e73f2e7f1d46a144d731bd3bdb1385d4c199e4c languageName: node linkType: hard "i18next@npm:^25.0.0, i18next@npm:^25.5.2": - version: 25.5.2 - resolution: "i18next@npm:25.5.2" + version: 25.6.2 + resolution: "i18next@npm:25.6.2" dependencies: "@babel/runtime": "npm:^7.27.6" peerDependencies: @@ -20060,7 +20436,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10/8d52e82386722a228f4465aa5cf39d82bd9861ea9cc8b31d7cc4d22d5e70b2740ee006068b09f486d5273cabd227a2ac14f37d68fab26344524200083f679bcd + checksum: 10/bb7f3e200caac72bacaead766287dbad5ed5945430bd9f2be1c14fbccd49cf78ab751f78cf53cd0be3ec063bc4c40837d7d771f7b14d50fcb9022e1ed5d6e72f languageName: node linkType: hard @@ -23161,9 +23537,9 @@ __metadata: linkType: hard "lossless-json@npm:^4.1.1": - version: 4.2.0 - resolution: "lossless-json@npm:4.2.0" - checksum: 10/b29cbf9a90b8f3108219ff410223a90a3a6ad14cf902eed4038571d9421c69ade7077fb59737e1ca20f3f404ddd68fad69be11365b0d79b4b61421b054759551 + version: 4.3.0 + resolution: "lossless-json@npm:4.3.0" + checksum: 10/a984a882c79b6e62a917d0202518472c17587bdee002f1427d7ec61115f9fbdeb5f0baa9f0e9fff8d9dbacd17da6b6c910012b2dcab69dd33d151cb7c13d5a37 languageName: node linkType: hard @@ -23174,6 +23550,13 @@ __metadata: languageName: node linkType: hard +"loupe@npm:^3.1.4": + version: 3.2.1 + resolution: "loupe@npm:3.2.1" + checksum: 10/a4d78ec758aaa04e0e35d5cd1c15e970beb9cdbfd3d0f34f98b9bcda489f896a7190b3b6cc40b7a6dcb8e97e82e96eafaae10096aaa469804acdba6f7c2bde5f + languageName: node + linkType: hard + "lower-case@npm:^2.0.2": version: 2.0.2 resolution: "lower-case@npm:2.0.2" @@ -23262,6 +23645,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.30.17": + version: 0.30.21 + resolution: "magic-string@npm:0.30.21" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.5" + checksum: 10/57d5691f41ed40d962d8bd300148114f53db67fadbff336207db10a99f2bdf4a1be9cac3a68ee85dba575912ee1d4402e4396408196ec2d3afd043b076156221 + languageName: node + linkType: hard + "magic-string@npm:^0.30.3, magic-string@npm:^0.30.5": version: 0.30.17 resolution: "magic-string@npm:0.30.17" @@ -23638,9 +24030,9 @@ __metadata: linkType: hard "micro-memoize@npm:^4.1.2": - version: 4.1.3 - resolution: "micro-memoize@npm:4.1.3" - checksum: 10/4e9c7767911cc76ae9c9779584ec87844437af9446b295a01774640a732c2c7f91944794027f44625031f7330ab7f9147740d0a9fb612680d1d2d858dad43402 + version: 4.2.0 + resolution: "micro-memoize@npm:4.2.0" + checksum: 10/260e27a5c15809f7dc435a89a424d93e49ccca62b743fa96ee72f254264df58c95edacbd847a2899a6d7f8ad0daef188548a8b12add5ccff83e88869a50a762c languageName: node linkType: hard @@ -27948,6 +28340,24 @@ __metadata: languageName: node linkType: hard +"react-docgen@npm:^7.1.1": + version: 7.1.1 + resolution: "react-docgen@npm:7.1.1" + dependencies: + "@babel/core": "npm:^7.18.9" + "@babel/traverse": "npm:^7.18.9" + "@babel/types": "npm:^7.18.9" + "@types/babel__core": "npm:^7.18.0" + "@types/babel__traverse": "npm:^7.18.0" + "@types/doctrine": "npm:^0.0.9" + "@types/resolve": "npm:^1.20.2" + doctrine: "npm:^3.0.0" + resolve: "npm:^1.22.1" + strip-indent: "npm:^4.0.0" + checksum: 10/501e5fa0d00e32ee27559f44462a34e9531018ccb46c51efbe60b98a4c077f43dbe8999da5bb91d2ab45a83a34099436a3b725fdabd3f218dbb4493c0b1c9f95 + languageName: node + linkType: hard + "react-dom@npm:18.3.1": version: 18.3.1 resolution: "react-dom@npm:18.3.1" @@ -30862,6 +31272,32 @@ __metadata: languageName: node linkType: hard +"storybook@npm:^10.0.8": + version: 10.0.8 + resolution: "storybook@npm:10.0.8" + dependencies: + "@storybook/global": "npm:^5.0.0" + "@storybook/icons": "npm:^1.6.0" + "@testing-library/jest-dom": "npm:^6.6.3" + "@testing-library/user-event": "npm:^14.6.1" + "@vitest/expect": "npm:3.2.4" + "@vitest/mocker": "npm:3.2.4" + "@vitest/spy": "npm:3.2.4" + esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0" + recast: "npm:^0.23.5" + semver: "npm:^7.6.2" + ws: "npm:^8.18.0" + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + bin: + storybook: ./dist/bin/dispatcher.js + checksum: 10/a30b54248d69d7406f78e1871e075092ed9ae366d1c7cec56dc10b31b72a5196ef9e751453c9a7546797228c4fe0f01893c6fa541d24cf51037124d4f0e1566e + languageName: node + linkType: hard + "storybook@npm:^8.6.2": version: 8.6.2 resolution: "storybook@npm:8.6.2" @@ -31210,7 +31646,7 @@ __metadata: languageName: node linkType: hard -"style-loader@npm:4.0.0": +"style-loader@npm:4.0.0, style-loader@npm:^4.0.0": version: 4.0.0 resolution: "style-loader@npm:4.0.0" peerDependencies: @@ -31656,7 +32092,7 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:5.3.14, terser-webpack-plugin@npm:^5.3.1, terser-webpack-plugin@npm:^5.3.10, terser-webpack-plugin@npm:^5.3.11": +"terser-webpack-plugin@npm:5.3.14, terser-webpack-plugin@npm:^5.3.1, terser-webpack-plugin@npm:^5.3.10, terser-webpack-plugin@npm:^5.3.11, terser-webpack-plugin@npm:^5.3.14": version: 5.3.14 resolution: "terser-webpack-plugin@npm:5.3.14" dependencies: @@ -31860,6 +32296,13 @@ __metadata: languageName: node linkType: hard +"tinyrainbow@npm:^2.0.0": + version: 2.0.0 + resolution: "tinyrainbow@npm:2.0.0" + checksum: 10/94d4e16246972614a5601eeb169ba94f1d49752426312d3cf8cc4f2cc663a2e354ffc653aa4de4eebccbf9eeebdd0caef52d1150271fdfde65d7ae7f3dcb9eb5 + languageName: node + linkType: hard + "tinyspy@npm:^3.0.0": version: 3.0.2 resolution: "tinyspy@npm:3.0.2" @@ -31867,6 +32310,13 @@ __metadata: languageName: node linkType: hard +"tinyspy@npm:^4.0.3": + version: 4.0.4 + resolution: "tinyspy@npm:4.0.4" + checksum: 10/858a99e3ded2fba8fe7c243099d9e58e926d6525af03d19cdf86c1a9a30398161fb830b4f77890d266bcc1c69df08fa6f4baf29d089385e4cdaa98d7b6296e7c + languageName: node + linkType: hard + "title-case@npm:^3.0.3": version: 3.0.3 resolution: "title-case@npm:3.0.3" @@ -34037,7 +34487,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.18.3, ws@npm:^8.2.3, ws@npm:^8.9.0": +"ws@npm:^8.18.0, ws@npm:^8.18.3, ws@npm:^8.2.3, ws@npm:^8.9.0": version: 8.18.3 resolution: "ws@npm:8.18.3" peerDependencies: