diff --git a/.vscode/settings.json b/.vscode/settings.json index 6eb5b69d..184991f8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,21 +1,8 @@ { - "typescript.tsdk": "node_modules/typescript/lib", "editor.formatOnSave": true, - "javascript.format.enable": true, - "eslint.workingDirectories": [ - "packages/react-components", - "packages/docs", - ], - "eslint.validate": [ - "javascript", - "javascriptreact", - "typescript", - "typescriptreact" - ], - "css.validate": false, - "less.validate": false, - "scss.validate": false, + "editor.defaultFormatter": "biomejs.biome", "editor.codeActionsOnSave": { - "source.fixAll": "explicit" + "quickfix.biome": "explicit", + "source.organizeImports.biome": "explicit" } -} \ No newline at end of file +} diff --git a/biome.json b/biome.json index 64996857..173dadfd 100644 --- a/biome.json +++ b/biome.json @@ -1,31 +1,31 @@ { - "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", - "vcs": { - "enabled": false, - "clientKind": "git", - "useIgnoreFile": false - }, - "files": { - "ignoreUnknown": false, - "ignore": [] - }, - "formatter": { - "enabled": true, - "indentStyle": "space" - }, - "organizeImports": { - "enabled": true - }, - "linter": { - "enabled": true, - "rules": { - "recommended": true - } - }, - "javascript": { - "formatter": { - "quoteStyle": "double", - "semicolons":"asNeeded" - } - } + "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", + "vcs": { + "enabled": false, + "clientKind": "git", + "useIgnoreFile": false + }, + "files": { + "ignoreUnknown": false, + "ignore": [] + }, + "formatter": { + "enabled": true, + "indentStyle": "space" + }, + "organizeImports": { + "enabled": true + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + }, + "javascript": { + "formatter": { + "quoteStyle": "double", + "semicolons": "asNeeded" + } + } } diff --git a/package.json b/package.json index 8a73d137..95ef0fc0 100644 --- a/package.json +++ b/package.json @@ -1,47 +1,52 @@ { - "name": "root", - "private": true, - "author": { - "name": "Alessandro Casazza", - "email": "alessandro@commercelayer.io" - }, - "scripts": { - "preinstall": "npx only-allow pnpm", - "build": "pnpm -r build", - "prepare": "husky", - "test": "pnpm -r test", - "docs:dev": "pnpm --filter docs storybook", - "docs:build": "pnpm --filter docs build-storybook", - "components:build:dev": "pnpm --filter react-components build:dev", - "components:build": "pnpm --filter react-components build", - "make:version": "lerna version --no-private", - "make:version:force": "lerna version --no-private --force-publish", - "dep:major": "pnpm dlx npm-check-updates --packageFile '**/package.json' -u -i", - "dep:minor": "pnpm dep:major -t minor -i" - }, - "devDependencies": { - "@biomejs/biome": "1.9.4", - "husky": "^9.1.7", - "lerna": "^8.2.1", - "typescript": "^5.8.2" - }, - "pnpm": { - "overrides": { - "postcss@<8.4.31": ">=8.4.31", - "graphql@>=16.3.0 <16.8.1": ">=16.8.1", - "vite@>=4.4.0 <4.4.12": ">=4.4.12", - "@babel/traverse@<7.23.2": ">=7.23.2", - "vite@>=4.0.0 <=4.5.1": ">=4.5.2", - "follow-redirects@<1.15.4": ">=1.15.4", - "express@<4.19.2": ">=4.19.2", - "vite@>=5.1.0 <=5.1.6": ">=5.1.7", - "tar@<6.2.1": ">=6.2.1", - "ejs@<3.1.10": ">=3.1.10", - "braces@<3.0.3": ">=3.0.3", - "ws@>=8.0.0 <8.17.1": ">=8.17.1", - "micromatch@<4.0.8": ">=4.0.8", - "rollup@>=4.0.0 <4.22.4": ">=4.22.4", - "cross-spawn@>=7.0.0 <7.0.5": ">=7.0.5" - } - } + "name": "root", + "private": true, + "author": { + "name": "Alessandro Casazza", + "email": "alessandro@commercelayer.io" + }, + "scripts": { + "preinstall": "npx only-allow pnpm", + "build": "pnpm -r build", + "prepare": "husky", + "test": "pnpm -r test", + "docs:dev": "pnpm --filter docs storybook", + "docs:build": "pnpm --filter docs build-storybook", + "components:build:dev": "pnpm --filter react-components build:dev", + "components:build": "pnpm --filter react-components build", + "make:version": "lerna version --no-private", + "make:version:force": "lerna version --no-private --force-publish", + "dep:major": "pnpm dlx npm-check-updates --packageFile '**/package.json' -u -i", + "dep:minor": "pnpm dep:major -t minor -i" + }, + "devDependencies": { + "@biomejs/biome": "1.9.4", + "husky": "^9.1.7", + "lerna": "^8.2.2", + "typescript": "^5.8.3", + "vitest": "^3.1.1" + }, + "pnpm": { + "overrides": { + "postcss@<8.4.31": ">=8.4.31", + "graphql@>=16.3.0 <16.8.1": ">=16.8.1", + "vite@>=4.4.0 <4.4.12": ">=4.4.12", + "@babel/traverse@<7.23.2": ">=7.23.2", + "vite@>=4.0.0 <=4.5.1": ">=4.5.2", + "follow-redirects@<1.15.4": ">=1.15.4", + "express@<4.19.2": ">=4.19.2", + "vite@>=5.1.0 <=5.1.6": ">=5.1.7", + "tar@<6.2.1": ">=6.2.1", + "ejs@<3.1.10": ">=3.1.10", + "braces@<3.0.3": ">=3.0.3", + "ws@>=8.0.0 <8.17.1": ">=8.17.1", + "micromatch@<4.0.8": ">=4.0.8", + "rollup@>=4.0.0 <4.22.4": ">=4.22.4", + "cross-spawn@>=7.0.0 <7.0.5": ">=7.0.5" + }, + "onlyBuiltDependencies": [ + "msw", + "nx" + ] + } } diff --git a/packages/core/extender.ts b/packages/core/extender.ts new file mode 100644 index 00000000..30006771 --- /dev/null +++ b/packages/core/extender.ts @@ -0,0 +1,70 @@ +import { test } from "vitest" +import { getAccessToken } from "./src/auth/getAccessToken.js" + +const clientId = import.meta.env.VITE_SALES_CHANNEL_CLIENT_ID +const integrationClientId = import.meta.env.VITE_INTEGRATION_CLIENT_ID +const integrationClientSecret = import.meta.env.VITE_INTEGRATION_CLIENT_SECRET +const scope = import.meta.env.VITE_SALES_CHANNEL_SCOPE +const domain = import.meta.env.VITE_DOMAIN +let accessToken: Awaited> | undefined = + undefined + +export interface CoreTestInterface { + accessToken: Awaited> + config: { + clientId: string + scope?: string + domain: string + } +} + +/** + * This test is used to run integration tests with the sales channel client. + */ +export const coreTest = test.extend({ + // biome-ignore lint/correctness/noEmptyPattern: need to object destructure as the first argument + accessToken: async ({}, use) => { + if (accessToken == null) { + accessToken = await getAccessToken({ + grantType: "client_credentials", + config: { + clientId, + scope, + domain, + }, + }) + } + use(accessToken) + accessToken = undefined + }, + config: { + clientId, + scope, + domain, + }, +}) + +/** + * This test is used to run integration tests with the integration client. + */ +export const coreIntegrationTest = test.extend({ + // biome-ignore lint/correctness/noEmptyPattern: need to object destructure as the first argument + accessToken: async ({}, use) => { + if (accessToken == null) { + accessToken = await getAccessToken({ + grantType: "client_credentials", + config: { + clientId: integrationClientId, + clientSecret: integrationClientSecret, + domain, + }, + }) + } + use(accessToken) + accessToken = undefined + }, + config: { + clientId: integrationClientId, + domain, + }, +}) diff --git a/packages/core/package.json b/packages/core/package.json new file mode 100644 index 00000000..cb983630 --- /dev/null +++ b/packages/core/package.json @@ -0,0 +1,45 @@ +{ + "name": "@commercelayer/core", + "version": "1.0.0", + "description": "Commerce Layer Components Core SDK", + "type": "module", + "main": "./dist/index.js", + "exports": { + "./package.json": "./package.json", + ".": { + "import": "./dist/index.js", + "default": "./dist/index.cjs" + } + }, + "keywords": ["jamstack", "headless", "ecommerce", "api", "components"], + "scripts": { + "check-exports": "attw --pack .", + "lint": "biome lint --error-on-warnings ./src && tsc", + "lint:fix": "pnpm biome lint --write ./src", + "test": "pnpm run lint && vitest --silent", + "test:watch": "vitest", + "coverage": "vitest run --coverage", + "build": "tsup", + "ci": "pnpm build && pnpm check-exports && pnpm lint" + }, + "publishConfig": { + "access": "public" + }, + "author": { + "name": "Alessandro Casazza", + "email": "alessandro@commercelayer.io" + }, + "license": "MIT", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.4", + "@vitest/coverage-v8": "^3.1.1", + "tsup": "^8.4.0", + "typescript": "^5.8.3", + "vite-tsconfig-paths": "^5.1.4", + "vitest": "^3.1.1" + }, + "dependencies": { + "@commercelayer/js-auth": "^6.7.2", + "@commercelayer/sdk": "6.39.0" + } +} diff --git a/packages/core/src/auth/getAccessToken.spec.ts b/packages/core/src/auth/getAccessToken.spec.ts new file mode 100644 index 00000000..415c3abb --- /dev/null +++ b/packages/core/src/auth/getAccessToken.spec.ts @@ -0,0 +1,40 @@ +import { authenticate } from "@commercelayer/js-auth" +import { describe, expect, vi } from "vitest" +import { coreTest } from "#extender" +import { getAccessToken } from "./getAccessToken" + +vi.mock("@commercelayer/js-auth", () => ({ + authenticate: vi.fn(), +})) + +describe("getAccessToken", () => { + coreTest( + "should call authenticate with the correct parameters", + async ({ accessToken, config }) => { + const token = accessToken?.accessToken + const grantType = "client_credentials" + const mockToken = { accessToken: token } + // @ts-expect-error No types for this function + authenticate.mockResolvedValue(mockToken) + const result = await getAccessToken({ grantType, config }) + await expect(authenticate).toHaveBeenCalledWith(grantType, config) + expect(result).toEqual(mockToken) + expect(result).toHaveProperty("accessToken") + expect(result.accessToken).toBe(mockToken.accessToken) + }, + ) + + coreTest("should throw an error if authenticate fails", async () => { + const grantType = "client_credentials" + const config = { + clientId: "test-client-id", + clientSecret: "test-client-secret", + } + const mockError = new Error("Authentication failed") + // @ts-expect-error No types for this function + authenticate.mockRejectedValue(mockError) + await expect(getAccessToken({ grantType, config })).rejects.toThrow( + "Authentication failed", + ) + }) +}) diff --git a/packages/core/src/auth/getAccessToken.ts b/packages/core/src/auth/getAccessToken.ts new file mode 100644 index 00000000..97f41bfa --- /dev/null +++ b/packages/core/src/auth/getAccessToken.ts @@ -0,0 +1,20 @@ +import { authenticate } from "@commercelayer/js-auth" + +interface AuthenticateProps { + grantType: Parameters[0] + config: Parameters[1] +} + +/** + * Retrieves an access token using the provided grant type and configuration. + * + * @param {AuthenticateProps['grantType']} grantType - The type of grant to use for authentication. + * @param {AuthenticateProps['config']} config - The configuration object for authentication. + * @returns {Promise>} A promise that resolves to the access token. + */ +export async function getAccessToken({ + grantType, + config, +}: AuthenticateProps): ReturnType { + return await authenticate(grantType, config) +} diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/core/src/prices/getPrices.spec.ts b/packages/core/src/prices/getPrices.spec.ts new file mode 100644 index 00000000..ac6369f8 --- /dev/null +++ b/packages/core/src/prices/getPrices.spec.ts @@ -0,0 +1,29 @@ +import type { Price, QueryParamsList } from "@commercelayer/sdk" +import { describe, expect } from "vitest" +import { coreTest } from "#extender" +import { getPrices } from "./getPrices.js" + +describe("getPrices", () => { + coreTest("should return a list of prices", async ({ accessToken }) => { + const token = accessToken?.accessToken + const result = await getPrices({ accessToken: token }) + expect(result).toBeDefined() + }) + + coreTest("should return a single price", async ({ accessToken }) => { + const token = accessToken?.accessToken + const params = { + filters: { + sku_code_eq: "DIGITALPRODUCT", + }, + } satisfies QueryParamsList + // Call the getPrices function + const result = await getPrices({ accessToken: token, params }) + // Assert the expected result + expect(result).toBeDefined() + expect(result.getRecordCount()).toBe(1) + // Add more assertions based on the expected behavior of the getPrices function + }) + + // Add more test cases for different scenarios +}) diff --git a/packages/core/src/prices/getPrices.ts b/packages/core/src/prices/getPrices.ts new file mode 100644 index 00000000..53d9e737 --- /dev/null +++ b/packages/core/src/prices/getPrices.ts @@ -0,0 +1,32 @@ +import type { + ListResponse, + Price, + QueryParamsList, + ResourcesConfig, +} from "@commercelayer/sdk" +import { getSdk } from "#sdk" +import type { RequestConfig } from "#types" + +interface GetPrices extends RequestConfig { + params?: QueryParamsList + options?: ResourcesConfig +} + +type GetPricesParams = GetPrices + +/** + * Get a list of prices + * + * @param {string} accessToken - The access token to use for authentication. + * @param {QueryParamsList} params - Optional query parameters for the request. + * @param {ResourcesConfig} options - Optional request configuration. + * @returns {Promise>} - A promise that resolves to a list of price resources. + */ +export async function getPrices({ + accessToken, + params, + options, +}: GetPricesParams): Promise> { + const sdk = getSdk({ accessToken }) + return await sdk.prices.list(params, options) +} diff --git a/packages/core/src/prices/retrievePrice.spec.ts b/packages/core/src/prices/retrievePrice.spec.ts new file mode 100644 index 00000000..3d23ac7b --- /dev/null +++ b/packages/core/src/prices/retrievePrice.spec.ts @@ -0,0 +1,24 @@ +import type { QueryFilter } from "@commercelayer/sdk" +import { describe, expect } from "vitest" +import { coreTest } from "#extender" +import { getPrices } from "./getPrices.js" +import { retrievePrice } from "./retrievePrice.js" + +describe("retrievePrice", () => { + coreTest("should return a single price", async ({ accessToken }) => { + const token = accessToken?.accessToken + const firstPrice = (await getPrices({ accessToken: token })).first() + expect(firstPrice).toBeDefined() + if (!firstPrice) { + throw new Error("No price found") + } + const id = firstPrice?.id + const result = await retrievePrice({ + id: id, + accessToken: token, + }) + expect(result).toBeDefined() + expect(result.id).toBe(id) + expect(result.sku_code).toBe(firstPrice.sku_code) + }) +}) diff --git a/packages/core/src/prices/retrievePrice.ts b/packages/core/src/prices/retrievePrice.ts new file mode 100644 index 00000000..0167d569 --- /dev/null +++ b/packages/core/src/prices/retrievePrice.ts @@ -0,0 +1,29 @@ +import type { Price, QueryParamsRetrieve } from "@commercelayer/sdk" +import { getSdk } from "#sdk" +import type { RequestConfig } from "#types" + +interface RetrievePrice extends RequestConfig { + id: string + params?: QueryParamsRetrieve +} + +type RetrievePriceParams = RetrievePrice & QueryParamsRetrieve + +/** + * Retrieve a price + * + * @param {string} accessToken - The access token to use for authentication. + * @param {string} id - The ID of the price resource to retrieve. + * @param {QueryParamsRetrieve} params - Optional query parameters for the request. + * @param {RequestConfig} options - Optional request configuration. + * @returns {Promise} - The retrieved price resource. + */ +export async function retrievePrice({ + accessToken, + id, + params, + options, +}: RetrievePriceParams): Promise { + const sdk = getSdk({ accessToken }) + return await sdk.prices.retrieve(id, params, options) +} diff --git a/packages/core/src/prices/updatePrice.spec.ts b/packages/core/src/prices/updatePrice.spec.ts new file mode 100644 index 00000000..716c18b5 --- /dev/null +++ b/packages/core/src/prices/updatePrice.spec.ts @@ -0,0 +1,39 @@ +import { describe, expect } from "vitest" +import { coreIntegrationTest } from "#extender" +import { getPrices } from "./getPrices" +import { updatePrice } from "./updatePrice" + +describe("updatePrice", () => { + coreIntegrationTest( + "should update a single price", + async ({ accessToken }) => { + const token = accessToken?.accessToken + const firstPrice = (await getPrices({ accessToken: token })).first() + expect(firstPrice).toBeDefined() + if (!firstPrice) { + throw new Error("No price found") + } + const id = firstPrice?.id + const result = await updatePrice({ + accessToken: token, + resource: { + id, + reference: "test-price", + }, + }) + expect(result).toBeDefined() + expect(result.id).toBe(id) + expect(result.reference).toBe("test-price") + const clean = await updatePrice({ + accessToken: token, + resource: { + id, + reference: "", + }, + }) + expect(clean).toBeDefined() + expect(clean.id).toBe(id) + expect(clean.reference).toBe("") + }, + ) +}) diff --git a/packages/core/src/prices/updatePrice.ts b/packages/core/src/prices/updatePrice.ts new file mode 100644 index 00000000..617c4e03 --- /dev/null +++ b/packages/core/src/prices/updatePrice.ts @@ -0,0 +1,33 @@ +import type { + Price, + PriceUpdate, + QueryParamsRetrieve, +} from "@commercelayer/sdk" +import { getSdk } from "#sdk" +import type { RequestConfig } from "#types" + +interface UpdatePrice extends RequestConfig { + resource: PriceUpdate + params?: QueryParamsRetrieve +} + +type UpdatePriceParams = UpdatePrice + +/** + * Update a price + * + * @param {string} accessToken - The access token to use for authentication, must be an integration application. + * @param {PriceUpdate} resource - The price resource to update. + * @param {QueryParamsRetrieve} params - Optional query parameters for the request. + * @param {RequestConfig} options - Optional request configuration. + * @returns {Promise} - The updated price resource. + */ +export async function updatePrice({ + accessToken, + resource, + params, + options, +}: UpdatePriceParams): Promise { + const sdk = getSdk({ accessToken }) + return await sdk.prices.update(resource, params, options) +} diff --git a/packages/core/src/sdk/index.ts b/packages/core/src/sdk/index.ts new file mode 100644 index 00000000..2fe821ed --- /dev/null +++ b/packages/core/src/sdk/index.ts @@ -0,0 +1,24 @@ +import { + type JWTIntegration, + type JWTSalesChannel, + type JWTWebApp, + jwtDecode, +} from "@commercelayer/js-auth" +import sdk, { type CommerceLayerClient } from "@commercelayer/sdk" +import type { RequestConfig } from "#types" + +/** + * Get the Commerce Layer SDK instance + * + * @param {string} accessToken - The access token to use for authentication. + * @returns {CommerceLayerClient} - The Commerce Layer SDK instance. + */ +export function getSdk({ accessToken }: RequestConfig): CommerceLayerClient { + const { payload } = jwtDecode(accessToken) + const { organization } = payload as + | JWTIntegration + | JWTWebApp + | JWTSalesChannel + const slug = organization.slug + return sdk({ accessToken, organization: slug }) +} diff --git a/packages/core/src/types/base.ts b/packages/core/src/types/base.ts new file mode 100644 index 00000000..d97b408d --- /dev/null +++ b/packages/core/src/types/base.ts @@ -0,0 +1,8 @@ +import type { ResourcesConfig } from "@commercelayer/sdk" + +export interface RequestConfig { + accessToken: string + id?: string + params?: unknown + options?: ResourcesConfig +} diff --git a/packages/core/src/types/index.ts b/packages/core/src/types/index.ts new file mode 100644 index 00000000..637e47a5 --- /dev/null +++ b/packages/core/src/types/index.ts @@ -0,0 +1 @@ +export type { RequestConfig } from "./base" diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json new file mode 100644 index 00000000..366986a2 --- /dev/null +++ b/packages/core/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + /* Base Options: */ + "esModuleInterop": true, + "skipLibCheck": true, + "target": "es2022", + "allowJs": true, + "resolveJsonModule": true, + "moduleDetection": "force", + "isolatedModules": true, + "verbatimModuleSyntax": true, + "lib": ["es2022"], + "noEmit": true, + + /* Strictness */ + "strict": true, + "noUncheckedIndexedAccess": true, + "noImplicitOverride": true, + + /* If transpiling with TypeScript: */ + "module": "Preserve", + + /* Relative Paths */ + "baseUrl": ".", + "paths": { + "#sdk": ["src/sdk/index.ts"], + "#types": ["src/types/index.ts"], + "#extender": ["extender.ts"] + } + }, + "exclude": ["node_modules", "dist", "coverage", "*.spec.ts"] +} diff --git a/packages/core/tsup.config.ts b/packages/core/tsup.config.ts new file mode 100644 index 00000000..39f89612 --- /dev/null +++ b/packages/core/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup" + +const env = process.env.NODE_ENV + +export default defineConfig((options) => ({ + entryPoints: ["src/index.ts"], + format: ["cjs", "esm"], + dts: true, + outDir: "dist", + clean: true, + treeshake: true, +})) diff --git a/packages/core/vite-env.d.ts b/packages/core/vite-env.d.ts new file mode 100644 index 00000000..c16c20fd --- /dev/null +++ b/packages/core/vite-env.d.ts @@ -0,0 +1,13 @@ +/// + +interface ImportMetaEnv { + readonly VITE_SALES_CHANNEL_CLIENT_ID: string + readonly VITE_SALES_CHANNEL_SCOPE: string + readonly VITE_INTEGRATION_CLIENT_ID: string + readonly VITE_INTEGRATION_CLIENT_SECRET: string + readonly VITE_DOMAIN: string +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} diff --git a/packages/core/vitest.config.ts b/packages/core/vitest.config.ts new file mode 100644 index 00000000..3c65cd6d --- /dev/null +++ b/packages/core/vitest.config.ts @@ -0,0 +1,14 @@ +import tsconfigPaths from "vite-tsconfig-paths" +import { defineConfig } from "vitest/config" + +export default defineConfig({ + test: { + name: "core", + environment: "node", + coverage: { + provider: "v8", + reporter: ["text", "json", "html"], + }, + }, + plugins: [tsconfigPaths()], +}) diff --git a/packages/document/.gitignore b/packages/document/.gitignore new file mode 100644 index 00000000..f940a995 --- /dev/null +++ b/packages/document/.gitignore @@ -0,0 +1,26 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*storybook.log diff --git a/packages/document/.storybook/addon-gh-repository/Tool.tsx b/packages/document/.storybook/addon-gh-repository/Tool.tsx new file mode 100644 index 00000000..25f4aa10 --- /dev/null +++ b/packages/document/.storybook/addon-gh-repository/Tool.tsx @@ -0,0 +1,17 @@ +import { A, IconButton, Icons, Separator } from '@storybook/components' +import React from 'react' +import { ADDON_NAME, REPOSITORY_URL, TOOL_ID } from './constants' + +export const Tool = () => { + return ( + <> + + + + +   repository + + + + ) +} diff --git a/packages/document/.storybook/addon-gh-repository/constants.ts b/packages/document/.storybook/addon-gh-repository/constants.ts new file mode 100644 index 00000000..da0fb807 --- /dev/null +++ b/packages/document/.storybook/addon-gh-repository/constants.ts @@ -0,0 +1,5 @@ +export const ADDON_ID = 'addon-gh-repository' +export const ADDON_NAME = 'View repository' +export const TOOL_ID = `${ADDON_ID}/tool` +export const REPOSITORY_URL = + 'https://github.com/commercelayer/commercelayer-react-components' diff --git a/packages/document/.storybook/addon-gh-repository/manager.tsx b/packages/document/.storybook/addon-gh-repository/manager.tsx new file mode 100644 index 00000000..0963c403 --- /dev/null +++ b/packages/document/.storybook/addon-gh-repository/manager.tsx @@ -0,0 +1,13 @@ +import { addons, types } from "@storybook/manager-api" +import React from "react" +import { Tool } from "./Tool" +import { ADDON_ID, ADDON_NAME } from "./constants" + +addons.register(ADDON_ID, () => { + addons.add(ADDON_ID, { + title: ADDON_NAME, + type: types.TOOL, + match: ({ viewMode }) => !!viewMode?.match(/^(story|docs)$/), + render: () => , + }) +}) diff --git a/packages/document/.storybook/commercelayer.theme.ts b/packages/document/.storybook/commercelayer.theme.ts new file mode 100644 index 00000000..1b06740a --- /dev/null +++ b/packages/document/.storybook/commercelayer.theme.ts @@ -0,0 +1,11 @@ +import { create } from '@storybook/theming' + +export default create({ + base: 'light', + brandTitle: 'Commerce Layer', + // brandUrl: 'https://example.com', + brandImage: './app-logo.png', + brandTarget: '_self', + + textColor: '#101111' +}) diff --git a/packages/document/.storybook/main.ts b/packages/document/.storybook/main.ts new file mode 100644 index 00000000..451b989b --- /dev/null +++ b/packages/document/.storybook/main.ts @@ -0,0 +1,78 @@ +import { resolve } from "node:path" +import type { StorybookConfig } from "@storybook/react-vite" +import remarkGfm from "remark-gfm" +import { type UserConfig, mergeConfig } from "vite" +import tsconfigPaths from "vite-tsconfig-paths" + +const viteOverrides: UserConfig = { + base: process.env.VITE_BASE_URL, + plugins: [ + tsconfigPaths({ + projects: [ + resolve(import.meta.dirname, "../../react-components/tsconfig.json"), + resolve(import.meta.dirname, "../tsconfig.json"), + ], + }), + ], +} + +const storybookConfig: StorybookConfig = { + async viteFinal(config) { + return mergeConfig(config, viteOverrides) + }, + stories: ["../stories/**/*.mdx", "../stories/**/*.stories.@(js|jsx|ts|tsx)"], + addons: [ + "@storybook/addon-links", + "@storybook/addon-essentials", + "@storybook/addon-interactions", + { + name: "@storybook/addon-docs", + options: { + mdxPluginOptions: { + mdxCompileOptions: { + remarkPlugins: [remarkGfm], + }, + }, + }, + }, + ], + // @ts-expect-error This 'managerEntries' exists. + managerEntries: [ + resolve(import.meta.dirname, "./addon-gh-repository/manager.tsx"), + ], + framework: { + name: "@storybook/react-vite", + options: {}, + }, + core: { + disableTelemetry: true, + }, + features: { + storyStoreV7: true, + }, + docs: { + autodocs: true, + docsMode: true, + }, + typescript: { + check: false, + reactDocgen: "react-docgen-typescript", + reactDocgenTypescriptOptions: { + propFilter: (prop) => { + if (["children", "className"].includes(prop.name)) { + return true + } + + if (prop.parent != null) { + return ( + !prop.parent.fileName.includes("@types/react") && + !prop.parent.fileName.includes("@emotion") + ) + } + return true + }, + }, + }, +} + +export default storybookConfig diff --git a/packages/document/.storybook/manager-head.html b/packages/document/.storybook/manager-head.html new file mode 100644 index 00000000..ece446c3 --- /dev/null +++ b/packages/document/.storybook/manager-head.html @@ -0,0 +1,3 @@ + + + diff --git a/packages/document/.storybook/preview-head.html b/packages/document/.storybook/preview-head.html new file mode 100644 index 00000000..6448e887 --- /dev/null +++ b/packages/document/.storybook/preview-head.html @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/packages/document/.storybook/preview.tsx b/packages/document/.storybook/preview.tsx new file mode 100644 index 00000000..9632a948 --- /dev/null +++ b/packages/document/.storybook/preview.tsx @@ -0,0 +1,143 @@ +import { + Controls, + Description, + Primary, + Stories, + Subtitle, + Title, +} from "@storybook/blocks" +import type { Decorator, Parameters } from "@storybook/react" +import React from "react" +import { worker } from "../mocks/browser" + +export const parameters: Parameters = { + layout: "centered", + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, + backgrounds: { + values: [ + { + name: "overlay", + value: "#F8F8F8", + }, + ], + }, + options: { + storySort: { + method: "alphabetical", + order: [ + "Getting Started", + // [ + // "Welcome", + // "Applications", + // "Custom apps", + // "Token provider", + // "Core SDK provider", + // ], + // "Atoms", + // "Forms", + // ["react-hook-form"], + // "Hooks", + // "Lists", + // "Composite", + // "Resources", + // "Examples", + ], + }, + }, + docs: { + page: () => ( + + + <Subtitle /> + <Description /> + <Primary /> + <Controls /> + <Stories includePrimary={false} /> + </React.Fragment> + ), + // source: { + // transform: (input: string) => + // prettier.format(input, { + // parser: 'babel', + // plugins: [prettierBabel] + // }), + // }, + }, +} + +// export const withContainer: Decorator = (Story, context) => { +// const { containerEnabled } = context.globals +// if (containerEnabled === true) { +// return ( +// <Container minHeight={false}> +// <Story /> +// </Container> +// ) +// } + +// return <Story /> +// } + +// export const withLocale: Decorator = (Story, context) => { +// const locale = "en-US" +// return ( +// <I18NProvider enforcedLocaleCode={locale}> +// <Story /> +// </I18NProvider> +// ) +// } + +// export const decorators: Decorator[] = [withLocale, withContainer] + +// export const globals = { +// [PARAM_KEY]: true, +// } + +// Storybook executes this module in both bootstap phase (Node) +// and a story's runtime (browser). However, we cannot call `setupWorker` +// in Node environment, so need to check if we're in a browser. +if (typeof global.process === "undefined") { + // Start the mocking when each story is loaded. + // Repetitive calls to the `.start()` method do not register a new worker, + // but check whether there's an existing once, reusing it, if so. + worker.start({ + serviceWorker: { + url: `${import.meta.env.BASE_URL}mockServiceWorker.js`, + }, + quiet: import.meta.env.PROD, + onUnhandledRequest: !import.meta.env.PROD + ? (req, reqPrint) => { + const url = new URL(req.url) + if (url.hostname === "mock.localhost") { + reqPrint.warning() + } + } + : () => {}, + }) +} + +const argTypesEnhancers: Preview["argTypesEnhancers"] = [ + (context) => { + // when the className prop comes from `JSX.IntrinsicElements['div' | 'span']` + // and is not documented, we add a default description + if ( + "className" in context.argTypes && + context.argTypes.className.description === "" + ) { + context.argTypes.className.description = + "CSS class name for the base component" + } + + return context.argTypes + }, +] + +export default { + parameters, + argTypesEnhancers, +} diff --git a/packages/document/README.md b/packages/document/README.md new file mode 100644 index 00000000..74872fd4 --- /dev/null +++ b/packages/document/README.md @@ -0,0 +1,50 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default tseslint.config({ + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked` +- Optionally add `...tseslint.configs.stylisticTypeChecked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config: + +```js +// eslint.config.js +import react from 'eslint-plugin-react' + +export default tseslint.config({ + // Set the react version + settings: { react: { version: '18.3' } }, + plugins: { + // Add the react plugin + react, + }, + rules: { + // other rules... + // Enable its recommended rules + ...react.configs.recommended.rules, + ...react.configs['jsx-runtime'].rules, + }, +}) +``` diff --git a/packages/document/eslint.config.js b/packages/document/eslint.config.js new file mode 100644 index 00000000..092408a9 --- /dev/null +++ b/packages/document/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/packages/document/index.html b/packages/document/index.html new file mode 100644 index 00000000..e4b78eae --- /dev/null +++ b/packages/document/index.html @@ -0,0 +1,13 @@ +<!doctype html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <link rel="icon" type="image/svg+xml" href="/vite.svg" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Vite + React + TS + + +
+ + + diff --git a/packages/document/mocks/browser.js b/packages/document/mocks/browser.js new file mode 100644 index 00000000..c578a6eb --- /dev/null +++ b/packages/document/mocks/browser.js @@ -0,0 +1,6 @@ +// src/mocks/browser.js +import { setupWorker } from 'msw/browser' +import { handlers } from './handlers' + +// This configures a Service Worker with the given request handlers. +export const worker = setupWorker(...handlers) diff --git a/packages/document/mocks/data/adjustments.js b/packages/document/mocks/data/adjustments.js new file mode 100644 index 00000000..72d4a6f1 --- /dev/null +++ b/packages/document/mocks/data/adjustments.js @@ -0,0 +1,39 @@ +import { http } from 'msw' + +const restPost = http.post( + `https://mock.localhost/api/adjustments`, + async (req, res, ctx) => { + return await new Promise((resolve) => { + setTimeout(() => { + resolve( + res( + ctx.status(200), + ctx.json({ + data: { + id: 'eqJGhgEeBb', + type: 'adjustments', + links: { + self: 'https://mock.localhost/api/adjustments/eqJGhgEeBb' + }, + attributes: { + name: 'Manual adjustment', + currency_code: 'EUR', + amount_cents: -100, + amount_float: -1.0, + formatted_amount: '-€1,00', + created_at: '2023-08-23T15:59:30.059Z', + updated_at: '2023-08-23T15:59:30.059Z', + reference: null, + reference_origin: null, + metadata: {} + } + } + }) + ) + ) + }, 1000) + }) + } +) + +export default [restPost] diff --git a/packages/document/mocks/data/bundles.js b/packages/document/mocks/data/bundles.js new file mode 100644 index 00000000..7053b89e --- /dev/null +++ b/packages/document/mocks/data/bundles.js @@ -0,0 +1,388 @@ +import { http } from 'msw' + +const bundles = http.get( + 'https://mock.localhost/api/bundles?include=sku_list.sku_list_items.sku&filter[q][code_in]=WELCOME_KIT_001', + (req, res, ctx) => { + return res( + ctx.status(200), + ctx.json({ + data: [ + { + id: 'PljQzimxgB', + type: 'bundles', + links: { + self: 'https://mock.localhost/api/bundles/PljQzimxgB' + }, + attributes: { + code: 'SHIRTSETSINGLE', + name: 'Commerce Layer Shirt set single', + currency_code: 'EUR', + description: '', + image_url: '', + do_not_ship: false, + do_not_track: false, + price_amount_cents: 10500, + price_amount_float: 105.0, + formatted_price_amount: '€105,00', + compare_at_amount_cents: 10500, + compare_at_amount_float: 105.0, + formatted_compare_at_amount: '€105,00', + skus_count: 2, + created_at: '2022-03-11T10:20:48.680Z', + updated_at: '2022-03-11T10:20:48.680Z', + reference: '', + reference_origin: '', + metadata: {} + }, + relationships: { + market: { + links: { + self: 'https://mock.localhost/api/bundles/PljQzimxgB/relationships/market', + related: + 'https://mock.localhost/api/bundles/PljQzimxgB/market' + } + }, + sku_list: { + links: { + self: 'https://mock.localhost/api/bundles/PljQzimxgB/relationships/sku_list', + related: + 'https://mock.localhost/api/bundles/PljQzimxgB/sku_list' + }, + data: { type: 'sku_lists', id: 'myPrZIqano' } + }, + skus: { + links: { + self: 'https://mock.localhost/api/bundles/PljQzimxgB/relationships/skus', + related: 'https://mock.localhost/api/bundles/PljQzimxgB/skus' + } + }, + attachments: { + links: { + self: 'https://mock.localhost/api/bundles/PljQzimxgB/relationships/attachments', + related: + 'https://mock.localhost/api/bundles/PljQzimxgB/attachments' + } + }, + events: { + links: { + self: 'https://mock.localhost/api/bundles/PljQzimxgB/relationships/events', + related: + 'https://mock.localhost/api/bundles/PljQzimxgB/events' + } + }, + tags: { + links: { + self: 'https://mock.localhost/api/bundles/PljQzimxgB/relationships/tags', + related: 'https://mock.localhost/api/bundles/PljQzimxgB/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + } + ], + included: [ + { + id: 'myPrZIqano', + type: 'sku_lists', + links: { + self: 'https://mock.localhost/api/sku_lists/myPrZIqano' + }, + attributes: { + name: 'CL SHIRTS (Single shipment)', + slug: 'cl-shirts-single-shipment', + description: '', + image_url: '', + manual: true, + sku_code_regex: null, + created_at: '2022-03-11T10:17:50.637Z', + updated_at: '2022-03-11T10:18:03.442Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + customer: { + links: { + self: 'https://mock.localhost/api/sku_lists/myPrZIqano/relationships/customer', + related: + 'https://mock.localhost/api/sku_lists/myPrZIqano/customer' + } + }, + skus: { + links: { + self: 'https://mock.localhost/api/sku_lists/myPrZIqano/relationships/skus', + related: + 'https://mock.localhost/api/sku_lists/myPrZIqano/skus' + } + }, + sku_list_items: { + links: { + self: 'https://mock.localhost/api/sku_lists/myPrZIqano/relationships/sku_list_items', + related: + 'https://mock.localhost/api/sku_lists/myPrZIqano/sku_list_items' + }, + data: [ + { type: 'sku_list_items', id: 'LWKOPINkWM' }, + { type: 'sku_list_items', id: 'vWbjGINmWn' } + ] + }, + bundles: { + links: { + self: 'https://mock.localhost/api/sku_lists/myPrZIqano/relationships/bundles', + related: + 'https://mock.localhost/api/sku_lists/myPrZIqano/bundles' + } + }, + attachments: { + links: { + self: 'https://mock.localhost/api/sku_lists/myPrZIqano/relationships/attachments', + related: + 'https://mock.localhost/api/sku_lists/myPrZIqano/attachments' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'LWKOPINkWM', + type: 'sku_list_items', + links: { + self: 'https://mock.localhost/api/sku_list_items/LWKOPINkWM' + }, + attributes: { + position: 1, + sku_code: 'TSHIRTMS000000FFFFFFLXXX', + quantity: 1, + created_at: '2022-03-11T10:17:59.154Z', + updated_at: '2022-03-11T10:17:59.154Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + sku_list: { + links: { + self: 'https://mock.localhost/api/sku_list_items/LWKOPINkWM/relationships/sku_list', + related: + 'https://mock.localhost/api/sku_list_items/LWKOPINkWM/sku_list' + } + }, + sku: { + links: { + self: 'https://mock.localhost/api/sku_list_items/LWKOPINkWM/relationships/sku', + related: + 'https://mock.localhost/api/sku_list_items/LWKOPINkWM/sku' + }, + data: { type: 'skus', id: 'EWzPQSpRzn' } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'vWbjGINmWn', + type: 'sku_list_items', + links: { + self: 'https://mock.localhost/api/sku_list_items/vWbjGINmWn' + }, + attributes: { + position: 2, + sku_code: 'SWEETHMUB7B7B7000000MXXX', + quantity: 1, + created_at: '2022-03-11T10:18:03.437Z', + updated_at: '2022-03-11T10:18:03.437Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + sku_list: { + links: { + self: 'https://mock.localhost/api/sku_list_items/vWbjGINmWn/relationships/sku_list', + related: + 'https://mock.localhost/api/sku_list_items/vWbjGINmWn/sku_list' + } + }, + sku: { + links: { + self: 'https://mock.localhost/api/sku_list_items/vWbjGINmWn/relationships/sku', + related: + 'https://mock.localhost/api/sku_list_items/vWbjGINmWn/sku' + }, + data: { type: 'skus', id: 'MBrxeSaGpZ' } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'EWzPQSpRzn', + type: 'skus', + links: { + self: 'https://mock.localhost/api/skus/EWzPQSpRzn' + }, + attributes: { + code: 'TSHIRTMS000000FFFFFFLXXX', + name: 'Black Men T-Shirt with White Logo (L)', + description: + 'With a large front pouch pocket and drawstrings in a matching color, this hoodie is a sure crowd-favorite. It’s soft, stylish, and perfect for the cooler evenings.', + image_url: + 'https://data.commercelayer.app/seed/images/skus/TSHIRTMS000000FFFFFFLXXX_FLAT.png', + pieces_per_pack: null, + weight: null, + unit_of_weight: '', + hs_tariff_number: '', + do_not_ship: false, + do_not_track: false, + inventory: null, + created_at: '2022-03-11T09:42:47.300Z', + updated_at: '2022-03-11T10:17:22.143Z', + reference: 'sku_69', + reference_origin: 'CLI', + metadata: {} + }, + relationships: { + shipping_category: { + links: { + self: 'https://mock.localhost/api/skus/EWzPQSpRzn/relationships/shipping_category', + related: + 'https://mock.localhost/api/skus/EWzPQSpRzn/shipping_category' + } + }, + prices: { + links: { + self: 'https://mock.localhost/api/skus/EWzPQSpRzn/relationships/prices', + related: 'https://mock.localhost/api/skus/EWzPQSpRzn/prices' + } + }, + stock_items: { + links: { + self: 'https://mock.localhost/api/skus/EWzPQSpRzn/relationships/stock_items', + related: + 'https://mock.localhost/api/skus/EWzPQSpRzn/stock_items' + } + }, + delivery_lead_times: { + links: { + self: 'https://mock.localhost/api/skus/EWzPQSpRzn/relationships/delivery_lead_times', + related: + 'https://mock.localhost/api/skus/EWzPQSpRzn/delivery_lead_times' + } + }, + sku_options: { + links: { + self: 'https://mock.localhost/api/skus/EWzPQSpRzn/relationships/sku_options', + related: + 'https://mock.localhost/api/skus/EWzPQSpRzn/sku_options' + } + }, + attachments: { + links: { + self: 'https://mock.localhost/api/skus/EWzPQSpRzn/relationships/attachments', + related: + 'https://mock.localhost/api/skus/EWzPQSpRzn/attachments' + } + }, + events: { + links: { + self: 'https://mock.localhost/api/skus/EWzPQSpRzn/relationships/events', + related: 'https://mock.localhost/api/skus/EWzPQSpRzn/events' + } + }, + tags: { + links: { + self: 'https://mock.localhost/api/skus/EWzPQSpRzn/relationships/tags', + related: 'https://mock.localhost/api/skus/EWzPQSpRzn/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'MBrxeSaGpZ', + type: 'skus', + links: { + self: 'https://mock.localhost/api/skus/MBrxeSaGpZ' + }, + attributes: { + code: 'SWEETHMUB7B7B7000000MXXX', + name: 'Sport Grey Unisex Hoodie Sweatshirt with Black Logo (M)', + description: + 'With a large front pouch pocket and drawstrings in a matching color, this hoodie is a sure crowd-favorite. It’s soft, stylish, and perfect for the cooler evenings.', + image_url: + 'https://data.commercelayer.app/seed/images/skus/HOODIEMX7F7F7F000000MXXX_FLAT.png', + pieces_per_pack: null, + weight: null, + unit_of_weight: '', + hs_tariff_number: '', + do_not_ship: false, + do_not_track: false, + inventory: null, + created_at: '2022-03-11T09:42:48.985Z', + updated_at: '2022-03-11T10:17:41.219Z', + reference: 'sku_70', + reference_origin: 'CLI', + metadata: {} + }, + relationships: { + shipping_category: { + links: { + self: 'https://mock.localhost/api/skus/MBrxeSaGpZ/relationships/shipping_category', + related: + 'https://mock.localhost/api/skus/MBrxeSaGpZ/shipping_category' + } + }, + prices: { + links: { + self: 'https://mock.localhost/api/skus/MBrxeSaGpZ/relationships/prices', + related: 'https://mock.localhost/api/skus/MBrxeSaGpZ/prices' + } + }, + stock_items: { + links: { + self: 'https://mock.localhost/api/skus/MBrxeSaGpZ/relationships/stock_items', + related: + 'https://mock.localhost/api/skus/MBrxeSaGpZ/stock_items' + } + }, + delivery_lead_times: { + links: { + self: 'https://mock.localhost/api/skus/MBrxeSaGpZ/relationships/delivery_lead_times', + related: + 'https://mock.localhost/api/skus/MBrxeSaGpZ/delivery_lead_times' + } + }, + sku_options: { + links: { + self: 'https://mock.localhost/api/skus/MBrxeSaGpZ/relationships/sku_options', + related: + 'https://mock.localhost/api/skus/MBrxeSaGpZ/sku_options' + } + }, + attachments: { + links: { + self: 'https://mock.localhost/api/skus/MBrxeSaGpZ/relationships/attachments', + related: + 'https://mock.localhost/api/skus/MBrxeSaGpZ/attachments' + } + }, + events: { + links: { + self: 'https://mock.localhost/api/skus/MBrxeSaGpZ/relationships/events', + related: 'https://mock.localhost/api/skus/MBrxeSaGpZ/events' + } + }, + tags: { + links: { + self: 'https://mock.localhost/api/skus/MBrxeSaGpZ/relationships/tags', + related: 'https://mock.localhost/api/skus/MBrxeSaGpZ/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + } + ] + }) + ) + } +) + +export default [bundles] diff --git a/packages/document/mocks/data/line_items.js b/packages/document/mocks/data/line_items.js new file mode 100644 index 00000000..95139b05 --- /dev/null +++ b/packages/document/mocks/data/line_items.js @@ -0,0 +1,82 @@ +import { http } from 'msw' + +const restPatch = http.patch( + `https://mock.localhost/api/line_items/:id`, + async (req, res, ctx) => { + return await new Promise((resolve) => { + setTimeout(() => { + resolve(res(ctx.status(200), ctx.body(`Update ${req.params.id}`))) + }, 1000) + }) + } +) + +const restDelete = http.delete( + `https://mock.localhost/api/line_items/:id`, + async (req, res, ctx) => { + return await new Promise((resolve) => { + setTimeout(() => { + resolve(res(ctx.status(200), ctx.body(`Removed ${req.params.id}`))) + }, 1000) + }) + } +) + +const restPost = http.post( + `https://mock.localhost/api/line_items`, + async (req, res, ctx) => { + return await new Promise((resolve) => { + setTimeout(() => { + resolve( + res( + ctx.status(200), + ctx.json({ + data: { + id: 'vrEAtOmRaz', + type: 'line_items', + links: { + self: 'https://mock.localhost/api/line_items/vrEAtOmRaz' + }, + attributes: { + sku_code: null, + bundle_code: null, + quantity: 1, + currency_code: 'EUR', + unit_amount_cents: -100, + unit_amount_float: -1.0, + formatted_unit_amount: '-€1,00', + options_amount_cents: 0, + options_amount_float: 0.0, + formatted_options_amount: '€0,00', + discount_cents: 0, + discount_float: 0.0, + formatted_discount: '€0,00', + total_amount_cents: -100, + total_amount_float: -1.0, + formatted_total_amount: '-€1,00', + tax_amount_cents: 0, + tax_amount_float: 0.0, + formatted_tax_amount: '€0,00', + name: 'Manual adjustment', + image_url: null, + discount_breakdown: {}, + tax_rate: 0.0, + tax_breakdown: {}, + item_type: 'adjustments', + frequency: null, + created_at: '2023-08-23T15:59:30.205Z', + updated_at: '2023-08-23T15:59:30.205Z', + reference: null, + reference_origin: null, + metadata: {} + } + } + }) + ) + ) + }, 1000) + }) + } +) + +export default [restPatch, restDelete, restPost] diff --git a/packages/document/mocks/data/markets.js b/packages/document/mocks/data/markets.js new file mode 100644 index 00000000..b5db10ae --- /dev/null +++ b/packages/document/mocks/data/markets.js @@ -0,0 +1,447 @@ +import { http } from 'msw' + +// used in HookedInputResourceGroup +const someMarkets = http.get( + 'https://mock.localhost/api/markets?fields[markets]=id,name&sort=name&page[size]=3', + (req, res, ctx) => { + return res( + ctx.status(200), + ctx.json({ + data: [ + { + id: 'rlEPzheRgO', + type: 'markets', + links: { + self: 'https://mock.localhost/api/markets/rlEPzheRgO' + }, + attributes: { name: 'Adyen' }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'dlQbPhNNop', + type: 'markets', + links: { + self: 'https://mock.localhost/api/markets/dlQbPhNNop' + }, + attributes: { name: 'Europe' }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'AlRevhXQga', + type: 'markets', + links: { + self: 'https://mock.localhost/api/markets/AlRevhXQga' + }, + attributes: { name: 'Milan' }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + } + ], + meta: { record_count: 5, page_count: 2 }, + links: { + first: + 'https://mock.localhost/api/markets?fields%5Bmarkets%5D=id%2Cname&page%5Bnumber%5D=1&page%5Bsize%5D=3&sort=name', + next: 'https://mock.localhost/api/markets?fields%5Bmarkets%5D=id%2Cname&page%5Bnumber%5D=2&page%5Bsize%5D=3&sort=name', + last: 'https://mock.localhost/api/markets?fields%5Bmarkets%5D=id%2Cname&page%5Bnumber%5D=2&page%5Bsize%5D=3&sort=name' + } + }) + ) + } +) + +// used in HookedInputResourceGroup +const allMarkets = http.get( + 'https://mock.localhost/api/markets?sort=name&page[number]=1&page[size]=25', + (req, res, ctx) => { + return res( + ctx.status(200), + ctx.json({ + data: [ + { + id: 'rlEPzheRgO', + type: 'markets', + links: { + self: 'https://mock.localhost/api/markets/rlEPzheRgO' + }, + attributes: { + number: 475, + name: 'Adyen', + facebook_pixel_id: null, + checkout_url: '', + external_prices_url: '', + external_order_validation_url: null, + shared_secret: '5a4c961792866897db26dd3aad9c435e', + private: false, + disabled_at: null, + created_at: '2022-08-23T09:59:25.940Z', + updated_at: '2022-08-23T09:59:25.940Z', + reference: '', + reference_origin: '', + metadata: {} + }, + relationships: { + merchant: { + links: { + self: 'https://mock.localhost/api/markets/rlEPzheRgO/relationships/merchant', + related: + 'https://mock.localhost/api/markets/rlEPzheRgO/merchant' + } + }, + price_list: { + links: { + self: 'https://mock.localhost/api/markets/rlEPzheRgO/relationships/price_list', + related: + 'https://mock.localhost/api/markets/rlEPzheRgO/price_list' + } + }, + inventory_model: { + links: { + self: 'https://mock.localhost/api/markets/rlEPzheRgO/relationships/inventory_model', + related: + 'https://mock.localhost/api/markets/rlEPzheRgO/inventory_model' + } + }, + subscription_model: { + links: { + self: 'https://mock.localhost/api/markets/rlEPzheRgO/relationships/subscription_model', + related: + 'https://mock.localhost/api/markets/rlEPzheRgO/subscription_model' + } + }, + tax_calculator: { + links: { + self: 'https://mock.localhost/api/markets/rlEPzheRgO/relationships/tax_calculator', + related: + 'https://mock.localhost/api/markets/rlEPzheRgO/tax_calculator' + } + }, + customer_group: { + links: { + self: 'https://mock.localhost/api/markets/rlEPzheRgO/relationships/customer_group', + related: + 'https://mock.localhost/api/markets/rlEPzheRgO/customer_group' + } + }, + attachments: { + links: { + self: 'https://mock.localhost/api/markets/rlEPzheRgO/relationships/attachments', + related: + 'https://mock.localhost/api/markets/rlEPzheRgO/attachments' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'dlQbPhNNop', + type: 'markets', + links: { + self: 'https://mock.localhost/api/markets/dlQbPhNNop' + }, + attributes: { + number: 350, + name: 'Europe', + facebook_pixel_id: null, + checkout_url: '', + external_prices_url: + 'https://pippo.malessani.commercelayer.dev/api/verify', + external_order_validation_url: '', + shared_secret: '4ea4390961025de791d5bb92e92744eb', + private: false, + disabled_at: null, + created_at: '2022-03-11T09:40:49.000Z', + updated_at: '2023-03-13T13:30:32.184Z', + reference: 'market_1', + reference_origin: 'CLI', + metadata: {} + }, + relationships: { + merchant: { + links: { + self: 'https://mock.localhost/api/markets/dlQbPhNNop/relationships/merchant', + related: + 'https://mock.localhost/api/markets/dlQbPhNNop/merchant' + } + }, + price_list: { + links: { + self: 'https://mock.localhost/api/markets/dlQbPhNNop/relationships/price_list', + related: + 'https://mock.localhost/api/markets/dlQbPhNNop/price_list' + } + }, + inventory_model: { + links: { + self: 'https://mock.localhost/api/markets/dlQbPhNNop/relationships/inventory_model', + related: + 'https://mock.localhost/api/markets/dlQbPhNNop/inventory_model' + } + }, + subscription_model: { + links: { + self: 'https://mock.localhost/api/markets/dlQbPhNNop/relationships/subscription_model', + related: + 'https://mock.localhost/api/markets/dlQbPhNNop/subscription_model' + } + }, + tax_calculator: { + links: { + self: 'https://mock.localhost/api/markets/dlQbPhNNop/relationships/tax_calculator', + related: + 'https://mock.localhost/api/markets/dlQbPhNNop/tax_calculator' + } + }, + customer_group: { + links: { + self: 'https://mock.localhost/api/markets/dlQbPhNNop/relationships/customer_group', + related: + 'https://mock.localhost/api/markets/dlQbPhNNop/customer_group' + } + }, + attachments: { + links: { + self: 'https://mock.localhost/api/markets/dlQbPhNNop/relationships/attachments', + related: + 'https://mock.localhost/api/markets/dlQbPhNNop/attachments' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'AlRevhXQga', + type: 'markets', + links: { + self: 'https://mock.localhost/api/markets/AlRevhXQga' + }, + attributes: { + number: 418, + name: 'Milan', + facebook_pixel_id: null, + checkout_url: '', + external_prices_url: '', + external_order_validation_url: null, + shared_secret: 'fc9954fc7ae851d9588d456656ba102f', + private: false, + disabled_at: null, + created_at: '2022-05-13T12:27:05.075Z', + updated_at: '2022-05-13T12:27:05.075Z', + reference: '', + reference_origin: '', + metadata: {} + }, + relationships: { + merchant: { + links: { + self: 'https://mock.localhost/api/markets/AlRevhXQga/relationships/merchant', + related: + 'https://mock.localhost/api/markets/AlRevhXQga/merchant' + } + }, + price_list: { + links: { + self: 'https://mock.localhost/api/markets/AlRevhXQga/relationships/price_list', + related: + 'https://mock.localhost/api/markets/AlRevhXQga/price_list' + } + }, + inventory_model: { + links: { + self: 'https://mock.localhost/api/markets/AlRevhXQga/relationships/inventory_model', + related: + 'https://mock.localhost/api/markets/AlRevhXQga/inventory_model' + } + }, + subscription_model: { + links: { + self: 'https://mock.localhost/api/markets/AlRevhXQga/relationships/subscription_model', + related: + 'https://mock.localhost/api/markets/AlRevhXQga/subscription_model' + } + }, + tax_calculator: { + links: { + self: 'https://mock.localhost/api/markets/AlRevhXQga/relationships/tax_calculator', + related: + 'https://mock.localhost/api/markets/AlRevhXQga/tax_calculator' + } + }, + customer_group: { + links: { + self: 'https://mock.localhost/api/markets/AlRevhXQga/relationships/customer_group', + related: + 'https://mock.localhost/api/markets/AlRevhXQga/customer_group' + } + }, + attachments: { + links: { + self: 'https://mock.localhost/api/markets/AlRevhXQga/relationships/attachments', + related: + 'https://mock.localhost/api/markets/AlRevhXQga/attachments' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'AjRevhQOoa', + type: 'markets', + links: { + self: 'https://mock.localhost/api/markets/AjRevhQOoa' + }, + attributes: { + number: 351, + name: 'UK', + facebook_pixel_id: null, + checkout_url: null, + external_prices_url: null, + external_order_validation_url: null, + shared_secret: 'a028eb9f9812ee2949da28cd3f8f5268', + private: false, + disabled_at: null, + created_at: '2022-03-11T09:40:50.558Z', + updated_at: '2022-03-11T09:40:50.558Z', + reference: 'market_3', + reference_origin: 'CLI', + metadata: {} + }, + relationships: { + merchant: { + links: { + self: 'https://mock.localhost/api/markets/AjRevhQOoa/relationships/merchant', + related: + 'https://mock.localhost/api/markets/AjRevhQOoa/merchant' + } + }, + price_list: { + links: { + self: 'https://mock.localhost/api/markets/AjRevhQOoa/relationships/price_list', + related: + 'https://mock.localhost/api/markets/AjRevhQOoa/price_list' + } + }, + inventory_model: { + links: { + self: 'https://mock.localhost/api/markets/AjRevhQOoa/relationships/inventory_model', + related: + 'https://mock.localhost/api/markets/AjRevhQOoa/inventory_model' + } + }, + subscription_model: { + links: { + self: 'https://mock.localhost/api/markets/AjRevhQOoa/relationships/subscription_model', + related: + 'https://mock.localhost/api/markets/AjRevhQOoa/subscription_model' + } + }, + tax_calculator: { + links: { + self: 'https://mock.localhost/api/markets/AjRevhQOoa/relationships/tax_calculator', + related: + 'https://mock.localhost/api/markets/AjRevhQOoa/tax_calculator' + } + }, + customer_group: { + links: { + self: 'https://mock.localhost/api/markets/AjRevhQOoa/relationships/customer_group', + related: + 'https://mock.localhost/api/markets/AjRevhQOoa/customer_group' + } + }, + attachments: { + links: { + self: 'https://mock.localhost/api/markets/AjRevhQOoa/relationships/attachments', + related: + 'https://mock.localhost/api/markets/AjRevhQOoa/attachments' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'EjDkXhNEoD', + type: 'markets', + links: { + self: 'https://mock.localhost/api/markets/EjDkXhNEoD' + }, + attributes: { + number: 349, + name: 'USA', + facebook_pixel_id: null, + checkout_url: '', + external_prices_url: '', + external_order_validation_url: null, + shared_secret: '60860b96e891725099e0b1a72dceb510', + private: false, + disabled_at: null, + created_at: '2022-02-24T14:08:20.092Z', + updated_at: '2022-03-21T09:37:44.202Z', + reference: 'market_2', + reference_origin: 'CLI', + metadata: {} + }, + relationships: { + merchant: { + links: { + self: 'https://mock.localhost/api/markets/EjDkXhNEoD/relationships/merchant', + related: + 'https://mock.localhost/api/markets/EjDkXhNEoD/merchant' + } + }, + price_list: { + links: { + self: 'https://mock.localhost/api/markets/EjDkXhNEoD/relationships/price_list', + related: + 'https://mock.localhost/api/markets/EjDkXhNEoD/price_list' + } + }, + inventory_model: { + links: { + self: 'https://mock.localhost/api/markets/EjDkXhNEoD/relationships/inventory_model', + related: + 'https://mock.localhost/api/markets/EjDkXhNEoD/inventory_model' + } + }, + subscription_model: { + links: { + self: 'https://mock.localhost/api/markets/EjDkXhNEoD/relationships/subscription_model', + related: + 'https://mock.localhost/api/markets/EjDkXhNEoD/subscription_model' + } + }, + tax_calculator: { + links: { + self: 'https://mock.localhost/api/markets/EjDkXhNEoD/relationships/tax_calculator', + related: + 'https://mock.localhost/api/markets/EjDkXhNEoD/tax_calculator' + } + }, + customer_group: { + links: { + self: 'https://mock.localhost/api/markets/EjDkXhNEoD/relationships/customer_group', + related: + 'https://mock.localhost/api/markets/EjDkXhNEoD/customer_group' + } + }, + attachments: { + links: { + self: 'https://mock.localhost/api/markets/EjDkXhNEoD/relationships/attachments', + related: + 'https://mock.localhost/api/markets/EjDkXhNEoD/attachments' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + } + ], + meta: { record_count: 5, page_count: 1 }, + links: { + first: + 'https://mock.localhost/api/markets?page%5Bnumber%5D=1&page%5Bsize%5D=25&sort=name', + last: 'https://mock.localhost/api/markets?page%5Bnumber%5D=1&page%5Bsize%5D=25&sort=name' + } + }) + ) + } +) + +export default [allMarkets, someMarkets] diff --git a/packages/document/mocks/data/orders.js b/packages/document/mocks/data/orders.js new file mode 100644 index 00000000..49afe454 --- /dev/null +++ b/packages/document/mocks/data/orders.js @@ -0,0 +1,3713 @@ +import { http } from 'msw' + +const order = { + id: 'NMWYhbGorj', + type: 'orders', + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj' + }, + attributes: { + number: 2485862, + autorefresh: true, + status: 'approved', + payment_status: 'paid', + fulfillment_status: 'in_progress', + guest: true, + editable: false, + customer_email: 'customer@tk.com', + language_code: 'en', + currency_code: 'EUR', + tax_included: true, + tax_rate: null, + freight_taxable: null, + requires_billing_info: true, + country_code: 'IT', + shipping_country_code_lock: null, + coupon_code: null, + gift_card_code: '9951a05f-741a-4ab1-8405-2a7e57612792', + gift_card_or_coupon_code: '9951a05f-741a-4ab1-8405-2a7e57612792', + subtotal_amount_cents: 24400, + subtotal_amount_float: 244.0, + formatted_subtotal_amount: '€244,00', + shipping_amount_cents: 0, + shipping_amount_float: 0.0, + formatted_shipping_amount: '€0,00', + payment_method_amount_cents: 1000, + payment_method_amount_float: 10.0, + formatted_payment_method_amount: '€10,00', + discount_amount_cents: 0, + discount_amount_float: 0.0, + formatted_discount_amount: '€0,00', + adjustment_amount_cents: 0, + adjustment_amount_float: 0.0, + formatted_adjustment_amount: '€0,00', + gift_card_amount_cents: -10000, + gift_card_amount_float: -100.0, + formatted_gift_card_amount: '-€100,00', + total_tax_amount_cents: 0, + total_tax_amount_float: 0.0, + formatted_total_tax_amount: '€0,00', + subtotal_tax_amount_cents: 0, + subtotal_tax_amount_float: 0.0, + formatted_subtotal_tax_amount: '€0,00', + shipping_tax_amount_cents: 0, + shipping_tax_amount_float: 0.0, + formatted_shipping_tax_amount: '€0,00', + payment_method_tax_amount_cents: 0, + payment_method_tax_amount_float: 0.0, + formatted_payment_method_tax_amount: '€0,00', + adjustment_tax_amount_cents: 0, + adjustment_tax_amount_float: 0.0, + formatted_adjustment_tax_amount: '€0,00', + total_amount_cents: 25400, + total_amount_float: 254.0, + formatted_total_amount: '€254,00', + total_taxable_amount_cents: 25400, + total_taxable_amount_float: 254.0, + formatted_total_taxable_amount: '€254,00', + subtotal_taxable_amount_cents: 24400, + subtotal_taxable_amount_float: 244.0, + formatted_subtotal_taxable_amount: '€244,00', + shipping_taxable_amount_cents: 0, + shipping_taxable_amount_float: 0.0, + formatted_shipping_taxable_amount: '€0,00', + payment_method_taxable_amount_cents: 1000, + payment_method_taxable_amount_float: 10.0, + formatted_payment_method_taxable_amount: '€10,00', + adjustment_taxable_amount_cents: 0, + adjustment_taxable_amount_float: 0.0, + formatted_adjustment_taxable_amount: '€0,00', + total_amount_with_taxes_cents: 15400, + total_amount_with_taxes_float: 154.0, + formatted_total_amount_with_taxes: '€154,00', + fees_amount_cents: 0, + fees_amount_float: 0.0, + formatted_fees_amount: '€0,00', + duty_amount_cents: null, + duty_amount_float: null, + formatted_duty_amount: null, + skus_count: 6, + line_item_options_count: 0, + shipments_count: 2, + tax_calculations_count: 0, + validations_count: 0, + payment_source_details: { + type: 'stripe_payment', + payment_method_id: 'pm_1N8LhuK5j6INEBBIHXkK0FFF', + payment_method_type: 'card', + payment_method_details: { + brand: 'visa', + last4: '4242', + checks: { + cvc_check: 'pass', + address_line1_check: 'pass', + address_postal_code_check: 'pass' + }, + wallet: null, + country: 'US', + funding: 'credit', + exp_year: 2031, + networks: { available: ['visa'], preferred: null }, + exp_month: 2, + fingerprint: 'bVaeOEKRmYhi20Nj', + generated_from: null, + three_d_secure_usage: { supported: true } + } + }, + token: '7fe6285a3dfdabeb8cb9324980743396', + cart_url: null, + return_url: null, + terms_url: null, + privacy_url: null, + checkout_url: null, + placed_at: '2023-05-16T11:06:22.012Z', + approved_at: '2023-05-16T14:18:16.775Z', + cancelled_at: null, + payment_updated_at: '2023-05-16T14:18:35.404Z', + fulfillment_updated_at: '2023-05-16T14:18:35.411Z', + refreshed_at: '2023-05-16T11:06:04.613Z', + archived_at: null, + expires_at: null, + subscription_created_at: null, + created_at: '2023-05-16T11:06:02.074Z', + updated_at: '2023-05-16T14:18:35.572Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + market: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/market', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/market' + }, + data: { type: 'markets', id: 'dlQbPhNNop' } + }, + customer: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/customer', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/customer' + }, + data: { type: 'customers', id: 'JkAdBhNGjQ' } + }, + shipping_address: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/shipping_address', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/shipping_address' + }, + data: { type: 'addresses', id: 'dPoNukZmnB' } + }, + billing_address: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/billing_address', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/billing_address' + }, + data: { type: 'addresses', id: 'dQxruwZDnB' } + }, + available_payment_methods: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/available_payment_methods', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/available_payment_methods' + } + }, + available_customer_payment_sources: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/available_customer_payment_sources', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/available_customer_payment_sources' + } + }, + available_free_skus: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/available_free_skus', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/available_free_skus' + } + }, + available_free_bundles: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/available_free_bundles', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/available_free_bundles' + } + }, + payment_method: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/payment_method', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/payment_method' + }, + data: { type: 'payment_methods', id: 'wmBvQsARml' } + }, + payment_source: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/payment_source', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/payment_source' + }, + data: { type: 'stripe_payments', id: 'onXELSmbQy' } + }, + line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/line_items', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/line_items' + }, + data: [ + { type: 'line_items', id: 'vaoMtAZlXy' }, + { type: 'line_items', id: 'kmnptjPlBv' }, + { type: 'line_items', id: 'vWEZtMGVKy' }, + { type: 'line_items', id: 'NqYatGaKnN' }, + { type: 'line_items', id: 'NoEntBwEdk' }, + { type: 'line_items', id: 'NlQmtMAnGy' } + ] + }, + shipments: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/shipments', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/shipments' + }, + data: [ + { type: 'shipments', id: 'YpLwCnNQgY' }, + { type: 'shipments', id: 'PabvCpOxRy' } + ] + }, + transactions: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/transactions', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/transactions' + }, + data: [ + { type: 'authorizations', id: 'nKZkPUDBVj' }, + { type: 'captures', id: 'kyAnxUgegE' } + ] + }, + authorizations: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/authorizations', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/authorizations' + } + }, + captures: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/captures', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/captures' + } + }, + voids: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/voids', + related: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/voids' + } + }, + refunds: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/refunds', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/refunds' + } + }, + returns: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/returns', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/returns' + } + }, + order_subscriptions: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/order_subscriptions', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/order_subscriptions' + } + }, + order_factories: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/order_factories', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/order_factories' + } + }, + order_copies: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/order_copies', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/order_copies' + } + }, + recurring_order_copies: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/recurring_order_copies', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/recurring_order_copies' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/attachments' + }, + data: [{ type: 'attachments', id: 'EqGrksxWNW' }] + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/events', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/tags', + related: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/tags' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/orders/NMWYhbGorj/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } +} + +const orderDetail = http.get( + 'https://mock.localhost/api/orders/NMWYhbGorj?include=shipments,transactions,payment_method,payment_source,attachments', + async (req, res, ctx) => { + return await new Promise((resolve) => { + setTimeout(() => { + resolve( + res( + ctx.status(200), + ctx.json({ + data: order, + included: [ + { + id: 'dlQbPhNNop', + type: 'markets', + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop' + }, + attributes: { + number: 350, + name: 'Europe', + facebook_pixel_id: null, + checkout_url: '', + external_prices_url: + 'https://pippo.malessani.commercelayer.dev/api/verify', + external_order_validation_url: '', + private: false, + disabled_at: null, + created_at: '2022-03-11T09:40:49.000Z', + updated_at: '2023-03-13T13:30:32.184Z', + reference: 'market_1', + reference_origin: 'CLI', + metadata: {} + }, + relationships: { + merchant: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/merchant', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/merchant' + } + }, + price_list: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/price_list', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/price_list' + } + }, + inventory_model: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/inventory_model', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/inventory_model' + } + }, + subscription_model: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/subscription_model', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/subscription_model' + } + }, + tax_calculator: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/tax_calculator', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/tax_calculator' + } + }, + customer_group: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/customer_group', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/customer_group' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/attachments' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'JkAdBhNGjQ', + type: 'customers', + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ' + }, + attributes: { + email: 'customer@tk.com', + status: 'repeat', + has_password: false, + total_orders_count: 2753, + created_at: '2022-03-14T09:13:06.633Z', + updated_at: '2023-07-31T09:13:06.049Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + customer_group: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/customer_group', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/customer_group' + } + }, + customer_addresses: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/customer_addresses', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/customer_addresses' + } + }, + customer_payment_sources: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/customer_payment_sources', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/customer_payment_sources' + } + }, + customer_subscriptions: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/customer_subscriptions', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/customer_subscriptions' + } + }, + orders: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/orders', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/orders' + } + }, + order_subscriptions: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/order_subscriptions', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/order_subscriptions' + } + }, + returns: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/returns', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/returns' + } + }, + sku_lists: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/sku_lists', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/sku_lists' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/attachments' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/events', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'dPoNukZmnB', + type: 'addresses', + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB' + }, + attributes: { + business: false, + first_name: 'Darth', + last_name: 'Vader', + company: null, + full_name: 'Darth Vader', + line_1: 'Via Morte Nera, 13', + line_2: 'Ragnatela, 99', + city: 'Cogorno', + zip_code: '16030', + state_code: 'GE', + country_code: 'IT', + phone: '+39 055 1234567890', + full_address: + 'Via Morte Nera, 13 Ragnatela, 99, 16030 Cogorno GE (IT) +39 055 1234567890', + name: 'Darth Vader, Via Morte Nera, 13 Ragnatela, 99, 16030 Cogorno GE (IT) +39 055 1234567890', + email: null, + notes: null, + lat: null, + lng: null, + is_localized: false, + is_geocoded: false, + provider_name: null, + map_url: null, + static_map_url: null, + billing_info: 'ABCDEFGHIJKLMNOPQRSTUVWYXZ', + created_at: '2023-05-16T11:06:07.638Z', + updated_at: '2023-05-16T11:06:07.638Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + geocoder: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/relationships/geocoder', + related: + 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/geocoder' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/relationships/events', + related: + 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/tags' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'dQxruwZDnB', + type: 'addresses', + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB' + }, + attributes: { + business: false, + first_name: 'Darth', + last_name: 'Vader', + company: null, + full_name: 'Darth Vader', + line_1: 'Via Morte Nera, 13', + line_2: 'Ragnatela, 99', + city: 'Cogorno', + zip_code: '16030', + state_code: 'GE', + country_code: 'IT', + phone: '+39 055 1234567890', + full_address: + 'Via Morte Nera, 13 Ragnatela, 99, 16030 Cogorno GE (IT) +39 055 1234567890', + name: 'Darth Vader, Via Morte Nera, 13 Ragnatela, 99, 16030 Cogorno GE (IT) +39 055 1234567890', + email: null, + notes: null, + lat: null, + lng: null, + is_localized: false, + is_geocoded: false, + provider_name: null, + map_url: null, + static_map_url: null, + billing_info: 'ABCDEFGHIJKLMNOPQRSTUVWYXZ', + created_at: '2023-05-16T11:06:07.493Z', + updated_at: '2023-05-16T11:06:07.493Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + geocoder: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/relationships/geocoder', + related: + 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/geocoder' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/relationships/events', + related: + 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/tags' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'wmBvQsARml', + type: 'payment_methods', + links: { + self: 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml' + }, + attributes: { + payment_source_type: 'stripe_payments', + name: 'Stripe Payment', + currency_code: 'EUR', + moto: false, + require_capture: true, + auto_capture: false, + disabled_at: null, + price_amount_cents: 1000, + price_amount_float: 10.0, + formatted_price_amount: '€10,00', + auto_capture_max_amount_cents: null, + auto_capture_max_amount_float: null, + formatted_auto_capture_max_amount: null, + created_at: '2022-03-11T14:18:08.420Z', + updated_at: '2022-03-11T14:18:08.420Z', + reference: '', + reference_origin: '', + metadata: {} + }, + relationships: { + market: { + links: { + self: 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/relationships/market', + related: + 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/market' + } + }, + payment_gateway: { + links: { + self: 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/relationships/payment_gateway', + related: + 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/payment_gateway' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/attachments' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'onXELSmbQy', + type: 'stripe_payments', + links: { + self: 'https://alessani.commercelayer.co/api/stripe_payments/onXELSmbQy' + }, + attributes: { + client_secret: + 'pi_3N8LhsK5j6INEBBI0JicoLOo_secret_CKWfEPSnvyBHIQrEfRXkrJYd7', + publishable_key: + 'pk_test_51KH86yK5j6INEBBIdkXoh0UwOoOlAbFZc3b8j0vjRHKQHdaUfEJm24F0A9QkrQXVlgh1nXJCpWR6PG3epaUWzE2z00BdEe9fho', + options: { + id: 'pm_1N8LhuK5j6INEBBI71U1QOlu', + card: { + brand: 'visa', + last4: '4242', + checks: { + cvc_check: null, + address_line1_check: null, + address_postal_code_check: null + }, + wallet: null, + country: 'US', + funding: 'credit', + exp_year: 2031, + networks: { available: ['visa'], preferred: null }, + exp_month: 2, + generated_from: null, + three_d_secure_usage: { supported: true } + }, + type: 'card', + object: 'payment_method', + created: 1684235178, + customer: null, + livemode: false, + billing_details: { + name: 'Darth Vader', + email: 'customer@tk.com', + phone: '+39 055 1234567890', + address: { + city: 'Cogorno', + line1: 'Via Morte Nera, 13', + line2: null, + state: 'GE', + country: 'IT', + postal_code: '16030' + } + }, + setup_future_usage: 'off_session', + intent_amount_cents: 15400 + }, + payment_method: { + id: 'pm_1N8LhuK5j6INEBBIHXkK0FFF', + card: { + brand: 'visa', + last4: '4242', + checks: { + cvc_check: 'pass', + address_line1_check: 'pass', + address_postal_code_check: 'pass' + }, + wallet: null, + country: 'US', + funding: 'credit', + exp_year: 2031, + networks: { available: ['visa'], preferred: null }, + exp_month: 2, + fingerprint: 'bVaeOEKRmYhi20Nj', + generated_from: null, + three_d_secure_usage: { supported: true } + }, + type: 'card', + object: 'payment_method', + created: 1684235179, + customer: null, + livemode: false, + metadata: {}, + billing_details: { + name: 'Darth Vader', + email: 'customer@tk.com', + phone: '+39 055 1234567890', + address: { + city: 'Cogorno', + line1: 'Via Morte Nera, 13', + line2: null, + state: 'GE', + country: 'IT', + postal_code: '16030' + } + } + }, + mismatched_amounts: false, + intent_amount_cents: 15400, + intent_amount_float: 154.0, + formatted_intent_amount: '€154,00', + return_url: null, + payment_instrument: { + issuer_type: 'card', + card_type: 'visa', + card_last_digits: '4242', + card_expiry_month: '2', + card_expiry_year: '2031' + }, + created_at: '2023-05-16T11:06:16.338Z', + updated_at: '2023-05-16T11:06:21.948Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/stripe_payments/onXELSmbQy/relationships/order', + related: + 'https://alessani.commercelayer.co/api/stripe_payments/onXELSmbQy/order' + } + }, + payment_gateway: { + links: { + self: 'https://alessani.commercelayer.co/api/stripe_payments/onXELSmbQy/relationships/payment_gateway', + related: + 'https://alessani.commercelayer.co/api/stripe_payments/onXELSmbQy/payment_gateway' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/stripe_payments/onXELSmbQy/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/stripe_payments/onXELSmbQy/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'vaoMtAZlXy', + type: 'line_items', + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy' + }, + attributes: { + sku_code: null, + bundle_code: null, + quantity: 1, + currency_code: 'EUR', + unit_amount_cents: -10000, + unit_amount_float: -100.0, + formatted_unit_amount: '-€100,00', + options_amount_cents: 0, + options_amount_float: 0.0, + formatted_options_amount: '€0,00', + discount_cents: 0, + discount_float: 0.0, + formatted_discount: '€0,00', + total_amount_cents: -10000, + total_amount_float: -100.0, + formatted_total_amount: '-€100,00', + tax_amount_cents: 0, + tax_amount_float: 0.0, + formatted_tax_amount: '€0,00', + name: 'Gift card: €100,00', + image_url: null, + discount_breakdown: {}, + tax_rate: 0.0, + tax_breakdown: {}, + item_type: 'gift_cards', + frequency: null, + created_at: '2023-05-16T11:06:14.674Z', + updated_at: '2023-05-16T11:06:14.674Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/order', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/order' + } + }, + item: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/item', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/item' + } + }, + line_item_options: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/line_item_options', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/line_item_options' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/shipment_line_items' + } + }, + stock_reservations: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/stock_reservations', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/stock_reservations' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/stock_transfers' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/events', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'kmnptjPlBv', + type: 'line_items', + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv' + }, + attributes: { + sku_code: null, + bundle_code: null, + quantity: 1, + currency_code: 'EUR', + unit_amount_cents: 1000, + unit_amount_float: 10.0, + formatted_unit_amount: '€10,00', + options_amount_cents: 0, + options_amount_float: 0.0, + formatted_options_amount: '€0,00', + discount_cents: 0, + discount_float: 0.0, + formatted_discount: '€0,00', + total_amount_cents: 1000, + total_amount_float: 10.0, + formatted_total_amount: '€10,00', + tax_amount_cents: 0, + tax_amount_float: 0.0, + formatted_tax_amount: '€0,00', + name: 'Stripe Payment', + image_url: null, + discount_breakdown: {}, + tax_rate: 0.0, + tax_breakdown: {}, + item_type: 'payment_methods', + frequency: null, + created_at: '2023-05-16T11:06:14.629Z', + updated_at: '2023-05-16T11:06:14.629Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/order', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/order' + } + }, + item: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/item', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/item' + } + }, + line_item_options: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/line_item_options', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/line_item_options' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/shipment_line_items' + } + }, + stock_reservations: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/stock_reservations', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/stock_reservations' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/stock_transfers' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/events', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'vWEZtMGVKy', + type: 'line_items', + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy' + }, + attributes: { + sku_code: null, + bundle_code: null, + quantity: 1, + currency_code: 'EUR', + unit_amount_cents: 0, + unit_amount_float: 0.0, + formatted_unit_amount: '€0,00', + options_amount_cents: 0, + options_amount_float: 0.0, + formatted_options_amount: '€0,00', + discount_cents: 0, + discount_float: 0.0, + formatted_discount: '€0,00', + total_amount_cents: 0, + total_amount_float: 0.0, + formatted_total_amount: '€0,00', + tax_amount_cents: 0, + tax_amount_float: 0.0, + formatted_tax_amount: '€0,00', + name: 'Shipment #2485862/S/001', + image_url: null, + discount_breakdown: {}, + tax_rate: 0.0, + tax_breakdown: {}, + item_type: 'shipments', + frequency: null, + created_at: '2023-05-16T11:06:09.728Z', + updated_at: '2023-05-16T11:06:09.728Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/order', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/order' + } + }, + item: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/item', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/item' + } + }, + line_item_options: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/line_item_options', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/line_item_options' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/shipment_line_items' + } + }, + stock_reservations: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/stock_reservations', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/stock_reservations' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/stock_transfers' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/events', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'NqYatGaKnN', + type: 'line_items', + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN' + }, + attributes: { + sku_code: null, + bundle_code: null, + quantity: 1, + currency_code: 'EUR', + unit_amount_cents: 0, + unit_amount_float: 0.0, + formatted_unit_amount: '€0,00', + options_amount_cents: 0, + options_amount_float: 0.0, + formatted_options_amount: '€0,00', + discount_cents: 0, + discount_float: 0.0, + formatted_discount: '€0,00', + total_amount_cents: 0, + total_amount_float: 0.0, + formatted_total_amount: '€0,00', + tax_amount_cents: 0, + tax_amount_float: 0.0, + formatted_tax_amount: '€0,00', + name: 'Shipment #2485862/S/002', + image_url: null, + discount_breakdown: {}, + tax_rate: 0.0, + tax_breakdown: {}, + item_type: 'shipments', + frequency: null, + created_at: '2023-05-16T11:06:09.602Z', + updated_at: '2023-05-16T11:06:09.602Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/order', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/order' + } + }, + item: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/item', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/item' + } + }, + line_item_options: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/line_item_options', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/line_item_options' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/shipment_line_items' + } + }, + stock_reservations: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/stock_reservations', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/stock_reservations' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/stock_transfers' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/events', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'NoEntBwEdk', + type: 'line_items', + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk' + }, + attributes: { + sku_code: 'TSHIRTMMFFFFFF000000XLXX', + bundle_code: null, + quantity: 5, + currency_code: 'EUR', + unit_amount_cents: 2900, + unit_amount_float: 29.0, + formatted_unit_amount: '€29,00', + options_amount_cents: 0, + options_amount_float: 0.0, + formatted_options_amount: '€0,00', + discount_cents: -5943, + discount_float: -59.43, + formatted_discount: '-€59,43', + total_amount_cents: 14500, + total_amount_float: 145.0, + formatted_total_amount: '€145,00', + tax_amount_cents: 0, + tax_amount_float: 0.0, + formatted_tax_amount: '€0,00', + name: 'White Men T-Shirt with Black Logo (XL)', + image_url: + 'https://data.commercelayer.app/seed/images/skus/TSHIRTMSFFFFFF000000XLXX_FLAT.png', + discount_breakdown: { + vaoMtAZlXy: { cents: -5943, weight: 0.5942622950819673 } + }, + tax_rate: 0.0, + tax_breakdown: {}, + item_type: 'skus', + frequency: null, + created_at: '2023-05-16T11:06:02.458Z', + updated_at: '2023-05-16T11:06:02.458Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/order', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/order' + } + }, + item: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/item', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/item' + } + }, + line_item_options: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/line_item_options', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/line_item_options' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/shipment_line_items' + } + }, + stock_reservations: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/stock_reservations', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/stock_reservations' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/stock_transfers' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/events', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'NlQmtMAnGy', + type: 'line_items', + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy' + }, + attributes: { + sku_code: 'CANVASAU000000FFFFFF1824', + bundle_code: null, + quantity: 1, + currency_code: 'EUR', + unit_amount_cents: 9900, + unit_amount_float: 99.0, + formatted_unit_amount: '€99,00', + options_amount_cents: 0, + options_amount_float: 0.0, + formatted_options_amount: '€0,00', + discount_cents: -4057, + discount_float: -40.57, + formatted_discount: '-€40,57', + total_amount_cents: 9900, + total_amount_float: 99.0, + formatted_total_amount: '€99,00', + tax_amount_cents: 0, + tax_amount_float: 0.0, + formatted_tax_amount: '€0,00', + name: 'Black Canvas with White Logo (18x24)', + image_url: + 'https://img.commercelayer.io/skus/CANVASAU000000FFFFFF.png?fm=jpg&q=90', + discount_breakdown: { + vaoMtAZlXy: { cents: -4057, weight: 0.4057377049180328 } + }, + tax_rate: 0.0, + tax_breakdown: {}, + item_type: 'skus', + frequency: null, + created_at: '2023-05-16T11:06:02.444Z', + updated_at: '2023-05-16T11:06:02.444Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/order', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/order' + } + }, + item: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/item', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/item' + } + }, + line_item_options: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/line_item_options', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/line_item_options' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/shipment_line_items' + } + }, + stock_reservations: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/stock_reservations', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/stock_reservations' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/stock_transfers' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/events', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'YpLwCnNQgY', + type: 'shipments', + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY' + }, + attributes: { + number: '2485862/S/001', + status: 'on_hold', + currency_code: 'EUR', + cost_amount_cents: 0, + cost_amount_float: 0.0, + formatted_cost_amount: '$0.00', + skus_count: 5, + selected_rate_id: null, + rates: [], + purchase_error_code: null, + purchase_error_message: null, + get_rates_errors: [], + get_rates_started_at: null, + get_rates_completed_at: null, + purchase_started_at: null, + purchase_completed_at: null, + purchase_failed_at: null, + on_hold_at: '2023-07-21T14:12:13.287Z', + picking_at: '2023-07-21T14:12:08.574Z', + packing_at: '2023-07-21T14:10:54.107Z', + ready_to_ship_at: null, + shipped_at: null, + created_at: '2023-05-16T11:06:07.685Z', + updated_at: '2023-07-21T14:12:13.286Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/order', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/order' + } + }, + shipping_category: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/shipping_category', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/shipping_category' + } + }, + stock_location: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/stock_location', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/stock_location' + } + }, + origin_address: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/origin_address', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/origin_address' + } + }, + shipping_address: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/shipping_address', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/shipping_address' + } + }, + shipping_method: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/shipping_method', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/shipping_method' + } + }, + delivery_lead_time: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/delivery_lead_time', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/delivery_lead_time' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/shipment_line_items' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/stock_transfers' + } + }, + available_shipping_methods: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/available_shipping_methods', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/available_shipping_methods' + } + }, + carrier_accounts: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/carrier_accounts', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/carrier_accounts' + } + }, + parcels: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/parcels', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/parcels' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/attachments' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/events', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/events' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'PabvCpOxRy', + type: 'shipments', + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy' + }, + attributes: { + number: '2485862/S/002', + status: 'shipped', + currency_code: 'EUR', + cost_amount_cents: 0, + cost_amount_float: 0.0, + formatted_cost_amount: '$0.00', + skus_count: 1, + selected_rate_id: null, + rates: [], + purchase_error_code: null, + purchase_error_message: null, + get_rates_errors: [], + get_rates_started_at: null, + get_rates_completed_at: null, + purchase_started_at: null, + purchase_completed_at: null, + purchase_failed_at: null, + on_hold_at: null, + picking_at: '2023-05-16T14:18:35.559Z', + packing_at: '2023-05-16T14:20:24.459Z', + ready_to_ship_at: '2023-05-16T14:21:43.665Z', + shipped_at: '2023-05-16T14:22:42.632Z', + created_at: '2023-05-16T11:06:07.711Z', + updated_at: '2023-05-16T14:22:42.633Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/order', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/order' + } + }, + shipping_category: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/shipping_category', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/shipping_category' + } + }, + stock_location: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/stock_location', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/stock_location' + } + }, + origin_address: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/origin_address', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/origin_address' + } + }, + shipping_address: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/shipping_address', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/shipping_address' + } + }, + shipping_method: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/shipping_method', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/shipping_method' + } + }, + delivery_lead_time: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/delivery_lead_time', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/delivery_lead_time' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/shipment_line_items' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/stock_transfers' + } + }, + available_shipping_methods: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/available_shipping_methods', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/available_shipping_methods' + } + }, + carrier_accounts: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/carrier_accounts', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/carrier_accounts' + } + }, + parcels: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/parcels', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/parcels' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/attachments' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/events', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/events' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'nKZkPUDBVj', + type: 'authorizations', + links: { + self: 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj' + }, + attributes: { + number: '2485862/T/001', + currency_code: 'EUR', + amount_cents: 15400, + amount_float: 154.0, + formatted_amount: '€154,00', + succeeded: true, + message: 'Success!', + error_code: null, + error_detail: null, + token: 'pi_3N8LhsK5j6INEBBI0JicoLOo', + gateway_transaction_id: 'pi_3N8LhsK5j6INEBBI0JicoLOo', + created_at: '2023-05-16T11:06:21.964Z', + updated_at: '2023-05-16T11:06:21.964Z', + reference: null, + reference_origin: null, + metadata: {}, + cvv_code: null, + cvv_message: null, + avs_code: null, + avs_message: null, + fraud_review: null, + capture_amount_cents: 0, + capture_amount_float: 0.0, + formatted_capture_amount: '€0,00', + capture_balance_cents: 0, + capture_balance_float: 0.0, + formatted_capture_balance: '€0,00', + void_balance_cents: 15400, + void_balance_float: 154.0, + formatted_void_balance: '€154,00' + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/relationships/order', + related: + 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/order' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/attachments' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/versions' + } + }, + captures: { + links: { + self: 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/relationships/captures', + related: + 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/captures' + } + }, + voids: { + links: { + self: 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/relationships/voids', + related: + 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/voids' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/relationships/events', + related: + 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/events' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'kyAnxUgegE', + type: 'captures', + links: { + self: 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE' + }, + attributes: { + number: '2485862/T/002', + currency_code: 'EUR', + amount_cents: 15400, + amount_float: 154.0, + formatted_amount: '€154,00', + succeeded: true, + message: 'Success!', + error_code: null, + error_detail: null, + token: 'pi_3N8LhsK5j6INEBBI0JicoLOo', + gateway_transaction_id: 'pi_3N8LhsK5j6INEBBI0JicoLOo', + created_at: '2023-05-16T14:18:35.368Z', + updated_at: '2023-05-16T14:18:35.368Z', + reference: null, + reference_origin: null, + metadata: {}, + refund_amount_cents: 15400, + refund_amount_float: 154.0, + formatted_refund_amount: '€154,00', + refund_balance_cents: 15400, + refund_balance_float: 154.0, + formatted_refund_balance: '€154,00' + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/relationships/order', + related: + 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/order' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/attachments' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/versions' + } + }, + reference_authorization: { + links: { + self: 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/relationships/reference_authorization', + related: + 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/reference_authorization' + } + }, + refunds: { + links: { + self: 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/relationships/refunds', + related: + 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/refunds' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/relationships/events', + related: + 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/events' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'EqGrksxWNW', + type: 'attachments', + links: { + self: 'https://alessani.commercelayer.co/api/attachments/EqGrksxWNW' + }, + attributes: { + name: 'M. Montalbano', + description: 'Ehi there!', + url: null, + created_at: '2023-07-20T13:58:52.184Z', + updated_at: '2023-07-20T13:58:52.184Z', + reference: null, + reference_origin: 'app-orders--note', + metadata: {} + }, + relationships: { + attachable: { + links: { + self: 'https://alessani.commercelayer.co/api/attachments/EqGrksxWNW/relationships/attachable', + related: + 'https://alessani.commercelayer.co/api/attachments/EqGrksxWNW/attachable' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + } + ] + }) + ) + ) + }, 2000) + }) + } +) + +function getRandomFormattedPrice() { + return `€${Math.floor(Math.random() * 1000)}.00` +} + +function getRandomOrderStatus() { + const statues = [ + { + status: 'placed', + payment_status: 'authorized', + fulfillment_status: 'unfulfilled' + }, + { + status: 'approved', + payment_status: 'paid', + fulfillment_status: 'in_progress' + }, + { + status: 'approved', + payment_status: 'paid', + fulfillment_status: 'fulfilled' + } + ] + return statues[Math.floor(Math.random() * statues.length)] +} + +const orderList = http.get( + 'https://mock.localhost/api/orders', + async (req, res, ctx) => { + const currentPage = parseInt( + req.url.searchParams.get('page[number]') ?? '1' + ) + const itemPerPage = parseInt(req.url.searchParams.get('page[size]') ?? '5') + const pageCount = itemPerPage <= 5 ? 1 : 3 + + return res( + ctx.delay(2000), + ctx.status(200), + ctx.json({ + data: Array(itemPerPage) + .fill(order) + .map((order, idx) => ({ + ...order, + id: `mocked-${currentPage}-${idx}`, + attributes: { + ...order.attributes, + number: parseInt(`26372${currentPage}${idx}`, 10), + formatted_total_amount: getRandomFormattedPrice(), + ...getRandomOrderStatus() + } + })), + meta: { + record_count: itemPerPage * pageCount, + page_count: pageCount + }, + included: [ + { + id: 'dlQbPhNNop', + type: 'markets', + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop' + }, + attributes: { + number: 350, + name: 'Europe', + facebook_pixel_id: null, + checkout_url: '', + external_prices_url: + 'https://pippo.malessani.commercelayer.dev/api/verify', + external_order_validation_url: '', + private: false, + disabled_at: null, + created_at: '2022-03-11T09:40:49.000Z', + updated_at: '2023-03-13T13:30:32.184Z', + reference: 'market_1', + reference_origin: 'CLI', + metadata: {} + }, + relationships: { + merchant: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/merchant', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/merchant' + } + }, + price_list: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/price_list', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/price_list' + } + }, + inventory_model: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/inventory_model', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/inventory_model' + } + }, + subscription_model: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/subscription_model', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/subscription_model' + } + }, + tax_calculator: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/tax_calculator', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/tax_calculator' + } + }, + customer_group: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/customer_group', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/customer_group' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/attachments' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/markets/dlQbPhNNop/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'JkAdBhNGjQ', + type: 'customers', + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ' + }, + attributes: { + email: 'customer@tk.com', + status: 'repeat', + has_password: false, + total_orders_count: 2753, + created_at: '2022-03-14T09:13:06.633Z', + updated_at: '2023-07-31T09:13:06.049Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + customer_group: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/customer_group', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/customer_group' + } + }, + customer_addresses: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/customer_addresses', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/customer_addresses' + } + }, + customer_payment_sources: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/customer_payment_sources', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/customer_payment_sources' + } + }, + customer_subscriptions: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/customer_subscriptions', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/customer_subscriptions' + } + }, + orders: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/orders', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/orders' + } + }, + order_subscriptions: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/order_subscriptions', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/order_subscriptions' + } + }, + returns: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/returns', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/returns' + } + }, + sku_lists: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/sku_lists', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/sku_lists' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/attachments' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/events', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/customers/JkAdBhNGjQ/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'dPoNukZmnB', + type: 'addresses', + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB' + }, + attributes: { + business: false, + first_name: 'Darth', + last_name: 'Vader', + company: null, + full_name: 'Darth Vader', + line_1: 'Via Morte Nera, 13', + line_2: 'Ragnatela, 99', + city: 'Cogorno', + zip_code: '16030', + state_code: 'GE', + country_code: 'IT', + phone: '+39 055 1234567890', + full_address: + 'Via Morte Nera, 13 Ragnatela, 99, 16030 Cogorno GE (IT) +39 055 1234567890', + name: 'Darth Vader, Via Morte Nera, 13 Ragnatela, 99, 16030 Cogorno GE (IT) +39 055 1234567890', + email: null, + notes: null, + lat: null, + lng: null, + is_localized: false, + is_geocoded: false, + provider_name: null, + map_url: null, + static_map_url: null, + billing_info: 'ABCDEFGHIJKLMNOPQRSTUVWYXZ', + created_at: '2023-05-16T11:06:07.638Z', + updated_at: '2023-05-16T11:06:07.638Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + geocoder: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/relationships/geocoder', + related: + 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/geocoder' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/relationships/events', + related: + 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/tags' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/addresses/dPoNukZmnB/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'dQxruwZDnB', + type: 'addresses', + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB' + }, + attributes: { + business: false, + first_name: 'Darth', + last_name: 'Vader', + company: null, + full_name: 'Darth Vader', + line_1: 'Via Morte Nera, 13', + line_2: 'Ragnatela, 99', + city: 'Cogorno', + zip_code: '16030', + state_code: 'GE', + country_code: 'IT', + phone: '+39 055 1234567890', + full_address: + 'Via Morte Nera, 13 Ragnatela, 99, 16030 Cogorno GE (IT) +39 055 1234567890', + name: 'Darth Vader, Via Morte Nera, 13 Ragnatela, 99, 16030 Cogorno GE (IT) +39 055 1234567890', + email: null, + notes: null, + lat: null, + lng: null, + is_localized: false, + is_geocoded: false, + provider_name: null, + map_url: null, + static_map_url: null, + billing_info: 'ABCDEFGHIJKLMNOPQRSTUVWYXZ', + created_at: '2023-05-16T11:06:07.493Z', + updated_at: '2023-05-16T11:06:07.493Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + geocoder: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/relationships/geocoder', + related: + 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/geocoder' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/relationships/events', + related: + 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/tags' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/addresses/dQxruwZDnB/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'wmBvQsARml', + type: 'payment_methods', + links: { + self: 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml' + }, + attributes: { + payment_source_type: 'stripe_payments', + name: 'Stripe Payment', + currency_code: 'EUR', + moto: false, + require_capture: true, + auto_capture: false, + disabled_at: null, + price_amount_cents: 1000, + price_amount_float: 10.0, + formatted_price_amount: '€10,00', + auto_capture_max_amount_cents: null, + auto_capture_max_amount_float: null, + formatted_auto_capture_max_amount: null, + created_at: '2022-03-11T14:18:08.420Z', + updated_at: '2022-03-11T14:18:08.420Z', + reference: '', + reference_origin: '', + metadata: {} + }, + relationships: { + market: { + links: { + self: 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/relationships/market', + related: + 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/market' + } + }, + payment_gateway: { + links: { + self: 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/relationships/payment_gateway', + related: + 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/payment_gateway' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/attachments' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/payment_methods/wmBvQsARml/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'onXELSmbQy', + type: 'stripe_payments', + links: { + self: 'https://alessani.commercelayer.co/api/stripe_payments/onXELSmbQy' + }, + attributes: { + client_secret: + 'pi_3N8LhsK5j6INEBBI0JicoLOo_secret_CKWfEPSnvyBHIQrEfRXkrJYd7', + publishable_key: + 'pk_test_51KH86yK5j6INEBBIdkXoh0UwOoOlAbFZc3b8j0vjRHKQHdaUfEJm24F0A9QkrQXVlgh1nXJCpWR6PG3epaUWzE2z00BdEe9fho', + options: { + id: 'pm_1N8LhuK5j6INEBBI71U1QOlu', + card: { + brand: 'visa', + last4: '4242', + checks: { + cvc_check: null, + address_line1_check: null, + address_postal_code_check: null + }, + wallet: null, + country: 'US', + funding: 'credit', + exp_year: 2031, + networks: { available: ['visa'], preferred: null }, + exp_month: 2, + generated_from: null, + three_d_secure_usage: { supported: true } + }, + type: 'card', + object: 'payment_method', + created: 1684235178, + customer: null, + livemode: false, + billing_details: { + name: 'Darth Vader', + email: 'customer@tk.com', + phone: '+39 055 1234567890', + address: { + city: 'Cogorno', + line1: 'Via Morte Nera, 13', + line2: null, + state: 'GE', + country: 'IT', + postal_code: '16030' + } + }, + setup_future_usage: 'off_session', + intent_amount_cents: 15400 + }, + payment_method: { + id: 'pm_1N8LhuK5j6INEBBIHXkK0FFF', + card: { + brand: 'visa', + last4: '4242', + checks: { + cvc_check: 'pass', + address_line1_check: 'pass', + address_postal_code_check: 'pass' + }, + wallet: null, + country: 'US', + funding: 'credit', + exp_year: 2031, + networks: { available: ['visa'], preferred: null }, + exp_month: 2, + fingerprint: 'bVaeOEKRmYhi20Nj', + generated_from: null, + three_d_secure_usage: { supported: true } + }, + type: 'card', + object: 'payment_method', + created: 1684235179, + customer: null, + livemode: false, + metadata: {}, + billing_details: { + name: 'Darth Vader', + email: 'customer@tk.com', + phone: '+39 055 1234567890', + address: { + city: 'Cogorno', + line1: 'Via Morte Nera, 13', + line2: null, + state: 'GE', + country: 'IT', + postal_code: '16030' + } + } + }, + mismatched_amounts: false, + intent_amount_cents: 15400, + intent_amount_float: 154.0, + formatted_intent_amount: '€154,00', + return_url: null, + payment_instrument: { + issuer_type: 'card', + card_type: 'visa', + card_last_digits: '4242', + card_expiry_month: '2', + card_expiry_year: '2031' + }, + created_at: '2023-05-16T11:06:16.338Z', + updated_at: '2023-05-16T11:06:21.948Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/stripe_payments/onXELSmbQy/relationships/order', + related: + 'https://alessani.commercelayer.co/api/stripe_payments/onXELSmbQy/order' + } + }, + payment_gateway: { + links: { + self: 'https://alessani.commercelayer.co/api/stripe_payments/onXELSmbQy/relationships/payment_gateway', + related: + 'https://alessani.commercelayer.co/api/stripe_payments/onXELSmbQy/payment_gateway' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/stripe_payments/onXELSmbQy/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/stripe_payments/onXELSmbQy/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'vaoMtAZlXy', + type: 'line_items', + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy' + }, + attributes: { + sku_code: null, + bundle_code: null, + quantity: 1, + currency_code: 'EUR', + unit_amount_cents: -10000, + unit_amount_float: -100.0, + formatted_unit_amount: '-€100,00', + options_amount_cents: 0, + options_amount_float: 0.0, + formatted_options_amount: '€0,00', + discount_cents: 0, + discount_float: 0.0, + formatted_discount: '€0,00', + total_amount_cents: -10000, + total_amount_float: -100.0, + formatted_total_amount: '-€100,00', + tax_amount_cents: 0, + tax_amount_float: 0.0, + formatted_tax_amount: '€0,00', + name: 'Gift card: €100,00', + image_url: null, + discount_breakdown: {}, + tax_rate: 0.0, + tax_breakdown: {}, + item_type: 'gift_cards', + frequency: null, + created_at: '2023-05-16T11:06:14.674Z', + updated_at: '2023-05-16T11:06:14.674Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/order', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/order' + } + }, + item: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/item', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/item' + } + }, + line_item_options: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/line_item_options', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/line_item_options' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/shipment_line_items' + } + }, + stock_reservations: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/stock_reservations', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/stock_reservations' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/stock_transfers' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/events', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/line_items/vaoMtAZlXy/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'kmnptjPlBv', + type: 'line_items', + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv' + }, + attributes: { + sku_code: null, + bundle_code: null, + quantity: 1, + currency_code: 'EUR', + unit_amount_cents: 1000, + unit_amount_float: 10.0, + formatted_unit_amount: '€10,00', + options_amount_cents: 0, + options_amount_float: 0.0, + formatted_options_amount: '€0,00', + discount_cents: 0, + discount_float: 0.0, + formatted_discount: '€0,00', + total_amount_cents: 1000, + total_amount_float: 10.0, + formatted_total_amount: '€10,00', + tax_amount_cents: 0, + tax_amount_float: 0.0, + formatted_tax_amount: '€0,00', + name: 'Stripe Payment', + image_url: null, + discount_breakdown: {}, + tax_rate: 0.0, + tax_breakdown: {}, + item_type: 'payment_methods', + frequency: null, + created_at: '2023-05-16T11:06:14.629Z', + updated_at: '2023-05-16T11:06:14.629Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/order', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/order' + } + }, + item: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/item', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/item' + } + }, + line_item_options: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/line_item_options', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/line_item_options' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/shipment_line_items' + } + }, + stock_reservations: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/stock_reservations', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/stock_reservations' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/stock_transfers' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/events', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/line_items/kmnptjPlBv/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'vWEZtMGVKy', + type: 'line_items', + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy' + }, + attributes: { + sku_code: null, + bundle_code: null, + quantity: 1, + currency_code: 'EUR', + unit_amount_cents: 0, + unit_amount_float: 0.0, + formatted_unit_amount: '€0,00', + options_amount_cents: 0, + options_amount_float: 0.0, + formatted_options_amount: '€0,00', + discount_cents: 0, + discount_float: 0.0, + formatted_discount: '€0,00', + total_amount_cents: 0, + total_amount_float: 0.0, + formatted_total_amount: '€0,00', + tax_amount_cents: 0, + tax_amount_float: 0.0, + formatted_tax_amount: '€0,00', + name: 'Shipment #2485862/S/001', + image_url: null, + discount_breakdown: {}, + tax_rate: 0.0, + tax_breakdown: {}, + item_type: 'shipments', + frequency: null, + created_at: '2023-05-16T11:06:09.728Z', + updated_at: '2023-05-16T11:06:09.728Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/order', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/order' + } + }, + item: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/item', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/item' + } + }, + line_item_options: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/line_item_options', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/line_item_options' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/shipment_line_items' + } + }, + stock_reservations: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/stock_reservations', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/stock_reservations' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/stock_transfers' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/events', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/line_items/vWEZtMGVKy/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'NqYatGaKnN', + type: 'line_items', + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN' + }, + attributes: { + sku_code: null, + bundle_code: null, + quantity: 1, + currency_code: 'EUR', + unit_amount_cents: 0, + unit_amount_float: 0.0, + formatted_unit_amount: '€0,00', + options_amount_cents: 0, + options_amount_float: 0.0, + formatted_options_amount: '€0,00', + discount_cents: 0, + discount_float: 0.0, + formatted_discount: '€0,00', + total_amount_cents: 0, + total_amount_float: 0.0, + formatted_total_amount: '€0,00', + tax_amount_cents: 0, + tax_amount_float: 0.0, + formatted_tax_amount: '€0,00', + name: 'Shipment #2485862/S/002', + image_url: null, + discount_breakdown: {}, + tax_rate: 0.0, + tax_breakdown: {}, + item_type: 'shipments', + frequency: null, + created_at: '2023-05-16T11:06:09.602Z', + updated_at: '2023-05-16T11:06:09.602Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/order', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/order' + } + }, + item: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/item', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/item' + } + }, + line_item_options: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/line_item_options', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/line_item_options' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/shipment_line_items' + } + }, + stock_reservations: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/stock_reservations', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/stock_reservations' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/stock_transfers' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/events', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/line_items/NqYatGaKnN/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'NoEntBwEdk', + type: 'line_items', + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk' + }, + attributes: { + sku_code: 'TSHIRTMMFFFFFF000000XLXX', + bundle_code: null, + quantity: 5, + currency_code: 'EUR', + unit_amount_cents: 2900, + unit_amount_float: 29.0, + formatted_unit_amount: '€29,00', + options_amount_cents: 0, + options_amount_float: 0.0, + formatted_options_amount: '€0,00', + discount_cents: -5943, + discount_float: -59.43, + formatted_discount: '-€59,43', + total_amount_cents: 14500, + total_amount_float: 145.0, + formatted_total_amount: '€145,00', + tax_amount_cents: 0, + tax_amount_float: 0.0, + formatted_tax_amount: '€0,00', + name: 'White Men T-Shirt with Black Logo (XL)', + image_url: + 'https://data.commercelayer.app/seed/images/skus/TSHIRTMSFFFFFF000000XLXX_FLAT.png', + discount_breakdown: { + vaoMtAZlXy: { cents: -5943, weight: 0.5942622950819673 } + }, + tax_rate: 0.0, + tax_breakdown: {}, + item_type: 'skus', + frequency: null, + created_at: '2023-05-16T11:06:02.458Z', + updated_at: '2023-05-16T11:06:02.458Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/order', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/order' + } + }, + item: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/item', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/item' + } + }, + line_item_options: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/line_item_options', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/line_item_options' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/shipment_line_items' + } + }, + stock_reservations: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/stock_reservations', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/stock_reservations' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/stock_transfers' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/events', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/line_items/NoEntBwEdk/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'NlQmtMAnGy', + type: 'line_items', + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy' + }, + attributes: { + sku_code: 'CANVASAU000000FFFFFF1824', + bundle_code: null, + quantity: 1, + currency_code: 'EUR', + unit_amount_cents: 9900, + unit_amount_float: 99.0, + formatted_unit_amount: '€99,00', + options_amount_cents: 0, + options_amount_float: 0.0, + formatted_options_amount: '€0,00', + discount_cents: -4057, + discount_float: -40.57, + formatted_discount: '-€40,57', + total_amount_cents: 9900, + total_amount_float: 99.0, + formatted_total_amount: '€99,00', + tax_amount_cents: 0, + tax_amount_float: 0.0, + formatted_tax_amount: '€0,00', + name: 'Black Canvas with White Logo (18x24)', + image_url: + 'https://img.commercelayer.io/skus/CANVASAU000000FFFFFF.png?fm=jpg&q=90', + discount_breakdown: { + vaoMtAZlXy: { cents: -4057, weight: 0.4057377049180328 } + }, + tax_rate: 0.0, + tax_breakdown: {}, + item_type: 'skus', + frequency: null, + created_at: '2023-05-16T11:06:02.444Z', + updated_at: '2023-05-16T11:06:02.444Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/order', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/order' + } + }, + item: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/item', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/item' + } + }, + line_item_options: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/line_item_options', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/line_item_options' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/shipment_line_items' + } + }, + stock_reservations: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/stock_reservations', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/stock_reservations' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/stock_transfers' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/events', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/events' + } + }, + tags: { + links: { + self: 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/relationships/tags', + related: + 'https://alessani.commercelayer.co/api/line_items/NlQmtMAnGy/tags' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'YpLwCnNQgY', + type: 'shipments', + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY' + }, + attributes: { + number: '2485862/S/001', + status: 'on_hold', + currency_code: 'EUR', + cost_amount_cents: 0, + cost_amount_float: 0.0, + formatted_cost_amount: '$0.00', + skus_count: 5, + selected_rate_id: null, + rates: [], + purchase_error_code: null, + purchase_error_message: null, + get_rates_errors: [], + get_rates_started_at: null, + get_rates_completed_at: null, + purchase_started_at: null, + purchase_completed_at: null, + purchase_failed_at: null, + on_hold_at: '2023-07-21T14:12:13.287Z', + picking_at: '2023-07-21T14:12:08.574Z', + packing_at: '2023-07-21T14:10:54.107Z', + ready_to_ship_at: null, + shipped_at: null, + created_at: '2023-05-16T11:06:07.685Z', + updated_at: '2023-07-21T14:12:13.286Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/order', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/order' + } + }, + shipping_category: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/shipping_category', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/shipping_category' + } + }, + stock_location: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/stock_location', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/stock_location' + } + }, + origin_address: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/origin_address', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/origin_address' + } + }, + shipping_address: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/shipping_address', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/shipping_address' + } + }, + shipping_method: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/shipping_method', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/shipping_method' + } + }, + delivery_lead_time: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/delivery_lead_time', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/delivery_lead_time' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/shipment_line_items' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/stock_transfers' + } + }, + available_shipping_methods: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/available_shipping_methods', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/available_shipping_methods' + } + }, + carrier_accounts: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/carrier_accounts', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/carrier_accounts' + } + }, + parcels: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/parcels', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/parcels' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/attachments' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/events', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/events' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/shipments/YpLwCnNQgY/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'PabvCpOxRy', + type: 'shipments', + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy' + }, + attributes: { + number: '2485862/S/002', + status: 'shipped', + currency_code: 'EUR', + cost_amount_cents: 0, + cost_amount_float: 0.0, + formatted_cost_amount: '$0.00', + skus_count: 1, + selected_rate_id: null, + rates: [], + purchase_error_code: null, + purchase_error_message: null, + get_rates_errors: [], + get_rates_started_at: null, + get_rates_completed_at: null, + purchase_started_at: null, + purchase_completed_at: null, + purchase_failed_at: null, + on_hold_at: null, + picking_at: '2023-05-16T14:18:35.559Z', + packing_at: '2023-05-16T14:20:24.459Z', + ready_to_ship_at: '2023-05-16T14:21:43.665Z', + shipped_at: '2023-05-16T14:22:42.632Z', + created_at: '2023-05-16T11:06:07.711Z', + updated_at: '2023-05-16T14:22:42.633Z', + reference: null, + reference_origin: null, + metadata: {} + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/order', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/order' + } + }, + shipping_category: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/shipping_category', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/shipping_category' + } + }, + stock_location: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/stock_location', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/stock_location' + } + }, + origin_address: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/origin_address', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/origin_address' + } + }, + shipping_address: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/shipping_address', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/shipping_address' + } + }, + shipping_method: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/shipping_method', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/shipping_method' + } + }, + delivery_lead_time: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/delivery_lead_time', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/delivery_lead_time' + } + }, + shipment_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/shipment_line_items', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/shipment_line_items' + } + }, + stock_line_items: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/stock_line_items', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/stock_line_items' + } + }, + stock_transfers: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/stock_transfers', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/stock_transfers' + } + }, + available_shipping_methods: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/available_shipping_methods', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/available_shipping_methods' + } + }, + carrier_accounts: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/carrier_accounts', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/carrier_accounts' + } + }, + parcels: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/parcels', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/parcels' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/attachments' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/events', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/events' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/shipments/PabvCpOxRy/versions' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'nKZkPUDBVj', + type: 'authorizations', + links: { + self: 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj' + }, + attributes: { + number: '2485862/T/001', + currency_code: 'EUR', + amount_cents: 15400, + amount_float: 154.0, + formatted_amount: '€154,00', + succeeded: true, + message: 'Success!', + error_code: null, + error_detail: null, + token: 'pi_3N8LhsK5j6INEBBI0JicoLOo', + gateway_transaction_id: 'pi_3N8LhsK5j6INEBBI0JicoLOo', + created_at: '2023-05-16T11:06:21.964Z', + updated_at: '2023-05-16T11:06:21.964Z', + reference: null, + reference_origin: null, + metadata: {}, + cvv_code: null, + cvv_message: null, + avs_code: null, + avs_message: null, + fraud_review: null, + capture_amount_cents: 0, + capture_amount_float: 0.0, + formatted_capture_amount: '€0,00', + capture_balance_cents: 0, + capture_balance_float: 0.0, + formatted_capture_balance: '€0,00', + void_balance_cents: 15400, + void_balance_float: 154.0, + formatted_void_balance: '€154,00' + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/relationships/order', + related: + 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/order' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/attachments' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/versions' + } + }, + captures: { + links: { + self: 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/relationships/captures', + related: + 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/captures' + } + }, + voids: { + links: { + self: 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/relationships/voids', + related: + 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/voids' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/relationships/events', + related: + 'https://alessani.commercelayer.co/api/authorizations/nKZkPUDBVj/events' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'kyAnxUgegE', + type: 'captures', + links: { + self: 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE' + }, + attributes: { + number: '2485862/T/002', + currency_code: 'EUR', + amount_cents: 15400, + amount_float: 154.0, + formatted_amount: '€154,00', + succeeded: true, + message: 'Success!', + error_code: null, + error_detail: null, + token: 'pi_3N8LhsK5j6INEBBI0JicoLOo', + gateway_transaction_id: 'pi_3N8LhsK5j6INEBBI0JicoLOo', + created_at: '2023-05-16T14:18:35.368Z', + updated_at: '2023-05-16T14:18:35.368Z', + reference: null, + reference_origin: null, + metadata: {}, + refund_amount_cents: 15400, + refund_amount_float: 154.0, + formatted_refund_amount: '€154,00', + refund_balance_cents: 15400, + refund_balance_float: 154.0, + formatted_refund_balance: '€154,00' + }, + relationships: { + order: { + links: { + self: 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/relationships/order', + related: + 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/order' + } + }, + attachments: { + links: { + self: 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/relationships/attachments', + related: + 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/attachments' + } + }, + versions: { + links: { + self: 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/relationships/versions', + related: + 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/versions' + } + }, + reference_authorization: { + links: { + self: 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/relationships/reference_authorization', + related: + 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/reference_authorization' + } + }, + refunds: { + links: { + self: 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/relationships/refunds', + related: + 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/refunds' + } + }, + events: { + links: { + self: 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/relationships/events', + related: + 'https://alessani.commercelayer.co/api/captures/kyAnxUgegE/events' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + }, + { + id: 'EqGrksxWNW', + type: 'attachments', + links: { + self: 'https://alessani.commercelayer.co/api/attachments/EqGrksxWNW' + }, + attributes: { + name: 'M. Montalbano', + description: 'Ehi there!', + url: null, + created_at: '2023-07-20T13:58:52.184Z', + updated_at: '2023-07-20T13:58:52.184Z', + reference: null, + reference_origin: 'app-orders--note', + metadata: {} + }, + relationships: { + attachable: { + links: { + self: 'https://alessani.commercelayer.co/api/attachments/EqGrksxWNW/relationships/attachable', + related: + 'https://alessani.commercelayer.co/api/attachments/EqGrksxWNW/attachable' + } + } + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + } + ] + }) + ) + } +) + +export default [orderDetail, orderList] diff --git a/packages/document/mocks/data/tags.js b/packages/document/mocks/data/tags.js new file mode 100644 index 00000000..3fdf23d7 --- /dev/null +++ b/packages/document/mocks/data/tags.js @@ -0,0 +1,42 @@ +import { HttpResponse, http } from 'msw' + +const mockedTags = Array(15) + .fill(null) + .map((item, idx) => ({ + id: Math.random().toString().substring(2, 12), + type: 'tags', + attributes: { + name: `tag-${idx}`, + created_at: '2023-03-17T14:07:36.604Z', + updated_at: '2023-03-17T14:07:36.604Z' + }, + meta: { mode: 'test', organization_id: 'WXlEOFrjnr' } + })) + +const customerTags = http.get( + `https://mock.localhost/api/customers/NMWYhbGorj/tags`, + async () => { + return HttpResponse.json( + { + data: mockedTags.slice(0, 2), + meta: { record_count: 2, page_count: 1 } + }, + { status: 200 } + ) + } +) + +const organizationTags = http.get( + `https://mock.localhost/api/tags`, + async () => { + return HttpResponse.json( + { + data: mockedTags, + meta: { record_count: 100, page_count: 10 } + }, + { status: 200 } + ) + } +) + +export default [customerTags, organizationTags] diff --git a/packages/document/mocks/handlers.js b/packages/document/mocks/handlers.js new file mode 100644 index 00000000..df071002 --- /dev/null +++ b/packages/document/mocks/handlers.js @@ -0,0 +1,15 @@ +import adjustments from './data/adjustments' +import bundles from './data/bundles' +import lineItems from './data/line_items' +import markets from './data/markets' +import orders from './data/orders' +import tags from './data/tags' + +export const handlers = [ + ...adjustments, + ...bundles, + ...lineItems, + ...markets, + ...orders, + ...tags +] diff --git a/packages/document/package.json b/packages/document/package.json new file mode 100644 index 00000000..8b6d5d5c --- /dev/null +++ b/packages/document/package.json @@ -0,0 +1,53 @@ +{ + "name": "document", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview", + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build" + }, + "dependencies": { + "react": "^19.1.0", + "react-dom": "^19.1.0" + }, + "devDependencies": { + "@chromatic-com/storybook": "^3.2.6", + "@eslint/js": "^9.24.0", + "@storybook/addon-docs": "^8.6.12", + "@storybook/addon-essentials": "^8.6.12", + "@storybook/addon-interactions": "^8.6.12", + "@storybook/addon-links": "^8.6.12", + "@storybook/addon-mdx-gfm": "^8.6.12", + "@storybook/addon-onboarding": "^8.6.12", + "@storybook/blocks": "^8.6.12", + "@storybook/react": "^8.6.12", + "@storybook/react-vite": "^8.6.12", + "@storybook/test": "^8.6.12", + "@storybook/theming": "^8.6.12", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@vitejs/plugin-react": "^4.4.0", + "eslint": "^9.24.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "eslint-plugin-storybook": "^0.12.0", + "globals": "^16.0.0", + "msw": "^2.7.4", + "remark-gfm": "^4.0.1", + "storybook": "^8.6.12", + "typescript": "~5.8.3", + "typescript-eslint": "^8.30.1", + "vite": "^6.3.1", + "vite-tsconfig-paths": "^5.1.4" + }, + "eslintConfig": { + "extends": [ + "plugin:storybook/recommended" + ] + } +} diff --git a/packages/document/public/app-logo.png b/packages/document/public/app-logo.png new file mode 100644 index 00000000..77e678b5 Binary files /dev/null and b/packages/document/public/app-logo.png differ diff --git a/packages/document/public/mockServiceWorker.js b/packages/document/public/mockServiceWorker.js new file mode 100644 index 00000000..87e0f31b --- /dev/null +++ b/packages/document/public/mockServiceWorker.js @@ -0,0 +1,303 @@ +/* eslint-disable */ +/* tslint:disable */ + +/** + * Mock Service Worker (1.2.1). + * @see https://github.com/mswjs/msw + * - Please do NOT modify this file. + * - Please do NOT serve this file on production. + */ + +const INTEGRITY_CHECKSUM = '3d6b9f06410d179a7f7404d4bf4c3c70' +const activeClientIds = new Set() + +self.addEventListener('install', function () { + self.skipWaiting() +}) + +self.addEventListener('activate', function (event) { + event.waitUntil(self.clients.claim()) +}) + +self.addEventListener('message', async function (event) { + const clientId = event.source.id + + if (!clientId || !self.clients) { + return + } + + const client = await self.clients.get(clientId) + + if (!client) { + return + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + switch (event.data) { + case 'KEEPALIVE_REQUEST': { + sendToClient(client, { + type: 'KEEPALIVE_RESPONSE', + }) + break + } + + case 'INTEGRITY_CHECK_REQUEST': { + sendToClient(client, { + type: 'INTEGRITY_CHECK_RESPONSE', + payload: INTEGRITY_CHECKSUM, + }) + break + } + + case 'MOCK_ACTIVATE': { + activeClientIds.add(clientId) + + sendToClient(client, { + type: 'MOCKING_ENABLED', + payload: true, + }) + break + } + + case 'MOCK_DEACTIVATE': { + activeClientIds.delete(clientId) + break + } + + case 'CLIENT_CLOSED': { + activeClientIds.delete(clientId) + + const remainingClients = allClients.filter((client) => { + return client.id !== clientId + }) + + // Unregister itself when there are no more clients + if (remainingClients.length === 0) { + self.registration.unregister() + } + + break + } + } +}) + +self.addEventListener('fetch', function (event) { + const { request } = event + const accept = request.headers.get('accept') || '' + + // Bypass server-sent events. + if (accept.includes('text/event-stream')) { + return + } + + // Bypass navigation requests. + if (request.mode === 'navigate') { + return + } + + // Opening the DevTools triggers the "only-if-cached" request + // that cannot be handled by the worker. Bypass such requests. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + return + } + + // Bypass all requests when there are no active clients. + // Prevents the self-unregistered worked from handling requests + // after it's been deleted (still remains active until the next reload). + if (activeClientIds.size === 0) { + return + } + + // Generate unique request ID. + const requestId = Math.random().toString(16).slice(2) + + event.respondWith( + handleRequest(event, requestId).catch((error) => { + if (error.name === 'NetworkError') { + console.warn( + '[MSW] Successfully emulated a network error for the "%s %s" request.', + request.method, + request.url, + ) + return + } + + // At this point, any exception indicates an issue with the original request/response. + console.error( + `\ +[MSW] Caught an exception from the "%s %s" request (%s). This is probably not a problem with Mock Service Worker. There is likely an additional logging output above.`, + request.method, + request.url, + `${error.name}: ${error.message}`, + ) + }), + ) +}) + +async function handleRequest(event, requestId) { + const client = await resolveMainClient(event) + const response = await getResponse(event, client, requestId) + + // Send back the response clone for the "response:*" life-cycle events. + // Ensure MSW is active and ready to handle the message, otherwise + // this message will pend indefinitely. + if (client && activeClientIds.has(client.id)) { + ;(async function () { + const clonedResponse = response.clone() + sendToClient(client, { + type: 'RESPONSE', + payload: { + requestId, + type: clonedResponse.type, + ok: clonedResponse.ok, + status: clonedResponse.status, + statusText: clonedResponse.statusText, + body: + clonedResponse.body === null ? null : await clonedResponse.text(), + headers: Object.fromEntries(clonedResponse.headers.entries()), + redirected: clonedResponse.redirected, + }, + }) + })() + } + + return response +} + +// Resolve the main client for the given event. +// Client that issues a request doesn't necessarily equal the client +// that registered the worker. It's with the latter the worker should +// communicate with during the response resolving phase. +async function resolveMainClient(event) { + const client = await self.clients.get(event.clientId) + + if (client?.frameType === 'top-level') { + return client + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + return allClients + .filter((client) => { + // Get only those clients that are currently visible. + return client.visibilityState === 'visible' + }) + .find((client) => { + // Find the client ID that's recorded in the + // set of clients that have registered the worker. + return activeClientIds.has(client.id) + }) +} + +async function getResponse(event, client, requestId) { + const { request } = event + const clonedRequest = request.clone() + + function passthrough() { + // Clone the request because it might've been already used + // (i.e. its body has been read and sent to the client). + const headers = Object.fromEntries(clonedRequest.headers.entries()) + + // Remove MSW-specific request headers so the bypassed requests + // comply with the server's CORS preflight check. + // Operate with the headers as an object because request "Headers" + // are immutable. + delete headers['x-msw-bypass'] + + return fetch(clonedRequest, { headers }) + } + + // Bypass mocking when the client is not active. + if (!client) { + return passthrough() + } + + // Bypass initial page load requests (i.e. static assets). + // The absence of the immediate/parent client in the map of the active clients + // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet + // and is not ready to handle requests. + if (!activeClientIds.has(client.id)) { + return passthrough() + } + + // Bypass requests with the explicit bypass header. + // Such requests can be issued by "ctx.fetch()". + if (request.headers.get('x-msw-bypass') === 'true') { + return passthrough() + } + + // Notify the client that a request has been intercepted. + const clientMessage = await sendToClient(client, { + type: 'REQUEST', + payload: { + id: requestId, + url: request.url, + method: request.method, + headers: Object.fromEntries(request.headers.entries()), + cache: request.cache, + mode: request.mode, + credentials: request.credentials, + destination: request.destination, + integrity: request.integrity, + redirect: request.redirect, + referrer: request.referrer, + referrerPolicy: request.referrerPolicy, + body: await request.text(), + bodyUsed: request.bodyUsed, + keepalive: request.keepalive, + }, + }) + + switch (clientMessage.type) { + case 'MOCK_RESPONSE': { + return respondWithMock(clientMessage.data) + } + + case 'MOCK_NOT_FOUND': { + return passthrough() + } + + case 'NETWORK_ERROR': { + const { name, message } = clientMessage.data + const networkError = new Error(message) + networkError.name = name + + // Rejecting a "respondWith" promise emulates a network error. + throw networkError + } + } + + return passthrough() +} + +function sendToClient(client, message) { + return new Promise((resolve, reject) => { + const channel = new MessageChannel() + + channel.port1.onmessage = (event) => { + if (event.data && event.data.error) { + return reject(event.data.error) + } + + resolve(event.data) + } + + client.postMessage(message, [channel.port2]) + }) +} + +function sleep(timeMs) { + return new Promise((resolve) => { + setTimeout(resolve, timeMs) + }) +} + +async function respondWithMock(response) { + await sleep(response.delay) + return new Response(response.body, response) +} diff --git a/packages/document/public/storybook-preview.css b/packages/document/public/storybook-preview.css new file mode 100644 index 00000000..3d591793 --- /dev/null +++ b/packages/document/public/storybook-preview.css @@ -0,0 +1,38 @@ +/* Global */ +.sbdocs-wrapper ol { + list-style: decimal; +} + +/** Blockquote */ +span[type] { + display: block; + padding: 16px !important; + font-size: 14px !important; + color: #2e3438 !important; + margin: 16px 0; + border-left: 4px solid; +} +span[type]::before { + content: attr(title); + display: block; + font-weight: bold; +} +span[type] > p { + margin: 0; +} +span[type='info'] { + border-color: #3b82f6; + background-color: #dbebfe; +} +span[type='warning'] { + border-color: #f97317; + background-color: #ffedd5; +} +span[type='success'] { + border-color: #22c55f; + background-color: #ddfce7; +} +span[type='danger'] { + border-color: #ef4544; + background-color: #fee2e3; +} diff --git a/packages/document/public/welcome-hero.png b/packages/document/public/welcome-hero.png new file mode 100644 index 00000000..57c9193b Binary files /dev/null and b/packages/document/public/welcome-hero.png differ diff --git a/packages/document/src/App.css b/packages/document/src/App.css new file mode 100644 index 00000000..b9d355df --- /dev/null +++ b/packages/document/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/packages/document/src/App.tsx b/packages/document/src/App.tsx new file mode 100644 index 00000000..3d7ded3f --- /dev/null +++ b/packages/document/src/App.tsx @@ -0,0 +1,35 @@ +import { useState } from 'react' +import reactLogo from './assets/react.svg' +import viteLogo from '/vite.svg' +import './App.css' + +function App() { + const [count, setCount] = useState(0) + + return ( + <> + +

Vite + React

+
+ +

+ Edit src/App.tsx and save to test HMR +

+
+

+ Click on the Vite and React logos to learn more +

+ + ) +} + +export default App diff --git a/packages/document/src/assets/react.svg b/packages/document/src/assets/react.svg new file mode 100644 index 00000000..6c87de9b --- /dev/null +++ b/packages/document/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/document/src/index.css b/packages/document/src/index.css new file mode 100644 index 00000000..6119ad9a --- /dev/null +++ b/packages/document/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/packages/document/src/main.tsx b/packages/document/src/main.tsx new file mode 100644 index 00000000..86e0ef88 --- /dev/null +++ b/packages/document/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from "react" +import { createRoot } from "react-dom/client" +import "./index.css" +import App from "./App.tsx" + +createRoot(document.getElementById("root")!).render( + + + , +) diff --git a/packages/document/src/stories/_internals/Code.tsx b/packages/document/src/stories/_internals/Code.tsx new file mode 100644 index 00000000..383c69b0 --- /dev/null +++ b/packages/document/src/stories/_internals/Code.tsx @@ -0,0 +1,3 @@ +export const Code: React.FC<{ children?: string }> = ({ children }) => { + return {children} +} diff --git a/packages/document/src/stories/_internals/CommerceLayer.tsx b/packages/document/src/stories/_internals/CommerceLayer.tsx new file mode 100644 index 00000000..e4bed7a8 --- /dev/null +++ b/packages/document/src/stories/_internals/CommerceLayer.tsx @@ -0,0 +1,35 @@ +import { type DefaultChildrenType } from '#typings/globals' +import CommerceLayerComponent from '#components/auth/CommerceLayer' +import { useGetToken } from './useGetToken' + +interface Props { + children: DefaultChildrenType + accessToken: + | 'customer-access-token' + | 'customer-orders-access-token' + | 'my-access-token' // guest token + endpoint?: string +} + +/** + * Custom setup for the `CommerceLayer` component that can be used in Storybook. + * without exposing the `accessToken` and `endpoint` props. + */ +function CommerceLayer({ children, ...props }: Props): JSX.Element { + const { accessToken, endpoint } = useGetToken({ + mode: + props.accessToken === 'customer-access-token' + ? 'customer' + : props.accessToken === 'customer-orders-access-token' + ? 'customer-orders' + : 'guest' + }) + + return ( + + {children} + + ) +} + +export default CommerceLayer diff --git a/packages/document/src/stories/_internals/OrderStorage.tsx b/packages/document/src/stories/_internals/OrderStorage.tsx new file mode 100644 index 00000000..41df3c7b --- /dev/null +++ b/packages/document/src/stories/_internals/OrderStorage.tsx @@ -0,0 +1,96 @@ +/* eslint-disable @typescript-eslint/no-misused-promises */ +import OrderStorageComponent from "#components/orders/OrderStorage"; +import useCommerceLayer from "#hooks/useCommerceLayer"; +import { useState, useEffect } from "react"; +import useOrderContainer from "#hooks/useOrderContainer"; +import type { CommerceLayerClient } from "@commercelayer/sdk"; + +export const OrderStorage = ({ + persistKey, + children, +}: { + persistKey: string; + children: React.ReactNode; +}): JSX.Element => { + const [orderId, setOrderId] = useState(localStorage.getItem(persistKey)); + const { sdkClient, accessToken } = useCommerceLayer(); + const cl = + accessToken != null && accessToken !== "" && sdkClient != null + ? sdkClient() + : undefined; + + useEffect(() => { + if (cl != null && orderId == null) { + createOrderWithItems(cl).then((orderId) => { + setOrderId(orderId); + localStorage.setItem(persistKey, orderId); + }); + } + }, [cl, persistKey]); + + if (cl == null || orderId == null) { + return
; + } + + return ( + + {children} + + ); +}; + +export const AddSampleItems = (): JSX.Element => { + const { sdkClient, accessToken } = useCommerceLayer(); + const { order, addToCart } = useOrderContainer(); + const cl = accessToken != null && accessToken !== "" && sdkClient(); + + if (cl == null || cl === false || order == null) return
loading...
; + + return ( +
+

Cart is empty

+ +
+ ); +}; + +async function createOrderWithItems(cl: CommerceLayerClient): Promise { + const order = await cl.orders.create({ + language_code: "en", + }); + await fillOrder(order.id, cl); + return order.id; +} + +async function fillOrder( + orderId: string, + cl: CommerceLayerClient, +): Promise { + await cl.line_items.create({ + item_type: "skus", + sku_code: "5PANECAP9D9CA1FFFFFFXXXX", + quantity: 2, + order: cl.orders.relationship(orderId), + }); + + await cl.line_items.create({ + item_type: "skus", + sku_code: "BACKPACK000000FFFFFFXXXX", + quantity: 3, + order: cl.orders.relationship(orderId), + }); +} diff --git a/packages/document/src/stories/_internals/useGetToken.ts b/packages/document/src/stories/_internals/useGetToken.ts new file mode 100644 index 00000000..966dd14f --- /dev/null +++ b/packages/document/src/stories/_internals/useGetToken.ts @@ -0,0 +1,261 @@ +import { authenticate } from '@commercelayer/js-auth' +import { useEffect, useMemo, useState } from 'react' +import Cookie from 'js-cookie' +import { jwtDecode } from 'jwt-decode' + +const salesChannel = { + clientId: 'Z5ypiDlsqgV8twWRz0GabrJvTKXad4U-PMoVAU-XvV0', + slug: 'react-components-store', + scope: 'market:15283', + domain: 'commercelayer.io' +} +const savedCustomerWithOrders = { + username: 'bruce@wayne.com', + password: '123456' +} + +type UserMode = 'customer' | 'customer-orders' | 'guest' +interface UseGetTokenOptions { + mode?: UserMode +} + +const getAccessTokenCookieName = (mode: UserMode): string => + `clToken.${salesChannel.slug}.${mode}` + +const getCustomerLoginCookieName = (mode: UserMode): string => + `clToken.customerLogin.${mode}` + +export function useGetToken( + options?: T +): { + accessToken: string + endpoint: string +} { + const mode = options?.mode ?? 'guest' + const [accessToken, setAccessToken] = useState( + Cookie.get(getAccessTokenCookieName(mode)) ?? '' + ) + const clientId = salesChannel.clientId + const slug = salesChannel.slug + const scope = salesChannel.scope + const domain = salesChannel.domain + + const initToken = useMemo(() => { + return async () => { + const user = + mode === 'customer' + ? await retrieveCustomerData({ + clientId, + slug, + scope, + domain, + mode + }) + : mode === 'customer-orders' + ? savedCustomerWithOrders + : undefined + + await generateNewToken({ + clientId, + slug, + scope, + domain, + user, + mode + }).then(({ accessToken, expires }) => { + setAccessToken(accessToken) + Cookie.set(getAccessTokenCookieName(mode), accessToken, { expires }) + }) + } + }, []) + + useEffect(() => { + if ( + accessToken == null || + accessToken === '' || + isTokenExpired({ accessToken, compareTo: new Date() }) + ) { + initToken() + } + }, [accessToken]) + + return { + accessToken, + endpoint: `https://${slug}.${domain}` + } +} + +async function retrieveCustomerData({ + clientId, + slug, + scope, + domain, + mode +}: { + clientId: string + slug: string + scope: string + domain: string + mode: UserMode +}): Promise<{ + username: string + password: string +}> { + const existingUser = Cookie.get(getCustomerLoginCookieName(mode)) + const savedEmail = parseEmailAddress(existingUser?.split(':')[0]) + const savedPassword = parsePassword(existingUser?.split(':')[1]) + + if (savedEmail != null && savedPassword != null) { + return { + username: savedEmail, + password: savedPassword + } + } + + const newEmail = `user-${generateRandomString(5)}-${generateRandomString( + 5 + )}@domain.com` + const newPassword = generateRandomString(10) + + const guestToken = await generateNewToken({ + clientId, + slug, + scope, + domain, + mode + }) + + await createNewCustomer({ + email: newEmail, + password: newPassword, + salesChannelToken: guestToken.accessToken, + slug, + domain + }) + + Cookie.set(getCustomerLoginCookieName(mode), `${newEmail}:${newPassword}`) + + return { + username: newEmail, + password: newPassword + } +} + +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type +async function generateNewToken({ + clientId, + slug, + scope, + domain, + user, + mode +}: { + clientId: string + slug: string + scope: string + domain: string + user?: { username: string; password: string } + mode: UserMode +}) { + return user == null + ? await authenticate('client_credentials', { + clientId, + scope, + domain + }) + : await authenticate('password', { + clientId, + scope, + domain, + ...user + }).then((res) => { + if (res != null && 'error' in res) { + Cookie.remove(getCustomerLoginCookieName('customer')) + Cookie.remove(getCustomerLoginCookieName('customer-orders')) + Cookie.remove(getAccessTokenCookieName(mode)) + } + return res + }) +} + +function isTokenExpired({ + accessToken, + compareTo +}: { + accessToken?: string + compareTo: Date +}): boolean { + if (accessToken == null || accessToken === '') { + return true + } + + try { + const { exp } = jwtDecode<{ exp: number }>(accessToken) + + if (exp == null) { + return true + } + + const nowTime = Math.trunc(compareTo.getTime() / 1000) + return nowTime > exp + } catch { + return true + } +} + +function generateRandomString(length = 10): string { + const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' + let result = '' + for (let i = 0; i < length; i++) { + result += chars.charAt(Math.floor(Math.random() * chars.length)) + } + return result +} + +function parseEmailAddress(email?: string): string | undefined { + const re = /^[a-zA-Z0-9._%+-]+@domain\.com$/ + if (email == null) { + return undefined + } + return re.test(email) ? email : undefined +} + +function parsePassword(password?: string): string | undefined { + return password?.length === 10 ? password : undefined +} + +async function createNewCustomer({ + email, + password, + salesChannelToken, + slug, + domain +}: { + email: string + password: string + salesChannelToken: string + slug: string + domain: string +}): Promise { + const newCustomer = await fetch(`https://${slug}.${domain}/api/customers`, { + method: 'POST', + headers: { + Accept: 'application/vnd.api+json', + 'Content-Type': 'application/vnd.api+json', + Authorization: `Bearer ${salesChannelToken}` + }, + body: JSON.stringify({ + data: { + type: 'customers', + attributes: { + email, + password + } + } + }) + }) + + if (newCustomer.status !== 201) { + throw new Error('Error creating customer') + } +} diff --git a/packages/document/src/stories/getting-started/001.introduction.mdx b/packages/document/src/stories/getting-started/001.introduction.mdx new file mode 100644 index 00000000..51386c8d --- /dev/null +++ b/packages/document/src/stories/getting-started/001.introduction.mdx @@ -0,0 +1,55 @@ +import { Meta, Source } from '@storybook/addon-docs'; + + + +![App Element splashscreen](welcome-hero.png) + +A collection of reusable React components that makes it super fast and simple to build your own custom commerce UI, leveraging Commerce Layer API. + +Under the hood, our React components are built on top of [Commerce Layer JS SDK](https://github.com/commercelayer/commercelayer-sdk) — feel free to use it if you want to develop your custom ones. + + +## Installation + +This library is [open sourced](https://github.com/commercelayer/commercelayer-react-components/) and served as [npm package](https://www.npmjs.com/package/@commercelayer/react-components) and need to be installed as dependency inside your project. + + + + + +## Import components into your project + +You can use ES6 named import with every single component you plan to use (in addition to `CommerceLayer` one), as follow: + + + +But you can also leverage treeshaking by importing only the components you need from its folder using either default or named export, as follow: + + diff --git a/packages/document/src/stories/getting-started/002.authentication.mdx b/packages/document/src/stories/getting-started/002.authentication.mdx new file mode 100644 index 00000000..802a5adf --- /dev/null +++ b/packages/document/src/stories/getting-started/002.authentication.mdx @@ -0,0 +1,61 @@ +import { Meta, Source } from '@storybook/addon-docs'; + + + +# Authentication + +To get started with **Commerce Layer React Components** you need get the credentials that will allow you to perform the API calls they wrap. + +All requests to Commerce Layer API must be authenticated with an [OAuth2](https://oauth.net/2/) bearer token. +Hence, to use these components, you need to get a valid access token. + + +## Getting an access token + +If you are new to Commerce Layer, we suggest you to read the [Overview of Commerce Layer's OAuth 2.0](https://docs.commercelayer.io/core/applications) guide. + + +There are many ways to get an access token and the one you choose depends on your specific needs. + +You can get an access token by using one of the following methods: +- [API/OAuth requests](https://docs.commercelayer.io/core/authentication/client-credentials#getting-an-access-token) (i.e. `curl` or `postman`) +- [Commerce Layer CLI](https://github.com/commercelayer/commercelayer-cli) +- [Commerce Layer JS Auth Library](https://github.com/commercelayer/commercelayer-js-auth) + + +If you want to retrieve the access token from the **command line**, we suggest you to use the [Commerce Layer CLI](https://github.com/commercelayer/commercelayer-cli) +using the `commercelayer application:login` command ([view example](https://github.com/commercelayer/commercelayer-cli/blob/main/docs/applications.md#commercelayer-applicationslogin)), +followed by `commercelayer application:token` + +
+Otherwise, if you need to get it from a **web application**, you can use the Commerce Layer JS Auth library that works both in the browser and in Node.js environments. +
+ + + + +## Configure the `CommerceLayer` component +Once you got it, you can pass it as prop to the `CommerceLayer` component, as follow: + + ( + + {/* ... child components */} + +) +`} +/> + + +This token will be used to authorize the API calls of all its child components. +That's why the presence of (at least) one `CommerceLayer` component is mandatory — it must wrap every other component you need to use. + + +In case you need to fetch data with different tokens (i.e. from different organizations or using apps with different roles and permissions) +— nothing prevents you from putting as many `` components you want in the same page. + diff --git a/packages/document/src/stories/getting-started/003.microfrontends.mdx b/packages/document/src/stories/getting-started/003.microfrontends.mdx new file mode 100644 index 00000000..1bc7aba4 --- /dev/null +++ b/packages/document/src/stories/getting-started/003.microfrontends.mdx @@ -0,0 +1,17 @@ +import { Meta, Source } from '@storybook/addon-docs'; + + + +# Micro frontends + +We use **Commerce Layer React Components** library in our official open sourced hosted applications. + +Feel free to check them out and see how it works in a real world application. + + +|Application|Description|Source| +|:-----------|:-----------|:----| +| Checkout | Checkout application that you can integrate with just a single link or use as an open-source reference for your projects. | [GitHub](https://github.com/commercelayer/mfe-checkout) +| Cart | Shopping cart application that you can integrate with just a single link or use as an open-source reference for your projects. | [GitHub](https://github.com/commercelayer/mfe-cart) +| My account | Customer portal application with personal account information and management that you can integrate with just a single link or use as an open-source reference for your projects. | [GitHub](https://github.com/commercelayer/mfe-my-account) +| Microstore | Production-ready, self-contained store. Each microstore will be accessible at a unique URL and configurable via URL query strings, with no development required. | [GitHub](https://github.com/commercelayer/mfe-microstore) diff --git a/packages/document/src/stories/getting-started/004.styling.mdx b/packages/document/src/stories/getting-started/004.styling.mdx new file mode 100644 index 00000000..6ce9259b --- /dev/null +++ b/packages/document/src/stories/getting-started/004.styling.mdx @@ -0,0 +1,16 @@ +import { Meta, Source } from '@storybook/addon-docs'; + + + +# Styling the components + +This library does not provide any styling. They return simple html/jsx tags filled with fetched data. + +**It is up to you to style the components as you want**. + +Almost all components expose a `className` prop that allows you to add your own css classes. +Some components that renders multiple elements also expose other props to add classes to each specific elements. + + +All the examples in this documentation use [Tailwind CSS](https://tailwindcss.com/) to demostrate how the components can be styled. + diff --git a/packages/document/src/stories/getting-started/005.containers.mdx b/packages/document/src/stories/getting-started/005.containers.mdx new file mode 100644 index 00000000..b3d44fee --- /dev/null +++ b/packages/document/src/stories/getting-started/005.containers.mdx @@ -0,0 +1,36 @@ +import { Meta, Source } from '@storybook/addon-docs'; + + + +# Containers + +Getting used to the components hierarchy is important to understand how to use this library. + +All components need to be wrapped inside the main `` context that handles the authentication with the API layer. +**It needs to be placed at the top of the application**. + +Other components need to be wrapped inside their own containers in order to access to their specific context. +As example the `` component needs to be wrapped inside the `` or it won't work. +At the same time, the `` will not render any HTML since it just holds the data for the `` component. + + +To amultiple requests to the API, the library uses a cache system that stores the data in React contexts that we refer as containers.
+Less re-rendering of those containers means better performance and less requests to the API. +
+ + +## Hierarchy +Each container documentend in the Components section of this guide, highlights a list of **Requirements** and **Children** that are needed to make it work. + +Example: + + +Must be a child of `` component. + + + + +`` +`` +`` + diff --git a/packages/document/src/vite-env.d.ts b/packages/document/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/packages/document/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/document/tsconfig.app.json b/packages/document/tsconfig.app.json new file mode 100644 index 00000000..358ca9ba --- /dev/null +++ b/packages/document/tsconfig.app.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/packages/document/tsconfig.json b/packages/document/tsconfig.json new file mode 100644 index 00000000..1ffef600 --- /dev/null +++ b/packages/document/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/packages/document/tsconfig.node.json b/packages/document/tsconfig.node.json new file mode 100644 index 00000000..db0becc8 --- /dev/null +++ b/packages/document/tsconfig.node.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/packages/document/vite.config.ts b/packages/document/vite.config.ts new file mode 100644 index 00000000..8b0f57b9 --- /dev/null +++ b/packages/document/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +}) diff --git a/packages/react-components/vitest.config.mts b/packages/react-components/_vitest.config.mts similarity index 100% rename from packages/react-components/vitest.config.mts rename to packages/react-components/_vitest.config.mts diff --git a/packages/react-components/package.json b/packages/react-components/package.json index df9d9d43..f982e2c6 100644 --- a/packages/react-components/package.json +++ b/packages/react-components/package.json @@ -5,11 +5,7 @@ "main": "lib/cjs/index.js", "module": "lib/esm/index.js", "types": "lib/esm/index.d.ts", - "files": [ - "lib", - "package.json", - "README.md" - ], + "files": ["lib", "package.json", "README.md"], "exports": { ".": { "require": "./lib/cjs/index.js", @@ -98,66 +94,28 @@ }, "typesVersions": { "*": { - "addresses/*": [ - "lib/esm/components/addresses/*.d.ts" - ], - "auth/*": [ - "lib/esm/components/auth/*.d.ts" - ], - "customers/*": [ - "lib/esm/components/customers/*.d.ts" - ], - "errors/*": [ - "lib/esm/components/errors/*.d.ts" - ], - "gift_cards/*": [ - "lib/esm/components/gift_cards/*.d.ts" - ], + "addresses/*": ["lib/esm/components/addresses/*.d.ts"], + "auth/*": ["lib/esm/components/auth/*.d.ts"], + "customers/*": ["lib/esm/components/customers/*.d.ts"], + "errors/*": ["lib/esm/components/errors/*.d.ts"], + "gift_cards/*": ["lib/esm/components/gift_cards/*.d.ts"], "in_stock_subscriptions/*": [ "lib/esm/components/in_stock_subscriptions/*.d.ts" ], - "hooks/*": [ - "lib/esm/hooks/*.d.ts" - ], - "line_items/*": [ - "lib/esm/components/line_items/*.d.ts" - ], - "orders/*": [ - "lib/esm/components/orders/*.d.ts" - ], - "parcels/*": [ - "lib/esm/components/parcels/*.d.ts" - ], - "payment_methods/*": [ - "lib/esm/components/payment_methods/*.d.ts" - ], - "payment_source/*": [ - "lib/esm/components/payment_source/*.d.ts" - ], - "prices/*": [ - "lib/esm/components/prices/*.d.ts" - ], - "shipments/*": [ - "lib/esm/components/shipments/*.d.ts" - ], - "shipping_methods/*": [ - "lib/esm/components/shipping_methods/*.d.ts" - ], - "skus/*": [ - "lib/esm/components/skus/*.d.ts" - ], - "stock_transfers/*": [ - "lib/esm/components/stock_transfers/*.d.ts" - ], - "context/*": [ - "lib/esm/context/*.d.ts" - ], - "utils/*": [ - "lib/esm/utils/*.d.ts" - ], - "component_utils/*": [ - "lib/esm/components/utils/*.d.ts" - ] + "hooks/*": ["lib/esm/hooks/*.d.ts"], + "line_items/*": ["lib/esm/components/line_items/*.d.ts"], + "orders/*": ["lib/esm/components/orders/*.d.ts"], + "parcels/*": ["lib/esm/components/parcels/*.d.ts"], + "payment_methods/*": ["lib/esm/components/payment_methods/*.d.ts"], + "payment_source/*": ["lib/esm/components/payment_source/*.d.ts"], + "prices/*": ["lib/esm/components/prices/*.d.ts"], + "shipments/*": ["lib/esm/components/shipments/*.d.ts"], + "shipping_methods/*": ["lib/esm/components/shipping_methods/*.d.ts"], + "skus/*": ["lib/esm/components/skus/*.d.ts"], + "stock_transfers/*": ["lib/esm/components/stock_transfers/*.d.ts"], + "context/*": ["lib/esm/context/*.d.ts"], + "utils/*": ["lib/esm/utils/*.d.ts"], + "component_utils/*": ["lib/esm/components/utils/*.d.ts"] } }, "publishConfig": { @@ -199,47 +157,47 @@ }, "homepage": "https://github.com/commercelayer/commercelayer-react-components#readme", "dependencies": { - "@adyen/adyen-web": "^6.9.0", + "@adyen/adyen-web": "^6.11.0", "@commercelayer/organization-config": "^2.2.0", - "@commercelayer/sdk": "^6.34.0", - "@stripe/react-stripe-js": "^3.3.0", - "@stripe/stripe-js": "^5.9.2", + "@commercelayer/sdk": "^6.36.0", + "@stripe/react-stripe-js": "^3.5.1", + "@stripe/stripe-js": "^6.1.0", "@tanstack/react-table": "^8.21.2", - "@types/iframe-resizer": "^3.5.13", - "braintree-web": "^3.115.2", + "@types/iframe-resizer": "^4.0.0", + "braintree-web": "^3.117.1", "frames-react": "^1.2.2", "iframe-resizer": "^4.3.6", "jwt-decode": "^4.0.0", "lodash": "^4.17.21", - "rapid-form": "2.1.0" + "rapid-form": "3.1.0" }, "devDependencies": { "@commercelayer/js-auth": "^6.7.1", - "@faker-js/faker": "^9.5.1", - "@playwright/test": "^1.50.1", + "@faker-js/faker": "^9.6.0", + "@playwright/test": "^1.51.1", "@testing-library/dom": "^10.4.0", "@testing-library/react": "^16.2.0", - "@types/braintree-web": "^3.96.16", + "@types/braintree-web": "^3.96.17", "@types/lodash": "^4.17.16", - "@types/node": "^22.13.9", + "@types/node": "^22.13.14", "@types/prop-types": "^15.7.14", - "@types/react": "^18.3.1", - "@types/react-test-renderer": "^18.3.1", + "@types/react": "^19.0.12", + "@types/react-test-renderer": "^19.0.0", "@types/react-window": "^1.8.8", "@vitejs/plugin-react": "^4.3.4", - "@vitest/coverage-v8": "^3.0.7", + "@vitest/coverage-v8": "^3.0.9", "jsdom": "^26.0.0", "minimize-js": "^1.4.0", "msw": "^2.7.3", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-test-renderer": "^18.3.1", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-test-renderer": "^19.0.0", "tsc-alias": "^1.8.11", "tslib": "^2.8.1", "typescript": "^5.8.2", - "vite": "^6.2.0", + "vite": "^6.2.3", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^3.0.7" + "vitest": "^3.0.9" }, "peerDependencies": { "react": ">=18.0.0" diff --git a/packages/react-components/tsconfig.json b/packages/react-components/tsconfig.json index 8ddd0972..1b8e176f 100644 --- a/packages/react-components/tsconfig.json +++ b/packages/react-components/tsconfig.json @@ -32,49 +32,27 @@ // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ /* Additional Checks */ - "noUnusedLocals": true, /* Report errors on unused locals. */ - "noUnusedParameters": true, /* Report errors on unused parameters. */ - "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ - "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ - "types": [ - "vitest/globals" - ], + "noUnusedLocals": true /* Report errors on unused locals. */, + "noUnusedParameters": true /* Report errors on unused parameters. */, + "noImplicitReturns": true /* Report error when not all code paths in function return a value. */, + "noFallthroughCasesInSwitch": true /* Report errors for fallthrough cases in switch statement. */, + "noUncheckedIndexedAccess": true /* Include 'undefined' in index signature results */, + "noPropertyAccessFromIndexSignature": true /* Require undeclared properties from index signatures to use element accesses. */, + "types": ["vitest/globals"], /* Module Resolution Options */ "moduleResolution": "Node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, "baseUrl": "." /* Base directory to resolve non-absolute module names. */, "paths": { - "@commercelayer/react-components": [ - "src/index" - ], - "#components/*": [ - "src/components/*" - ], - "#components-utils/*": [ - "src/components/utils/*" - ], - "#reducers/*": [ - "src/reducers/*" - ], - "#context/*": [ - "src/context/*" - ], - "#typings/*": [ - "src/typings/*" - ], - "#typings": [ - "src/typings/index" - ], - "#utils/*": [ - "src/utils/*" - ], - "#config/*": [ - "src/config/*" - ], - "#hooks/*": [ - "src/hooks/*" - ] + "@commercelayer/react-components": ["src/index"], + "#components/*": ["src/components/*"], + "#components-utils/*": ["src/components/utils/*"], + "#reducers/*": ["src/reducers/*"], + "#context/*": ["src/context/*"], + "#typings/*": ["src/typings/*"], + "#typings": ["src/typings/index"], + "#utils/*": ["src/utils/*"], + "#config/*": ["src/config/*"], + "#hooks/*": ["src/hooks/*"] } /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */, // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ // "typeRoots": [], /* List of folders to include type definitions from. */ @@ -95,12 +73,6 @@ "skipLibCheck": true /* Skip type checking of declaration files. */, "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ }, - "include": [ - "**/*.ts", - "**/*.tsx", - "vitest.config.mts" - ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "include": ["**/*.ts", "**/*.tsx", "_vitest.config.mts"], + "exclude": ["node_modules"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0834aee0..807abf60 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,11 +32,42 @@ importers: specifier: ^9.1.7 version: 9.1.7 lerna: - specifier: ^8.2.1 - version: 8.2.1(encoding@0.1.13) + specifier: ^8.2.2 + version: 8.2.2(encoding@0.1.13) typescript: - specifier: ^5.8.2 - version: 5.8.2 + specifier: ^5.8.3 + version: 5.8.3 + vitest: + specifier: ^3.1.1 + version: 3.1.1(@types/debug@4.1.12)(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.4(@types/node@22.13.14)(typescript@5.8.3))(terser@5.39.0)(yaml@2.7.0) + + packages/core: + dependencies: + '@commercelayer/js-auth': + specifier: ^6.7.2 + version: 6.7.2 + '@commercelayer/sdk': + specifier: 6.39.0 + version: 6.39.0 + devDependencies: + '@arethetypeswrong/cli': + specifier: ^0.17.4 + version: 0.17.4 + '@vitest/coverage-v8': + specifier: ^3.1.1 + version: 3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.4(@types/node@22.13.14)(typescript@5.8.3))(terser@5.39.0)(yaml@2.7.0)) + tsup: + specifier: ^8.4.0 + version: 8.4.0(postcss@8.5.3)(typescript@5.8.3)(yaml@2.7.0) + typescript: + specifier: ^5.8.3 + version: 5.8.3 + vite-tsconfig-paths: + specifier: ^5.1.4 + version: 5.1.4(typescript@5.8.3)(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) + vitest: + specifier: ^3.1.1 + version: 3.1.1(@types/debug@4.1.12)(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.4(@types/node@22.13.14)(typescript@5.8.3))(terser@5.39.0)(yaml@2.7.0) packages/docs: devDependencies: @@ -63,10 +94,10 @@ importers: version: 7.6.20 '@storybook/addon-docs': specifier: ^7.6.17 - version: 7.6.20(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 7.6.20(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/addon-essentials': specifier: ^7.6.17 - version: 7.6.20(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 7.6.20(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/addon-interactions': specifier: ^7.6.17 version: 7.6.20 @@ -90,7 +121,7 @@ importers: version: 7.6.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/blocks': specifier: ^7.6.17 - version: 7.6.20(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 7.6.20(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/client-api': specifier: ^7.6.17 version: 7.6.17 @@ -108,7 +139,7 @@ importers: version: 7.6.20(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.2) '@storybook/react-vite': specifier: ^7.6.17 - version: 7.6.20(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.35.0)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0)) + version: 7.6.20(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.35.0)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) '@storybook/testing-library': specifier: ^0.2.2 version: 0.2.2 @@ -123,7 +154,7 @@ importers: version: 18.3.18 '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0)) + version: 4.3.4(vite@6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) babel-loader: specifier: ^9.2.1 version: 9.2.1(@babel/core@7.26.10)(webpack@5.98.0(esbuild@0.18.20)) @@ -135,7 +166,7 @@ importers: version: 4.0.0 msw: specifier: ^2.7.0 - version: 2.7.3(@types/node@22.13.10)(typescript@5.8.2) + version: 2.7.3(@types/node@22.13.14)(typescript@5.8.2) prop-types: specifier: ^15.8.1 version: 15.8.1 @@ -156,40 +187,134 @@ importers: version: 5.8.2 vite: specifier: ^6.1.0 - version: 6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0) + version: 6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) + vite-tsconfig-paths: + specifier: ^5.1.4 + version: 5.1.4(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) + + packages/document: + dependencies: + react: + specifier: ^19.1.0 + version: 19.1.0 + react-dom: + specifier: ^19.1.0 + version: 19.1.0(react@19.1.0) + devDependencies: + '@chromatic-com/storybook': + specifier: ^3.2.6 + version: 3.2.6(react@19.1.0)(storybook@8.6.12(prettier@2.8.8)) + '@eslint/js': + specifier: ^9.24.0 + version: 9.24.0 + '@storybook/addon-docs': + specifier: ^8.6.12 + version: 8.6.12(@types/react@19.1.2)(storybook@8.6.12(prettier@2.8.8)) + '@storybook/addon-essentials': + specifier: ^8.6.12 + version: 8.6.12(@types/react@19.1.2)(storybook@8.6.12(prettier@2.8.8)) + '@storybook/addon-interactions': + specifier: ^8.6.12 + version: 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/addon-links': + specifier: ^8.6.12 + version: 8.6.12(react@19.1.0)(storybook@8.6.12(prettier@2.8.8)) + '@storybook/addon-mdx-gfm': + specifier: ^8.6.12 + version: 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/addon-onboarding': + specifier: ^8.6.12 + version: 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/blocks': + specifier: ^8.6.12 + version: 8.6.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@2.8.8)) + '@storybook/react': + specifier: ^8.6.12 + version: 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@2.8.8)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@2.8.8))(typescript@5.8.3) + '@storybook/react-vite': + specifier: ^8.6.12 + version: 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@2.8.8)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.35.0)(storybook@8.6.12(prettier@2.8.8))(typescript@5.8.3)(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) + '@storybook/test': + specifier: ^8.6.12 + version: 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/theming': + specifier: ^8.6.12 + version: 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@types/react': + specifier: ^19.1.2 + version: 19.1.2 + '@types/react-dom': + specifier: ^19.1.2 + version: 19.1.2(@types/react@19.1.2) + '@vitejs/plugin-react': + specifier: ^4.4.0 + version: 4.4.0(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) + eslint: + specifier: ^9.24.0 + version: 9.24.0 + eslint-plugin-react-hooks: + specifier: ^5.2.0 + version: 5.2.0(eslint@9.24.0) + eslint-plugin-react-refresh: + specifier: ^0.4.19 + version: 0.4.19(eslint@9.24.0) + eslint-plugin-storybook: + specifier: ^0.12.0 + version: 0.12.0(eslint@9.24.0)(typescript@5.8.3) + globals: + specifier: ^16.0.0 + version: 16.0.0 + msw: + specifier: ^2.7.4 + version: 2.7.4(@types/node@22.13.14)(typescript@5.8.3) + remark-gfm: + specifier: ^4.0.1 + version: 4.0.1 + storybook: + specifier: ^8.6.12 + version: 8.6.12(prettier@2.8.8) + typescript: + specifier: ~5.8.3 + version: 5.8.3 + typescript-eslint: + specifier: ^8.30.1 + version: 8.30.1(eslint@9.24.0)(typescript@5.8.3) + vite: + specifier: ^6.3.1 + version: 6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0)) + version: 5.1.4(typescript@5.8.3)(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) packages/react-components: dependencies: '@adyen/adyen-web': - specifier: ^6.9.0 - version: 6.9.0 + specifier: ^6.11.0 + version: 6.11.0 '@commercelayer/organization-config': specifier: ^2.2.0 version: 2.2.0 '@commercelayer/sdk': - specifier: ^6.34.0 - version: 6.35.0 + specifier: ^6.36.0 + version: 6.36.0 '@stripe/react-stripe-js': - specifier: ^3.3.0 - version: 3.4.0(@stripe/stripe-js@5.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^3.5.1 + version: 3.5.1(@stripe/stripe-js@6.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@stripe/stripe-js': - specifier: ^5.9.2 - version: 5.10.0 + specifier: ^6.1.0 + version: 6.1.0 '@tanstack/react-table': specifier: ^8.21.2 - version: 8.21.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 8.21.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@types/iframe-resizer': - specifier: ^3.5.13 - version: 3.5.13 + specifier: ^4.0.0 + version: 4.0.0 braintree-web: - specifier: ^3.115.2 - version: 3.116.3 + specifier: ^3.117.1 + version: 3.117.1 frames-react: specifier: ^1.2.2 - version: 1.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.35.0)(typescript@5.8.2) + version: 1.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.35.0)(typescript@5.8.2) iframe-resizer: specifier: ^4.3.6 version: 4.4.5 @@ -200,51 +325,51 @@ importers: specifier: ^4.17.21 version: 4.17.21 rapid-form: - specifier: 2.1.0 - version: 2.1.0 + specifier: 3.1.0 + version: 3.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@commercelayer/js-auth': specifier: ^6.7.1 version: 6.7.1 '@faker-js/faker': - specifier: ^9.5.1 + specifier: ^9.6.0 version: 9.6.0 '@playwright/test': - specifier: ^1.50.1 - version: 1.51.0 + specifier: ^1.51.1 + version: 1.51.1 '@testing-library/dom': specifier: ^10.4.0 version: 10.4.0 '@testing-library/react': specifier: ^16.2.0 - version: 16.2.0(@testing-library/dom@10.4.0)(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.2(@types/react@19.0.12))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@types/braintree-web': - specifier: ^3.96.16 - version: 3.96.16 + specifier: ^3.96.17 + version: 3.96.17 '@types/lodash': specifier: ^4.17.16 version: 4.17.16 '@types/node': - specifier: ^22.13.9 - version: 22.13.10 + specifier: ^22.13.14 + version: 22.13.14 '@types/prop-types': specifier: ^15.7.14 version: 15.7.14 '@types/react': - specifier: ^18.3.1 - version: 18.3.18 + specifier: ^19.0.12 + version: 19.0.12 '@types/react-test-renderer': - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 '@types/react-window': specifier: ^1.8.8 version: 1.8.8 '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0)) + version: 4.3.4(vite@6.2.3(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) '@vitest/coverage-v8': - specifier: ^3.0.7 - version: 3.0.8(vitest@3.0.8(@types/debug@4.1.12)(@types/node@22.13.10)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2))(terser@5.39.0)(yaml@2.7.0)) + specifier: ^3.0.9 + version: 3.0.9(vitest@3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.39.0)(yaml@2.7.0)) jsdom: specifier: ^26.0.0 version: 26.0.0 @@ -253,16 +378,16 @@ importers: version: 1.4.0 msw: specifier: ^2.7.3 - version: 2.7.3(@types/node@22.13.10)(typescript@5.8.2) + version: 2.7.3(@types/node@22.13.14)(typescript@5.8.2) react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) react-test-renderer: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) tsc-alias: specifier: ^1.8.11 version: 1.8.11 @@ -273,24 +398,39 @@ importers: specifier: ^5.8.2 version: 5.8.2 vite: - specifier: ^6.2.0 - version: 6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0) + specifier: ^6.2.3 + version: 6.2.3(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0)) + version: 5.1.4(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) vitest: - specifier: ^3.0.7 - version: 3.0.8(@types/debug@4.1.12)(@types/node@22.13.10)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2))(terser@5.39.0)(yaml@2.7.0) + specifier: ^3.0.9 + version: 3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.39.0)(yaml@2.7.0) packages: - '@adyen/adyen-web@6.9.0': - resolution: {integrity: sha512-R4TbMuDT7rzSwpUEmgD/idW/a7x3gMv1LIdvHdwiNOEhJeLyCZTCSZBbP0r9SecpRFN1BM1L57FJc4WZfhRS+w==} + '@adobe/css-tools@4.4.1': + resolution: {integrity: sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==} + + '@adyen/adyen-web@6.11.0': + resolution: {integrity: sha512-OSpTq+VN84hNPOV5RpHM8T4TYMgL8sMr0UDa+2yDeTEBTIlNdigCKgDWTXzOHIW/BuPWna4e9n1fuGYnCJgXlQ==} '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@andrewbranch/untar.js@1.0.3': + resolution: {integrity: sha512-Jh15/qVmrLGhkKJBdXlK1+9tY4lZruYjsgkDFj08ZmDiWVBLJcqkok7Z0/R0In+i1rScBpJlSvrTS2Lm41Pbnw==} + + '@arethetypeswrong/cli@0.17.4': + resolution: {integrity: sha512-AeiKxtf67XD/NdOqXgBOE5TZWH3EOCt+0GkbUpekOzngc+Q/cRZ5azjWyMxISxxfp0EItgm5NoSld9p7BAA5xQ==} + engines: {node: '>=18'} + hasBin: true + + '@arethetypeswrong/core@0.17.4': + resolution: {integrity: sha512-Izvir8iIoU+X4SKtDAa5kpb+9cpifclzsbA8x/AZY0k0gIfXYQ1fa1B6Epfe6vNA2YfDX8VtrZFgvnXB6aPEoQ==} + engines: {node: '>=18'} + '@asamuzakjp/css-color@3.1.1': resolution: {integrity: sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==} @@ -903,6 +1043,9 @@ packages: cpu: [x64] os: [win32] + '@braidai/lang@1.1.0': + resolution: {integrity: sha512-xyJYkiyNQtTyCLeHxZmOs7rnB94D+N1IjKNArQIh8+8lTBOY7TFgwEV+Ow5a1uaBi5j2w9fLbWcJFTWLDItl5g==} + '@braintree/asset-loader@2.0.0': resolution: {integrity: sha512-7Zs3/g3lPTfkdtWr7cKh3tk1pDruXR++TXwGKkx7BPuTjjLNFul2JSfI+ScHzNU4u/gZNPNQagsSTlYxIhBgMA==} @@ -942,6 +1085,12 @@ packages: '@bundled-es-modules/tough-cookie@0.1.6': resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} + '@chromatic-com/storybook@3.2.6': + resolution: {integrity: sha512-FDmn5Ry2DzQdik+eq2sp/kJMMT36Ewe7ONXUXM2Izd97c7r6R/QyGli8eyh/F0iyqVvbLveNYFyF0dBOJNwLqw==} + engines: {node: '>=16.0.0', yarn: '>=1.22.18'} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -950,6 +1099,10 @@ packages: resolution: {integrity: sha512-GOfOGeLKhdjKa1qTq2KTF14rEKYYX7yvUYH1GYc4YuX3d5DNLqwQJK4eJN054GnAYl4YeyimVSqmLhiwC5OfBA==} engines: {node: '>=18.0.0'} + '@commercelayer/js-auth@6.7.2': + resolution: {integrity: sha512-kk4VqN2iEOreXFq76YqTP83KhBs09Z5Ez9nZNlikXWf5DXzkrOfShqqEwq8ezHjSOlqs4xVyxgQzsEdPP35CeQ==} + engines: {node: '>=18.0.0'} + '@commercelayer/organization-config@2.2.0': resolution: {integrity: sha512-v7vfLru0WiqocrPWfldmqhbG6VKYQcdu480SUCU4wTnDcXLVnlKfgaadkNnv+tVVZXh0qke8/uwrkNoi3VY/Bw==} engines: {node: '>=18', pnpm: '>=7'} @@ -958,6 +1111,14 @@ packages: resolution: {integrity: sha512-0Afbon6//2KHCTb6bILk2L9Idj9dP8pw06V1CFtaz1wtAsX4iifubGpOPxHH6CuGi4DFHzgASJRz6+ZZbqb3kA==} engines: {node: '>=20'} + '@commercelayer/sdk@6.36.0': + resolution: {integrity: sha512-qM/8/RwyGA41GoSyMCRO5ZpxUElzc47rHVWX+oeZkmuV0Tad01Q7ZsYY5ZrAEswbICj6jRpFg82B9Wpv3gwsZg==} + engines: {node: '>=20'} + + '@commercelayer/sdk@6.39.0': + resolution: {integrity: sha512-HzfXTAXvAe8UOd8E0SOokxjS9K/OVZJ+xX12nLxPS5OEPyAz5AnIzSfn9AVYiuii8QWAkVsjFfTq+4JouZzdEA==} + engines: {node: '>=20'} + '@csstools/color-helpers@5.0.2': resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} engines: {node: '>=18'} @@ -1286,6 +1447,44 @@ packages: cpu: [x64] os: [win32] + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.0': + resolution: {integrity: sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.12.0': + resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.24.0': + resolution: {integrity: sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.7': + resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@faker-js/faker@9.6.0': resolution: {integrity: sha512-3vm4by+B5lvsFPSyep3ELWmZfE3kicDtmemVpuwl1yH7tqtnHdsA6hG8fbXedMVdkzgtvzWoRgjSB4Q+FHnZiw==} engines: {node: '>=18.0.0', npm: '>=9.0.0'} @@ -1308,6 +1507,26 @@ packages: '@floating-ui/utils@0.2.9': resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + engines: {node: '>=18.18'} + '@hutson/parse-repository-url@3.0.2': resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} engines: {node: '>=6.9.0'} @@ -1383,6 +1602,15 @@ packages: typescript: optional: true + '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0': + resolution: {integrity: sha512-qYDdL7fPwLRI+bJNurVcis+tNgJmvWjH4YTBGXTA8xMuxFrnAz6E5o35iyzyKbq5J5Lr8mJGfrR5GXl+WGwhgQ==} + peerDependencies: + typescript: '>= 4.3.x' + vite: '>=4.5.2' + peerDependenciesMeta: + typescript: + optional: true + '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} @@ -1407,10 +1635,13 @@ packages: '@juggle/resize-observer@3.4.0': resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} - '@lerna/create@8.2.1': - resolution: {integrity: sha512-Cz2u/fwc03D1EE6VFZCLMmI8FIUtGmxHQ3ECeNblsxv9i0YSKWe4Xm18sjO1xltG/K5ByiH8/HMeY9dlyAv22A==} + '@lerna/create@8.2.2': + resolution: {integrity: sha512-1yn1MvWn2Yz0SFgTTQnef2m1YedF7KwqLLVIOrGkgQrkVHzsveAIk1A1RcRa2yyUh+siKI1YcJ7lUZIEt+qQ3Q==} engines: {node: '>=18.0.0'} + '@loaderkit/resolve@1.0.4': + resolution: {integrity: sha512-rJzYKVcV4dxJv+vW6jlvagF8zvGxHJ2+HTr1e2qOejfmGhAApgJHl8Aog4mMszxceTRiKTTbnpgmTO1bEZHV/A==} + '@mdx-js/react@2.3.0': resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==} peerDependencies: @@ -1422,8 +1653,8 @@ packages: '@types/react': '>=16' react: '>=16' - '@mswjs/interceptors@0.37.6': - resolution: {integrity: sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w==} + '@mswjs/interceptors@0.37.3': + resolution: {integrity: sha512-USvgCL/uOGFtVa6SVyRrC8kIAedzRohxIXN5LISlg5C5vLZCn7dgMFVSNhSF9cuBEFrm/O2spDWEZeMnw4ZXYg==} engines: {node: '>=18'} '@napi-rs/wasm-runtime@0.2.4': @@ -1638,8 +1869,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.51.0': - resolution: {integrity: sha512-dJ0dMbZeHhI+wb77+ljx/FeC8VBP6j/rj9OAojO08JI80wTZy6vRk9KvHKiDCUh4iMpEiseMgqRBIeW+eKX6RA==} + '@playwright/test@1.51.1': + resolution: {integrity: sha512-nM+kEaTSAoVlXmMPH10017vn3FSiFqr/bh4fKg9vmAdMfd9SDqRZNvPSiAHADc/itWak+qPvMPZQOPwCBW7k7Q==} engines: {node: '>=18'} hasBin: true @@ -1678,8 +1909,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-collection@1.1.2': - resolution: {integrity: sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw==} + '@radix-ui/react-collection@1.1.1': + resolution: {integrity: sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1837,8 +2068,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-primitive@2.0.2': - resolution: {integrity: sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==} + '@radix-ui/react-primitive@2.0.1': + resolution: {integrity: sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1850,8 +2081,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-roving-focus@1.1.2': - resolution: {integrity: sha512-zgMQWkNO169GtGqRvYrzb0Zf8NhMHS2DuEB/TiEmVnpr5OqPU3i8lfbxaAmC2J/KYuIQxyoQQ6DxepyXp61/xw==} + '@radix-ui/react-roving-focus@1.1.1': + resolution: {integrity: sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1876,8 +2107,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-separator@1.1.2': - resolution: {integrity: sha512-oZfHcaAp2Y6KFBX6I5P1u7CQoy4lheCGiYj+pGFrHy8E/VNRb5E39TkTr3JrV520csPBTZjkuKFdEsjS5EUNKQ==} + '@radix-ui/react-separator@1.1.1': + resolution: {integrity: sha512-RRiNRSrD8iUiXriq/Y5n4/3iE8HzqgLHsusUSg5jVpU2+3tqcUFPJXHDymwEypunc2sWxDUS3UC+rkZRlHedsw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1898,8 +2129,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-slot@1.1.2': - resolution: {integrity: sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==} + '@radix-ui/react-slot@1.1.1': + resolution: {integrity: sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1907,8 +2138,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-toggle-group@1.1.2': - resolution: {integrity: sha512-JBm6s6aVG/nwuY5eadhU2zDi/IwYS0sDM5ZWb4nymv/hn3hZdkw+gENn0LP4iY1yCd7+bgJaCwueMYJIU3vk4A==} + '@radix-ui/react-toggle-group@1.1.1': + resolution: {integrity: sha512-OgDLZEA30Ylyz8YSXvnGqIHtERqnUt1KUYTKdw/y8u7Ci6zGiJfXc02jahmcSNK3YcErqioj/9flWC9S1ihfwg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1920,8 +2151,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-toggle@1.1.2': - resolution: {integrity: sha512-lntKchNWx3aCHuWKiDY+8WudiegQvBpDRAYL8dKLRvKEH8VOpl0XX6SSU/bUBqIRJbcTy4+MW06Wv8vgp10rzQ==} + '@radix-ui/react-toggle@1.1.1': + resolution: {integrity: sha512-i77tcgObYr743IonC1hrsnnPmszDRn8p+EGUsUt+5a/JFn28fxaM88Py6V2mc8J5kELMWishI0rLnuGLFD/nnQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1933,8 +2164,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-toolbar@1.1.2': - resolution: {integrity: sha512-wT20eQ7ScFk+kBMDmHp+lMk18cgxhu35b2Bn5deUcPxiVwfn5vuZgi7NGcHu8ocdkinahmp4FaSZysKDyRVPWQ==} + '@radix-ui/react-toolbar@1.1.1': + resolution: {integrity: sha512-r7T80WOCHc2n3KRzFCbHWGVzkfVTCzDofGU4gqa5ZuIzgnVaLogGsdyifFJXWQDp0lAr5hrf+X9uqQdE0pa6Ww==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2187,33 +2418,72 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + '@storybook/addon-actions@7.6.20': resolution: {integrity: sha512-c/GkEQ2U9BC/Ew/IMdh+zvsh4N6y6n7Zsn2GIhJgcu9YEAa5aF2a9/pNgEGBMOABH959XE8DAOMERw/5qiLR8g==} + '@storybook/addon-actions@8.6.12': + resolution: {integrity: sha512-B5kfiRvi35oJ0NIo53CGH66H471A3XTzrfaa6SxXEJsgxxSeKScG5YeXcCvLiZfvANRQ7QDsmzPUgg0o3hdMXw==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/addon-backgrounds@7.6.20': resolution: {integrity: sha512-a7ukoaXT42vpKsMxkseIeO3GqL0Zst2IxpCTq5dSlXiADrcemSF/8/oNpNW9C4L6F1Zdt+WDtECXslEm017FvQ==} + '@storybook/addon-backgrounds@8.6.12': + resolution: {integrity: sha512-lmIAma9BiiCTbJ8YfdZkXjpnAIrOUcgboLkt1f6XJ78vNEMnLNzD9gnh7Tssz1qrqvm34v9daDjIb+ggdiKp3Q==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/addon-controls@7.6.20': resolution: {integrity: sha512-06ZT5Ce1sZW52B0s6XuokwjkKO9GqHlTUHvuflvd8wifxKlCmRvNUxjBvwh+ccGJ49ZS73LbMSLFgtmBEkCxbg==} + '@storybook/addon-controls@8.6.12': + resolution: {integrity: sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/addon-docs@7.6.20': resolution: {integrity: sha512-XNfYRhbxH5JP7B9Lh4W06PtMefNXkfpV39Gaoih5HuqngV3eoSL4RikZYOMkvxRGQ738xc6axySU3+JKcP1OZg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/addon-docs@8.6.12': + resolution: {integrity: sha512-kEezQjAf/p3SpDzLABgg4fbT48B6dkT2LiZCKTRmCrJVtuReaAr4R9MMM6Jsph6XjbIj/SvOWf3CMeOPXOs9sg==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/addon-essentials@7.6.20': resolution: {integrity: sha512-hCupSOiJDeOxJKZSgH0x5Mb2Xqii6mps21g5hpxac1XjhQtmGflShxi/xOHhK3sNqrbgTSbScfpUP3hUlZO/2Q==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/addon-essentials@8.6.12': + resolution: {integrity: sha512-Y/7e8KFlttaNfv7q2zoHMPdX6hPXHdsuQMAjYl5NG9HOAJREu4XBy4KZpbcozRe4ApZ78rYsN/MO1EuA+bNMIA==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/addon-highlight@7.6.20': resolution: {integrity: sha512-7/x7xFdFyqCki5Dm3uBePldUs9l98/WxJ7rTHQuYqlX7kASwyN5iXPzuhmMRUhlMm/6G6xXtLabIpzwf1sFurA==} + '@storybook/addon-highlight@8.6.12': + resolution: {integrity: sha512-9FITVxdoycZ+eXuAZL9ElWyML/0fPPn9UgnnAkrU7zkMi+Segq/Tx7y+WWanC5zfWZrXAuG6WTOYEXeWQdm//w==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/addon-interactions@7.6.20': resolution: {integrity: sha512-uH+OIxLtvfnnmdN3Uf8MwzfEFYtaqSA6Hir6QNPc643se0RymM8mULN0rzRyvspwd6OagWdtOxsws3aHk02KTA==} + '@storybook/addon-interactions@8.6.12': + resolution: {integrity: sha512-cTAJlTq6uVZBEbtwdXkXoPQ4jHOAGKQnYSezBT4pfNkdjn/FnEeaQhMBDzf14h2wr5OgBnJa6Lmd8LD9ficz4A==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/addon-links@7.6.20': resolution: {integrity: sha512-iomSnBD90CA4MinesYiJkFX2kb3P1Psd/a1Y0ghlFEsHD4uMId9iT6sx2s16DYMja0SlPkrbWYnGukqaCjZpRw==} peerDependencies: @@ -2222,21 +2492,60 @@ packages: react: optional: true + '@storybook/addon-links@8.6.12': + resolution: {integrity: sha512-AfKujFHoAxhxq4yu+6NwylltS9lf5MPs1eLLXvOlwo3l7Y/c68OdxJ7j68vLQhs9H173WVYjKyjbjFxJWf/YYg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.12 + peerDependenciesMeta: + react: + optional: true + '@storybook/addon-mdx-gfm@7.6.20': resolution: {integrity: sha512-htfiooRdIYIjdKpxFjJAT+b90iatraI7yfmgF8VmpGTPqjyjGDZccUFCaE7op9S2smLZi4zYYGd+fqA5NtykkQ==} + '@storybook/addon-mdx-gfm@8.6.12': + resolution: {integrity: sha512-OKI5+O8xyK8axGPFwkl38NGJ6Rjf7kyhiBPxw5NuHOjOnU/FL4Pw3QmY47TT96TVws27vP3gF5+FX8lj3Dd3rQ==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/addon-measure@7.6.20': resolution: {integrity: sha512-i2Iq08bGfI7gZbG6Lb8uF/L287tnaGUR+2KFEmdBjH6+kgjWLiwfpanoPQpy4drm23ar0gUjX+L3Ri03VI5/Xg==} + '@storybook/addon-measure@8.6.12': + resolution: {integrity: sha512-tACmwqqOvutaQSduw8SMb62wICaT1rWaHtMN3vtWXuxgDPSdJQxLP+wdVyRYMAgpxhLyIO7YRf++Hfha9RHgFg==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/addon-onboarding@8.6.12': + resolution: {integrity: sha512-/cgxaLy6tr6xO0+QO+qV5rPZS5/c15Daywvg/F03lifLGkMuyn/JDuhu0J5i1LbFsL1RYdf4sjrTOmLXbOT6+Q==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/addon-outline@7.6.20': resolution: {integrity: sha512-TdsIQZf/TcDsGoZ1XpO+9nBc4OKqcMIzY4SrI8Wj9dzyFLQ37s08gnZr9POci8AEv62NTUOVavsxcafllkzqDQ==} + '@storybook/addon-outline@8.6.12': + resolution: {integrity: sha512-1ylwm+n1s40S91No0v9T4tCjZORu3GbnjINlyjYTDLLhQHyBQd3nWR1Y1eewU4xH4cW9SnSLcMQFS/82xHqU6A==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/addon-toolbars@7.6.20': resolution: {integrity: sha512-5Btg4i8ffWTDHsU72cqxC8nIv9N3E3ObJAc6k0llrmPBG/ybh3jxmRfs8fNm44LlEXaZ5qrK/petsXX3UbpIFg==} + '@storybook/addon-toolbars@8.6.12': + resolution: {integrity: sha512-HEcSzo1DyFtIu5/ikVOmh5h85C1IvK9iFKSzBR6ice33zBOaehVJK+Z5f487MOXxPsZ63uvWUytwPyViGInj+g==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/addon-viewport@7.6.20': resolution: {integrity: sha512-i8mIw8BjLWAVHEQsOTE6UPuEGQvJDpsu1XZnOCkpfTfPMz73m+3td/PmLG7mMT2wPnLu9IZncKLCKTAZRbt/YQ==} + '@storybook/addon-viewport@8.6.12': + resolution: {integrity: sha512-EXK2LArAnABsPP0leJKy78L/lbMWow+EIJfytEP5fHaW4EhMR6h7Hzaqzre6U0IMMr/jVFa1ci+m0PJ0eQc2bw==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/addons@7.6.17': resolution: {integrity: sha512-Ok18Y698Ccyg++MoUNJNHY0cXUvo8ETFIRLJk1g9ElJ70j6kPgNnzW2pAtZkBNmswHtofZ7pT156cj96k/LgfA==} @@ -2249,6 +2558,18 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/blocks@8.6.12': + resolution: {integrity: sha512-DohlTq6HM1jDbHYiXL4ZvZ00VkhpUp5uftzj/CZDLY1fYHRjqtaTwWm2/OpceivMA8zDitLcq5atEZN+f+siTg==} + 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: ^8.6.12 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + '@storybook/builder-manager@7.6.20': resolution: {integrity: sha512-e2GzpjLaw6CM/XSmc4qJRzBF8GOoOyotyu3JrSPTYOt4RD8kjUsK4QlismQM1DQRu8i39aIexxmRbiJyD74xzQ==} @@ -2267,6 +2588,12 @@ packages: vite-plugin-glimmerx: optional: true + '@storybook/builder-vite@8.6.12': + resolution: {integrity: sha512-Gju21ud/3Qw4v2vLNaa5SuJECsI9ICNRr2G0UyCCzRvCHg8jpA9lDReu2NqhLDyFIuDG+ZYT38gcaHEUoNQ8KQ==} + peerDependencies: + storybook: ^8.6.12 + vite: '>=4.5.2' + '@storybook/channels@7.6.17': resolution: {integrity: sha512-GFG40pzaSxk1hUr/J/TMqW5AFDDPUSu+HkeE/oqSWJbOodBOLJzHN6CReJS6y1DjYSZLNFt1jftPWZZInG/XUA==} @@ -2295,6 +2622,11 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/components@8.6.12': + resolution: {integrity: sha512-FiaE8xvCdvKC2arYusgtlDNZ77b8ysr8njAYQZwwaIHjy27TbR2tEpLDCmUwSbANNmivtc/xGEiDDwcNppMWlQ==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + '@storybook/core-client@7.6.20': resolution: {integrity: sha512-upQuQQinLmlOPKcT8yqXNtwIucZ4E4qegYZXH5HXRWoLAL6GQtW7sUVSIuFogdki8OXRncr/dz8OA+5yQyYS4w==} @@ -2310,9 +2642,22 @@ packages: '@storybook/core-server@7.6.20': resolution: {integrity: sha512-qC5BdbqqwMLTdCwMKZ1Hbc3+3AaxHYWLiJaXL9e8s8nJw89xV8c8l30QpbJOGvcDmsgY6UTtXYaJ96OsTr7MrA==} + '@storybook/core@8.6.12': + resolution: {integrity: sha512-t+ZuDzAlsXKa6tLxNZT81gEAt4GNwsKP/Id2wluhmUWD/lwYW0uum1JiPUuanw8xD6TdakCW/7ULZc7aQUBLCQ==} + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + '@storybook/csf-plugin@7.6.20': resolution: {integrity: sha512-dzBzq0dN+8WLDp6NxYS4G7BCe8+vDeDRBRjHmM0xb0uJ6xgQViL8SDplYVSGnk3bXE/1WmtvyRzQyTffBnaj9Q==} + '@storybook/csf-plugin@8.6.12': + resolution: {integrity: sha512-6s8CnP1aoKPb3XtC0jRLUp8M5vTA8RhGAwQDKUsFpCC7g89JR9CaKs9FY2ZSzsNbjR15uASi7b3K8BzeYumYQg==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/csf-tools@7.6.20': resolution: {integrity: sha512-rwcwzCsAYh/m/WYcxBiEtLpIW5OH1ingxNdF/rK9mtGWhJxXRDV8acPkFrF8rtFWIVKoOCXu5USJYmc3f2gdYQ==} @@ -2328,12 +2673,29 @@ packages: '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + '@storybook/icons@1.3.2': + resolution: {integrity: sha512-t3xcbCKkPvqyef8urBM0j/nP6sKtnlRkVgC+8JTbTAZQjaTmOjes3byEgzs89p4B/K6cJsg9wLW2k3SknLtYJw==} + engines: {node: '>=14.0.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 + + '@storybook/instrumenter@8.6.12': + resolution: {integrity: sha512-VK5fYAF8jMwWP/u3YsmSwKGh+FeSY8WZn78flzRUwirp2Eg1WWjsqPRubAk7yTpcqcC/km9YMF3KbqfzRv2s/A==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/manager-api@7.6.17': resolution: {integrity: sha512-IJIV1Yc6yw1dhCY4tReHCfBnUKDqEBnMyHp3mbXpsaHxnxJZrXO45WjRAZIKlQKhl/Ge1CrnznmHRCmYgqmrWg==} '@storybook/manager-api@7.6.20': resolution: {integrity: sha512-gOB3m8hO3gBs9cBoN57T7jU0wNKDh+hi06gLcyd2awARQlAlywnLnr3s1WH5knih6Aq+OpvGBRVKkGLOkaouCQ==} + '@storybook/manager-api@8.6.12': + resolution: {integrity: sha512-O0SpISeJLNTQvhSBOsWzzkCgs8vCjOq1578rwqHlC6jWWm4QmtfdyXqnv7rR1Hk08kQ+Dzqh0uhwHx0nfwy4nQ==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + '@storybook/manager@7.6.20': resolution: {integrity: sha512-0Cf6WN0t7yEG2DR29tN5j+i7H/TH5EfPppg9h9/KiQSoFHk+6KLoy2p5do94acFU+Ro4+zzxvdCGbcYGKuArpg==} @@ -2357,6 +2719,11 @@ packages: '@storybook/preview-api@7.6.20': resolution: {integrity: sha512-3ic2m9LDZEPwZk02wIhNc3n3rNvbi7VDKn52hDXfAxnL5EYm7yDICAkaWcVaTfblru2zn0EDJt7ROpthscTW5w==} + '@storybook/preview-api@8.6.12': + resolution: {integrity: sha512-84FE3Hrs0AYKHqpDZOwx1S/ffOfxBdL65lhCoeI8GoWwCkzwa9zEP3kvXBo/BnEDO7nAfxvMhjASTZXbKRJh5Q==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + '@storybook/preview@7.6.20': resolution: {integrity: sha512-cxYlZ5uKbCYMHoFpgleZqqGWEnqHrk5m5fT8bYSsDsdQ+X5wPcwI/V+v8dxYAdQcMphZVIlTjo6Dno9WG8qmVA==} @@ -2366,6 +2733,13 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/react-dom-shim@8.6.12': + resolution: {integrity: sha512-51QvoimkBzYs8s3rCYnY5h0cFqLz/Mh0vRcughwYaXckWzDBV8l67WBO5Xf5nBsukCbWyqBVPpEQLww8s7mrLA==} + 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 + storybook: ^8.6.12 + '@storybook/react-vite@7.6.20': resolution: {integrity: sha512-uKuBFyGPZxpfR8vpDU/2OE9v7iTaxwL7ldd7k1swYd1rTSAPacTnEHSMl1R5AjUhkdI7gRmGN9q7qiVfK2XJCA==} engines: {node: '>=16'} @@ -2374,6 +2748,19 @@ packages: react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 vite: '>=4.5.2' + '@storybook/react-vite@8.6.12': + resolution: {integrity: sha512-UA2Kule99oyFgHdhcuhrRwCKyWu/yMbqbl9U7NwowFHNwWWFjVMMir/AmfShb/H1C1DQ3LqOad6/QwJyPLjP8g==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@storybook/test': 8.6.12 + 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 + storybook: ^8.6.12 + vite: '>=4.5.2' + peerDependenciesMeta: + '@storybook/test': + optional: true + '@storybook/react@7.6.20': resolution: {integrity: sha512-i5tKNgUbTNwlqBWGwPveDhh9ktlS0wGtd97A1ZgKZc3vckLizunlAFc7PRC1O/CMq5PTyxbuUb4RvRD2jWKwDA==} engines: {node: '>=16.0.0'} @@ -2385,6 +2772,21 @@ packages: typescript: optional: true + '@storybook/react@8.6.12': + resolution: {integrity: sha512-NzxlHLA5DkDgZM/dMwTYinuzRs6rsUPmlqP+NIv6YaciQ4NGnTYyOC7R/SqI6HHFm8ZZ5eMYvpfiFmhZ9rU+rQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@storybook/test': 8.6.12 + 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 + storybook: ^8.6.12 + typescript: '>= 4.2.x' + peerDependenciesMeta: + '@storybook/test': + optional: true + typescript: + optional: true + '@storybook/router@7.6.17': resolution: {integrity: sha512-GnyC0j6Wi5hT4qRhSyT8NPtJfGmf82uZw97LQRWeyYu5gWEshUdM7aj40XlNiScd5cZDp0owO1idduVF2k2l2A==} @@ -2394,6 +2796,11 @@ packages: '@storybook/telemetry@7.6.20': resolution: {integrity: sha512-dmAOCWmOscYN6aMbhCMmszQjoycg7tUPRVy2kTaWg6qX10wtMrvEtBV29W4eMvqdsoRj5kcvoNbzRdYcWBUOHQ==} + '@storybook/test@8.6.12': + resolution: {integrity: sha512-0BK1Eg+VD0lNMB1BtxqHE3tP9FdkUmohtvWG7cq6lWvMrbCmAmh3VWai3RMCCDOukPFpjabOr8BBRLVvhNpv2w==} + peerDependencies: + storybook: ^8.6.12 + '@storybook/testing-library@0.2.2': resolution: {integrity: sha512-L8sXFJUHmrlyU2BsWWZGuAjv39Jl1uAqUHdxmN42JY15M4+XCMjGlArdCCjDe1wpTSW6USYISA9axjZojgtvnw==} deprecated: In Storybook 8, this package functionality has been integrated to a new package called @storybook/test, which uses Vitest APIs for an improved experience. When upgrading to Storybook 8 with 'npx storybook@latest upgrade', you will get prompted and will get an automigration for the new package. Please migrate when you can. @@ -2410,21 +2817,26 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/theming@8.6.12': + resolution: {integrity: sha512-6VjZg8HJ2Op7+KV7ihJpYrDnFtd9D1jrQnUS8LckcpuBXrIEbaut5+34ObY8ssQnSqkk2GwIZBBBQYQBCVvkOw==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + '@storybook/types@7.6.17': resolution: {integrity: sha512-GRY0xEJQ0PrL7DY2qCNUdIfUOE0Gsue6N+GBJw9ku1IUDFLJRDOF+4Dx2BvYcVCPI5XPqdWKlEyZdMdKjiQN7Q==} '@storybook/types@7.6.20': resolution: {integrity: sha512-GncdY3x0LpbhmUAAJwXYtJDUQEwfF175gsjH0/fxPkxPoV7Sef9TM41jQLJW/5+6TnZoCZP/+aJZTJtq3ni23Q==} - '@stripe/react-stripe-js@3.4.0': - resolution: {integrity: sha512-5m0vProlV2qyB7qXHSn25Ao79BjgJW/oiv2ynJ645dpdjeR7fyeb+KSrA4Esk7jqy+aKmdyn70TAIN0BVgh0MA==} + '@stripe/react-stripe-js@3.5.1': + resolution: {integrity: sha512-MFZ69qz70T0srU9nsPhQHFNbOxfL4fb9fokHKqJy0S6X53D8KJXD23iiKWGmLasMeqXNzBqLnuziE72QszeRLw==} peerDependencies: '@stripe/stripe-js': '>=1.44.1 <7.0.0' react: '>=16.8.0 <20.0.0' react-dom: '>=16.8.0 <20.0.0' - '@stripe/stripe-js@5.10.0': - resolution: {integrity: sha512-PTigkxMdMUP6B5ISS7jMqJAKhgrhZwjprDqR1eATtFfh0OpKVNp110xiH+goeVdrJ29/4LeZJR4FaHHWstsu0A==} + '@stripe/stripe-js@6.1.0': + resolution: {integrity: sha512-/5zxRol+MU4I7fjZXPxP2M6E1nuHOxAzoc0tOEC/TLnC31Gzc+5EE93mIjoAnu28O1Sqpl7/BkceDHwnGmn75A==} engines: {node: '>=12.16'} '@tanstack/react-table@8.21.2': @@ -2446,6 +2858,10 @@ packages: resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} + '@testing-library/jest-dom@6.5.0': + resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + '@testing-library/react@16.2.0': resolution: {integrity: sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==} engines: {node: '>=18'} @@ -2461,6 +2877,12 @@ packages: '@types/react-dom': optional: true + '@testing-library/user-event@14.5.2': + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + '@testing-library/user-event@14.6.1': resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} engines: {node: '>=12', npm: '>=6'} @@ -2478,8 +2900,8 @@ packages: '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} - '@types/applepayjs@14.0.8': - resolution: {integrity: sha512-Yzf5OSitdS+/G8cjaAkPJ0+pBOEf9Vik1XUCdw6ul7Qh6Xb18wTlG/sWA5jKIme3x4fbyTGlSd4mfkvdtP9mRw==} + '@types/applepayjs@14.0.9': + resolution: {integrity: sha512-xEprYbb0TEP/XIiDPbVnTYpDai8fTFpsQfVSfTd81Is2GOMUy7ie019eyX6Mz2ECxfjoUVKaiGSL577roIeHCg==} '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -2499,8 +2921,8 @@ packages: '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - '@types/braintree-web@3.96.16': - resolution: {integrity: sha512-v9gbS2vxpM5Bu5xpUMbKpZVqLjU1SZrDNXtSNSQtKH7Jc8W3dD4n5WK5z+sdnCsZU31/OXkeM/y/mOi8KQjpFw==} + '@types/braintree-web@3.96.17': + resolution: {integrity: sha512-l+ujTICdA34gxov4AAsJLONNvYKbMyOYBnDU8syBhosCp/3IW2bJuZQEmUuOrliYeMmFm20ltQO9VHsRb8066g==} '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -2565,8 +2987,8 @@ packages: '@types/http-errors@2.0.4': resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - '@types/iframe-resizer@3.5.13': - resolution: {integrity: sha512-/Np2ntlOWd/NOHs23Mj7QlNEnZ6SL02AWWdYZLm4RQNukDdpqpagfMAdin5FvQDLngR8LWfh/qUnYxuDmR8BCg==} + '@types/iframe-resizer@4.0.0': + resolution: {integrity: sha512-RKrT4goNVtqZvf9WPkV0cUcphQWXzLVW1IE4yOIY21c1W+obJJbcHFD1lQu5ncNHm/6TeQSeedVf9bmkx2NaGQ==} '@types/istanbul-lib-coverage@2.0.6': resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} @@ -2589,6 +3011,9 @@ packages: '@types/mdast@3.0.15': resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mdx@2.0.13': resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} @@ -2616,8 +3041,8 @@ packages: '@types/node@18.19.80': resolution: {integrity: sha512-kEWeMwMeIvxYkeg1gTc01awpwLbfMRZXdIhwRcakd/KlK53jmRC26LqcbIt7fnAQTu5GzlnWmzA3H6+l1u6xxQ==} - '@types/node@22.13.10': - resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==} + '@types/node@22.13.14': + resolution: {integrity: sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -2637,8 +3062,13 @@ packages: '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/react-test-renderer@18.3.1': - resolution: {integrity: sha512-vAhnk0tG2eGa37lkU9+s5SoroCsRI08xnsWFiAXOuPH2jqzMbcXvKExXViPi1P5fIklDeCvXqyrdmipFaSkZrA==} + '@types/react-dom@19.1.2': + resolution: {integrity: sha512-XGJkWF41Qq305SKWEILa1O8vzhb3aOo3ogBlSmiqNko/WmRb6QIaweuZCXjKygVDXpzXb5wyxKTSOsmkuqj+Qw==} + peerDependencies: + '@types/react': ^19.0.0 + + '@types/react-test-renderer@19.0.0': + resolution: {integrity: sha512-qDVnNybqFm2eZKJ4jD34EvRd6VHD67KjgnWaEMM0Id9L22EpWe3nOSVKHWL1XWRCxUWe3lhXwlEeCKD1BlJCQA==} '@types/react-window@1.8.8': resolution: {integrity: sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==} @@ -2646,6 +3076,12 @@ packages: '@types/react@18.3.18': resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} + '@types/react@19.0.12': + resolution: {integrity: sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==} + + '@types/react@19.1.2': + resolution: {integrity: sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==} + '@types/resolve@1.20.6': resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} @@ -2667,6 +3103,9 @@ packages: '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/uuid@9.0.8': resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} @@ -2679,6 +3118,78 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@typescript-eslint/eslint-plugin@8.30.1': + resolution: {integrity: sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.30.1': + resolution: {integrity: sha512-H+vqmWwT5xoNrXqWs/fesmssOW70gxFlgcMlYcBaWNPIEWDgLa4W9nkSPmhuOgLnXq9QYgkZ31fhDyLhleCsAg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.23.0': + resolution: {integrity: sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/scope-manager@8.30.1': + resolution: {integrity: sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.30.1': + resolution: {integrity: sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.23.0': + resolution: {integrity: sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/types@8.30.1': + resolution: {integrity: sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.23.0': + resolution: {integrity: sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/typescript-estree@8.30.1': + resolution: {integrity: sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.23.0': + resolution: {integrity: sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/utils@8.30.1': + resolution: {integrity: sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.23.0': + resolution: {integrity: sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/visitor-keys@8.30.1': + resolution: {integrity: sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@vitejs/plugin-react@3.1.0': resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} @@ -2691,20 +3202,52 @@ packages: peerDependencies: vite: '>=4.5.2' - '@vitest/coverage-v8@3.0.8': - resolution: {integrity: sha512-y7SAKsQirsEJ2F8bulBck4DoluhI2EEgTimHd6EEUgJBGKy9tC25cpywh1MH4FvDGoG2Unt7+asVd1kj4qOSAw==} + '@vitejs/plugin-react@4.4.0': + resolution: {integrity: sha512-x/EztcTKVj+TDeANY1WjNeYsvZjZdfWRMP/KXi5Yn8BoTzpa13ZltaQqKfvWYbX8CE10GOHHdC5v86jY9x8i/g==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: '>=4.5.2' + + '@vitest/coverage-v8@3.0.9': + resolution: {integrity: sha512-15OACZcBtQ34keIEn19JYTVuMFTlFrClclwWjHo/IRPg/8ELpkgNTl0o7WLP9WO9XGH6+tip9CPYtEOrIDJvBA==} + peerDependencies: + '@vitest/browser': 3.0.9 + vitest: 3.0.9 + peerDependenciesMeta: + '@vitest/browser': + optional: true + + '@vitest/coverage-v8@3.1.1': + resolution: {integrity: sha512-MgV6D2dhpD6Hp/uroUoAIvFqA8AuvXEFBC2eepG3WFc1pxTfdk1LEqqkWoWhjz+rytoqrnUUCdf6Lzco3iHkLQ==} peerDependencies: - '@vitest/browser': 3.0.8 - vitest: 3.0.8 + '@vitest/browser': 3.1.1 + vitest: 3.1.1 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@3.0.8': - resolution: {integrity: sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==} + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + + '@vitest/expect@3.0.9': + resolution: {integrity: sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==} + + '@vitest/expect@3.1.1': + resolution: {integrity: sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==} + + '@vitest/mocker@3.0.9': + resolution: {integrity: sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==} + peerDependencies: + msw: ^2.4.9 + vite: '>=5.1.7' + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true - '@vitest/mocker@3.0.8': - resolution: {integrity: sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==} + '@vitest/mocker@3.1.1': + resolution: {integrity: sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==} peerDependencies: msw: ^2.4.9 vite: '>=5.1.7' @@ -2714,20 +3257,50 @@ packages: vite: optional: true - '@vitest/pretty-format@3.0.8': - resolution: {integrity: sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==} + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + + '@vitest/pretty-format@2.1.9': + resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} + + '@vitest/pretty-format@3.0.9': + resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} + + '@vitest/pretty-format@3.1.1': + resolution: {integrity: sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==} + + '@vitest/runner@3.0.9': + resolution: {integrity: sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==} - '@vitest/runner@3.0.8': - resolution: {integrity: sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==} + '@vitest/runner@3.1.1': + resolution: {integrity: sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==} - '@vitest/snapshot@3.0.8': - resolution: {integrity: sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==} + '@vitest/snapshot@3.0.9': + resolution: {integrity: sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==} - '@vitest/spy@3.0.8': - resolution: {integrity: sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==} + '@vitest/snapshot@3.1.1': + resolution: {integrity: sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==} - '@vitest/utils@3.0.8': - resolution: {integrity: sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==} + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} + + '@vitest/spy@3.0.9': + resolution: {integrity: sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==} + + '@vitest/spy@3.1.1': + resolution: {integrity: sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==} + + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + + '@vitest/utils@2.1.9': + resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} + + '@vitest/utils@3.0.9': + resolution: {integrity: sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==} + + '@vitest/utils@3.1.1': + resolution: {integrity: sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==} '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -2868,6 +3441,9 @@ packages: peerDependencies: ajv: ^8.8.2 + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -2879,6 +3455,10 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -2899,6 +3479,9 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -3058,8 +3641,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - braintree-web@3.116.3: - resolution: {integrity: sha512-pZVhmCA88g40XOZonKjD7RaS66tLJBA/EFfHqdqBr4+3IX73ssgmq2OfnWWOrVICgtMhFyG6fqtwwcYFewQ9Sg==} + braintree-web@3.117.1: + resolution: {integrity: sha512-Jv4NO0s90VYpbKMVL7IMigCyWhi+BlCqxS6Ub7auk6Jd4MUPToygKO3ryvvYVMmasm7pEVKRIAH16UMVfcq4FA==} browser-assert@1.2.1: resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} @@ -3084,6 +3667,12 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + byte-size@8.1.1: resolution: {integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==} engines: {node: '>=12.17'} @@ -3137,6 +3726,10 @@ packages: resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} engines: {node: '>=12'} + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + chalk@4.1.0: resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} engines: {node: '>=10'} @@ -3145,6 +3738,14 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} @@ -3159,6 +3760,10 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -3166,6 +3771,18 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + chromatic@11.25.2: + resolution: {integrity: sha512-/9eQWn6BU1iFsop86t8Au21IksTRxwXAl7if8YHD05L2AbuMjClLWZo5cZojqrJHGKDhTqfrC2X2xE4uSm0iKw==} + hasBin: true + peerDependencies: + '@chromatic-com/cypress': ^0.*.* || ^1.0.0 + '@chromatic-com/playwright': ^0.*.* || ^1.0.0 + peerDependenciesMeta: + '@chromatic-com/cypress': + optional: true + '@chromatic-com/playwright': + optional: true + chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -3181,6 +3798,9 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} @@ -3192,6 +3812,11 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + cli-spinners@2.6.1: resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} engines: {node: '>=6'} @@ -3250,6 +3875,10 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + commander@11.1.0: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} @@ -3257,6 +3886,10 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + commander@6.2.1: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} @@ -3385,6 +4018,9 @@ packages: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -3455,6 +4091,9 @@ packages: resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} engines: {node: '>= 0.4'} + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + default-browser-id@3.0.0: resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} engines: {node: '>=12'} @@ -3520,6 +4159,9 @@ packages: engines: {node: '>= 4.0.0'} hasBin: true + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3539,6 +4181,9 @@ packages: dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -3588,6 +4233,9 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -3632,6 +4280,10 @@ packages: engines: {node: '>=4'} hasBin: true + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} @@ -3692,6 +4344,10 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} @@ -3701,15 +4357,62 @@ packages: engines: {node: '>=6.0'} hasBin: true + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react-refresh@0.4.19: + resolution: {integrity: sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ==} + peerDependencies: + eslint: '>=8.40' + + eslint-plugin-storybook@0.12.0: + resolution: {integrity: sha512-Lg5I0+npTgiYgZ4KSvGWGDFZi3eOCNJPaWX0c9rTEEXC5wvooOClsP9ZtbI4hhFKyKgYR877KiJxbRTSJq9gWA==} + engines: {node: '>= 18'} + peerDependencies: + eslint: '>=8' + eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.24.0: + resolution: {integrity: sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -3783,6 +4486,9 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} @@ -3795,19 +4501,38 @@ packages: fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fdir@6.4.3: + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fetch-retry@5.0.6: resolution: {integrity: sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==} + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + file-system-cache@2.3.0: resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + filesize@10.1.6: + resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==} + engines: {node: '>= 10.4.0'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -3848,10 +4573,17 @@ packages: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flow-parser@0.265.2: resolution: {integrity: sha512-DX2mp5u3lNJHl5dH8R1KrcrDsiJC02zFcG95p4b0YcDCzZZW+v9za2Csv5bQ0cq4jNzGx0gFU9jFZyM7FOyNFw==} engines: {node: '>=0.4.0'} @@ -4047,6 +4779,14 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@16.0.0: + resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==} + engines: {node: '>=18'} + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -4061,6 +4801,9 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + graphql@16.10.0: resolution: {integrity: sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} @@ -4107,6 +4850,9 @@ packages: headers-polyfill@4.0.3: resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -4502,6 +5248,10 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + js-cookie@3.0.5: resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} engines: {node: '>=14'} @@ -4529,6 +5279,10 @@ packages: '@babel/preset-env': optional: true + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} + jsdom@26.0.0: resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==} engines: {node: '>=18'} @@ -4548,6 +5302,9 @@ packages: engines: {node: '>=6'} hasBin: true + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} @@ -4558,9 +5315,15 @@ packages: resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stringify-nice@1.1.4: resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==} @@ -4592,6 +5355,9 @@ packages: resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} engines: {node: '>=18'} + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -4608,8 +5374,8 @@ packages: resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} engines: {node: '>=14.0.0'} - lerna@8.2.1: - resolution: {integrity: sha512-Xwjv9/4ixp7fpBWhtvp7dz4NoQT8DEf7hzibHKCgu/8kmZUHeXsTn+TKspHqhI+p4YDmdkDnkg8xmymz73kVOg==} + lerna@8.2.2: + resolution: {integrity: sha512-GkqBELTG4k7rfzAwRok2pKBvhNo046Hfwcj7TuhDah3q58/BBBAqvIFLfqEI5fglnNOs6maMSn6/MWjccQE55A==} engines: {node: '>=18.0.0'} hasBin: true @@ -4617,6 +5383,10 @@ packages: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + libnpmaccess@8.0.6: resolution: {integrity: sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw==} engines: {node: ^16.14.0 || >=18.0.0} @@ -4625,6 +5395,10 @@ packages: resolution: {integrity: sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg==} engines: {node: ^16.14.0 || >=18.0.0} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -4640,6 +5414,10 @@ packages: resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} engines: {node: '>=8'} + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -4670,6 +5448,12 @@ packages: lodash.ismatch@4.4.0: resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -4750,6 +5534,17 @@ packages: peerDependencies: react: '>= 0.14.0' + marked-terminal@7.3.0: + resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} + engines: {node: '>=16.0.0'} + peerDependencies: + marked: '>=1 <16' + + marked@9.1.6: + resolution: {integrity: sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==} + engines: {node: '>= 16'} + hasBin: true + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -4760,39 +5555,72 @@ packages: mdast-util-find-and-replace@2.2.2: resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + mdast-util-from-markdown@1.3.1: resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + mdast-util-gfm-autolink-literal@1.0.3: resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + mdast-util-gfm-footnote@1.0.2: resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} + mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + mdast-util-gfm-strikethrough@1.0.3: resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + mdast-util-gfm-table@1.0.7: resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + mdast-util-gfm-task-list-item@1.0.2: resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + mdast-util-gfm@2.0.2: resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + mdast-util-phrasing@3.0.1: resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + mdast-util-to-markdown@1.5.0: resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + mdast-util-to-string@1.1.0: resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==} mdast-util-to-string@3.2.0: resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -4825,87 +5653,171 @@ packages: micromark-core-commonmark@1.1.0: resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} + micromark-core-commonmark@2.0.2: + resolution: {integrity: sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==} + micromark-extension-gfm-autolink-literal@1.0.5: resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + micromark-extension-gfm-footnote@1.1.2: resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + micromark-extension-gfm-strikethrough@1.0.7: resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + micromark-extension-gfm-table@1.0.7: resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + micromark-extension-gfm-tagfilter@1.0.2: resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + micromark-extension-gfm-task-list-item@1.0.5: resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + micromark-extension-gfm@2.0.3: resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + micromark-factory-destination@1.1.0: resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + micromark-factory-label@1.1.0: resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + micromark-factory-space@1.1.0: resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + micromark-factory-title@1.1.0: resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + micromark-factory-whitespace@1.1.0: resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + micromark-util-character@1.2.0: resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + micromark-util-chunked@1.1.0: resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + micromark-util-classify-character@1.1.0: resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + micromark-util-combine-extensions@1.1.0: resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + micromark-util-decode-numeric-character-reference@1.1.0: resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + micromark-util-decode-string@1.1.0: resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + micromark-util-encode@1.1.0: resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + micromark-util-html-tag-name@1.2.0: resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + micromark-util-normalize-identifier@1.1.0: resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + micromark-util-resolve-all@1.1.0: resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + micromark-util-sanitize-uri@1.2.0: resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + micromark-util-subtokenize@1.1.0: resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} + micromark-util-subtokenize@2.0.4: + resolution: {integrity: sha512-N6hXjrin2GTJDe3MVjf5FuXpm12PGm80BrUAeub9XFXca8JZbP+oIwY4LJSVwFUCL1IPm/WwSVUN7goFHmSGGQ==} + micromark-util-symbol@1.1.0: resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + micromark-util-types@1.1.0: resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} + micromark-util-types@2.0.1: + resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} + micromark@3.2.0: resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} + micromark@4.0.1: + resolution: {integrity: sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -5052,6 +5964,16 @@ packages: typescript: optional: true + msw@2.7.4: + resolution: {integrity: sha512-A2kuMopOjAjNEYkn0AnB1uj+x7oBjLIunFk7Ud4icEnVWFf6iBekn8oXW4zIwcpfEdWP9sLqyVaHVzneWoGEww==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + typescript: '>= 4.8.x' + peerDependenciesMeta: + typescript: + optional: true + multimatch@5.0.0: resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} engines: {node: '>=10'} @@ -5071,11 +5993,17 @@ packages: resolution: {integrity: sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==} engines: {node: '>=12.0.0'} - nanoid@3.3.10: - resolution: {integrity: sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -5091,6 +6019,10 @@ packages: resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} engines: {node: '>= 0.10.5'} + node-emoji@2.2.0: + resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} + engines: {node: '>=18'} + node-fetch-native@1.6.6: resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} @@ -5237,6 +6169,10 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + ora@5.3.0: resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} engines: {node: '>=10'} @@ -5361,6 +6297,15 @@ packages: parse-url@8.1.0: resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + parse5@7.2.1: resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} @@ -5472,13 +6417,13 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - playwright-core@1.51.0: - resolution: {integrity: sha512-x47yPE3Zwhlil7wlNU/iktF7t2r/URR3VLbH6EknJd/04Qc/PSJ0EY3CMXipmglLG+zyRxW6HNo2EGbKLHPWMg==} + playwright-core@1.51.1: + resolution: {integrity: sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw==} engines: {node: '>=18'} hasBin: true - playwright@1.51.0: - resolution: {integrity: sha512-442pTfGM0xxfCYxuBa/Pu6B2OqxqqaYq39JS8QDMGThUvIOCd6s0ANDog3uwA0cHavVlnTQzGCN7Id2YekDSXA==} + playwright@1.51.1: + resolution: {integrity: sha512-kkx+MB2KQRkyxjYPc3a0wLZZoDczmppyGJIvQ43l+aZihkaVvmu/21kiyaHeHjiFxjxNNFnUncKmcGIyOojsaw==} engines: {node: '>=18'} hasBin: true @@ -5494,6 +6439,24 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.4.31' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} @@ -5505,6 +6468,10 @@ packages: preact@10.22.1: resolution: {integrity: sha512-jRYbDDgMpIb5LHq3hkI0bbl+l/TQ9UnkdQ0ww+lp+4MMOdqaUYdFc5qeyP+IV8FAd/2Em7drVPeKdQxsiWCf/A==} + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -5642,8 +6609,11 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - rapid-form@2.1.0: - resolution: {integrity: sha512-tZwrgbQLUDK8AFgVsw2DVd8eCqxuujblrc4QPyML/3qneR1/RzaDx5HB29zdAgp8TS4OC17DlD8fiQNiJx+6Tg==} + rapid-form@3.1.0: + resolution: {integrity: sha512-gZf8H9O98xdUz8p4cHZng/JBigLfb6VrIezQdIh+xYejccMxvo5TnZmjIzd3HZA0keYT+t0uJazzRksvBBLPBw==} + peerDependencies: + react: ^16.9.0 + react-dom: ^16.9.0 raw-body@2.5.2: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} @@ -5655,13 +6625,19 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' + react-confetti@6.2.2: + resolution: {integrity: sha512-K+kTyOPgX+ZujMZ+Rmb7pZdHBvg+DzinG/w4Eh52WOB8/pfO38efnnrtEZNJmjTvLxc16RBYO+tPM68Fg8viBA==} + engines: {node: '>=16'} + peerDependencies: + react: ^16.3.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 + react-docgen-typescript@2.2.2: resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} peerDependencies: typescript: '>= 4.3.x' - react-docgen@7.1.1: - resolution: {integrity: sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==} + react-docgen@7.1.0: + resolution: {integrity: sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==} engines: {node: '>=16.14.0'} react-dom@18.3.1: @@ -5669,6 +6645,16 @@ packages: peerDependencies: react: ^18.3.1 + react-dom@19.0.0: + resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} + peerDependencies: + react: ^19.0.0 + + react-dom@19.1.0: + resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} + peerDependencies: + react: ^19.1.0 + react-element-to-jsx-string@15.0.0: resolution: {integrity: sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==} peerDependencies: @@ -5687,10 +6673,17 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-is@19.0.0: + resolution: {integrity: sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==} + react-refresh@0.14.2: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + react-remove-scroll-bar@2.3.8: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} @@ -5711,11 +6704,6 @@ packages: '@types/react': optional: true - react-shallow-renderer@16.15.0: - resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-style-singleton@2.2.3: resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} engines: {node: '>=10'} @@ -5726,15 +6714,23 @@ packages: '@types/react': optional: true - react-test-renderer@18.3.1: - resolution: {integrity: sha512-KkAgygexHUkQqtvvx/otwxtuFu5cVjfzTCtjXLH9boS19/Nbtg84zS7wIQn39G8IlrhThBpQsMKkq5ZHZIYFXA==} + react-test-renderer@19.0.0: + resolution: {integrity: sha512-oX5u9rOQlHzqrE/64CNr0HB0uWxkCQmZNSfozlYvwE71TLVgeZxVf0IjouGEr1v7r1kcDifdAJBeOhdhxsG/DA==} peerDependencies: - react: ^18.3.1 + react: ^19.0.0 react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} + engines: {node: '>=0.10.0'} + + react@19.1.0: + resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + engines: {node: '>=0.10.0'} + read-cmd-shim@4.0.0: resolution: {integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -5774,8 +6770,12 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - recast@0.23.11: - resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} + readdirp@4.1.1: + resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} + engines: {node: '>= 14.18.0'} + + recast@0.23.9: + resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} engines: {node: '>= 4'} redent@3.0.0: @@ -5816,9 +6816,18 @@ packages: remark-gfm@3.0.1: resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + remark-slug@6.1.0: resolution: {integrity: sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==} + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -5939,6 +6948,12 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} + + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + schema-utils@4.3.0: resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} engines: {node: '>= 10.13.0'} @@ -6026,6 +7041,10 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -6057,6 +7076,10 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + space-separated-tokens@1.1.5: resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} @@ -6109,6 +7132,15 @@ packages: resolution: {integrity: sha512-Wt04pPTO71pwmRmsgkyZhNo4Bvdb/1pBAMsIFb9nQLykEdzzpXjvingxFFvdOG4nIowzwgxD+CLlyRqVJqnATw==} hasBin: true + storybook@8.6.12: + resolution: {integrity: sha512-Z/nWYEHBTLK1ZBtAWdhxC0l5zf7ioJ7G4+zYqtTdYeb67gTnxNj80gehf8o8QY9L2zA2+eyMRGLC2V5fI7Z3Tw==} + hasBin: true + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + stream-shift@1.0.3: resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} @@ -6166,6 +7198,11 @@ packages: engines: {node: '>=4'} hasBin: true + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -6174,6 +7211,10 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} + supports-hyperlinks@3.2.0: + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} + engines: {node: '>=14.18'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -6251,6 +7292,13 @@ packages: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} @@ -6266,10 +7314,18 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyglobby@0.2.12: + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + engines: {node: '>=12.0.0'} + tinypool@1.0.2: resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} engines: {node: ^18.0.0 || >=20.0.0} + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + tinyrainbow@2.0.0: resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} @@ -6318,10 +7374,17 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + tr46@5.1.0: resolution: {integrity: sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==} engines: {node: '>=18'} + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + treeverse@3.0.0: resolution: {integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -6333,10 +7396,19 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-api-utils@2.0.1: + resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + tsc-alias@1.8.11: resolution: {integrity: sha512-2DuEQ58A9Rj2NE2c1+/qaGKlshni9MCK95MJzRGhQG0CYLw0bE/ACgbhhTSf/p1svLelwqafOd8stQate2bYbg==} hasBin: true @@ -6361,10 +7433,36 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsup@8.4.0: + resolution: {integrity: sha512-b+eZbPCjz10fRryaAA7C8xlIHnf8VnsaRqydheLIqwG/Mcpfk8Z5zp3HayX7GaTygkigHl5cBUs+IhcySiIexQ==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: '>=8.4.31' + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + tuf-js@2.2.1: resolution: {integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==} engines: {node: ^16.14.0 || >=18.0.0} + tween-functions@1.2.0: + resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + type-fest@0.16.0: resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} engines: {node: '>=10'} @@ -6404,16 +7502,33 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + typescript-eslint@8.30.1: + resolution: {integrity: sha512-D7lC0kcehVH7Mb26MRQi64LMyRJsj3dToJxM1+JVTl53DQSV5/7oUGWQLcKl1C1KnoVHxMMU2FNQMffr7F3Row==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true + typescript@5.6.1-rc: + resolution: {integrity: sha512-E3b2+1zEFu84jB0YQi9BORDjz9+jGbwwy1Zi3G0LUNw7a7cePUrHMRNy8aPh53nXpkFGVHSxIZo5vKTfYaFiBQ==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.8.2: resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} engines: {node: '>=14.17'} hasBin: true + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} @@ -6432,6 +7547,10 @@ packages: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} + unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} @@ -6447,6 +7566,9 @@ packages: unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + unique-filename@3.0.0: resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -6465,21 +7587,33 @@ packages: unist-util-is@5.2.1: resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-stringify-position@3.0.3: resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + unist-util-visit-parents@3.1.1: resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} unist-util-visit-parents@5.1.3: resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit@2.0.3: resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} unist-util-visit@4.1.2: resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universal-user-agent@6.0.1: resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} @@ -6513,6 +7647,9 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} @@ -6579,11 +7716,22 @@ packages: vfile-message@3.1.4: resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile@5.3.7: resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - vite-node@3.0.8: - resolution: {integrity: sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==} + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite-node@3.0.9: + resolution: {integrity: sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite-node@3.1.1: + resolution: {integrity: sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -6635,35 +7783,143 @@ packages: yaml: optional: true - vitest@3.0.8: - resolution: {integrity: sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==} + vite@6.2.3: + resolution: {integrity: sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: - '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.8 - '@vitest/ui': 3.0.8 - happy-dom: '*' - jsdom: '*' + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: - '@edge-runtime/vm': + '@types/node': optional: true - '@types/debug': + jiti: optional: true - '@types/node': + less: optional: true - '@vitest/browser': + lightningcss: optional: true - '@vitest/ui': + sass: optional: true - happy-dom: + sass-embedded: optional: true - jsdom: + stylus: optional: true - - w3c-xmlserializer@5.0.0: + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vite@6.3.1: + resolution: {integrity: sha512-kkzzkqtMESYklo96HKKPE5KKLkC1amlsqt+RjFMlX2AvbRB/0wghap19NdBxxwGZ+h/C6DLCrcEphPIItlGrRQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@3.0.9: + resolution: {integrity: sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.0.9 + '@vitest/ui': 3.0.9 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vitest@3.1.1: + resolution: {integrity: sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.1.1 + '@vitest/ui': 3.1.1 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -6683,6 +7939,9 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -6719,6 +7978,9 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -6749,6 +8011,10 @@ packages: wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} @@ -6871,9 +8137,11 @@ packages: snapshots: - '@adyen/adyen-web@6.9.0': + '@adobe/css-tools@4.4.1': {} + + '@adyen/adyen-web@6.11.0': dependencies: - '@types/applepayjs': 14.0.8 + '@types/applepayjs': 14.0.9 '@types/googlepay': 0.7.6 classnames: 2.5.1 preact: 10.22.1 @@ -6883,6 +8151,29 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 + '@andrewbranch/untar.js@1.0.3': {} + + '@arethetypeswrong/cli@0.17.4': + dependencies: + '@arethetypeswrong/core': 0.17.4 + chalk: 4.1.2 + cli-table3: 0.6.5 + commander: 10.0.1 + marked: 9.1.6 + marked-terminal: 7.3.0(marked@9.1.6) + semver: 7.7.1 + + '@arethetypeswrong/core@0.17.4': + dependencies: + '@andrewbranch/untar.js': 1.0.3 + '@loaderkit/resolve': 1.0.4 + cjs-module-lexer: 1.4.3 + fflate: 0.8.2 + lru-cache: 10.4.3 + semver: 7.7.1 + typescript: 5.6.1-rc + validate-npm-package-name: 5.0.1 + '@asamuzakjp/css-color@3.1.1': dependencies: '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) @@ -7642,6 +8933,8 @@ snapshots: '@biomejs/cli-win32-x64@1.9.4': optional: true + '@braidai/lang@1.1.0': {} + '@braintree/asset-loader@2.0.0': {} '@braintree/asset-loader@2.0.2': {} @@ -7675,17 +8968,36 @@ snapshots: '@types/tough-cookie': 4.0.5 tough-cookie: 4.1.4 + '@chromatic-com/storybook@3.2.6(react@19.1.0)(storybook@8.6.12(prettier@2.8.8))': + dependencies: + chromatic: 11.25.2 + filesize: 10.1.6 + jsonfile: 6.1.0 + react-confetti: 6.2.2(react@19.1.0) + storybook: 8.6.12(prettier@2.8.8) + strip-ansi: 7.1.0 + transitivePeerDependencies: + - '@chromatic-com/cypress' + - '@chromatic-com/playwright' + - react + '@colors/colors@1.5.0': optional: true '@commercelayer/js-auth@6.7.1': {} + '@commercelayer/js-auth@6.7.2': {} + '@commercelayer/organization-config@2.2.0': dependencies: merge-anything: 5.1.7 '@commercelayer/sdk@6.35.0': {} + '@commercelayer/sdk@6.36.0': {} + + '@commercelayer/sdk@6.39.0': {} + '@csstools/color-helpers@5.0.2': {} '@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': @@ -7866,6 +9178,50 @@ snapshots: '@esbuild/win32-x64@0.25.1': optional: true + '@eslint-community/eslint-utils@4.4.1(eslint@9.24.0)': + dependencies: + eslint: 9.24.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.20.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.0': {} + + '@eslint/core@0.12.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.24.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.7': + dependencies: + '@eslint/core': 0.12.0 + levn: 0.4.1 + '@faker-js/faker@9.6.0': {} '@fal-works/esbuild-plugin-global-externals@2.1.2': {} @@ -7887,19 +9243,32 @@ snapshots: '@floating-ui/utils@0.2.9': {} + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.2': {} + '@hutson/parse-repository-url@3.0.2': {} - '@inquirer/confirm@5.1.8(@types/node@22.13.10)': + '@inquirer/confirm@5.1.8(@types/node@22.13.14)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.10) - '@inquirer/type': 3.0.5(@types/node@22.13.10) + '@inquirer/core': 10.1.9(@types/node@22.13.14) + '@inquirer/type': 3.0.5(@types/node@22.13.14) optionalDependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.14 - '@inquirer/core@10.1.9(@types/node@22.13.10)': + '@inquirer/core@10.1.9(@types/node@22.13.14)': dependencies: '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@22.13.10) + '@inquirer/type': 3.0.5(@types/node@22.13.14) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -7907,13 +9276,13 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.14 '@inquirer/figures@1.0.11': {} - '@inquirer/type@3.0.5(@types/node@22.13.10)': + '@inquirer/type@3.0.5(@types/node@22.13.14)': optionalDependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.14 '@isaacs/cliui@8.0.2': dependencies: @@ -7964,7 +9333,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.13.10 + '@types/node': 22.13.14 '@types/yargs': 16.0.9 chalk: 4.1.2 @@ -7973,20 +9342,29 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.13.10 + '@types/node': 22.13.14 '@types/yargs': 17.0.33 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0))': dependencies: glob: 7.2.3 glob-promise: 4.2.2(glob@7.2.3) magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.8.2) - vite: 6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0) + vite: 6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) optionalDependencies: typescript: 5.8.2 + '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.8.3)(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0))': + dependencies: + glob: 10.4.5 + magic-string: 0.27.0 + react-docgen-typescript: 2.2.2(typescript@5.8.3) + vite: 6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) + optionalDependencies: + typescript: 5.8.3 + '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 @@ -8011,7 +9389,7 @@ snapshots: '@juggle/resize-observer@3.4.0': {} - '@lerna/create@8.2.1(encoding@0.1.13)(typescript@5.8.2)': + '@lerna/create@8.2.2(encoding@0.1.13)(typescript@5.8.3)': dependencies: '@npmcli/arborist': 7.5.4 '@npmcli/package-json': 5.2.0 @@ -8029,7 +9407,7 @@ snapshots: console-control-strings: 1.1.0 conventional-changelog-core: 5.0.1 conventional-recommended-bump: 7.0.1 - cosmiconfig: 9.0.0(typescript@5.8.2) + cosmiconfig: 9.0.0(typescript@5.8.3) dedent: 1.5.3 execa: 5.0.0 fs-extra: 11.3.0 @@ -8093,10 +9471,14 @@ snapshots: - supports-color - typescript + '@loaderkit/resolve@1.0.4': + dependencies: + '@braidai/lang': 1.1.0 + '@mdx-js/react@2.3.0(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 18.3.18 + '@types/react': 19.1.2 react: 18.3.1 '@mdx-js/react@3.1.0(@types/react@18.3.18)(react@18.3.1)': @@ -8105,7 +9487,13 @@ snapshots: '@types/react': 18.3.18 react: 18.3.1 - '@mswjs/interceptors@0.37.6': + '@mdx-js/react@3.1.0(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 19.1.2 + react: 19.1.0 + + '@mswjs/interceptors@0.37.3': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -8393,9 +9781,9 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.51.0': + '@playwright/test@1.51.1': dependencies: - playwright: 1.51.0 + playwright: 1.51.1 '@radix-ui/number@1.0.1': dependencies: @@ -8407,37 +9795,40 @@ snapshots: '@radix-ui/primitive@1.1.1': {} - '@radix-ui/react-arrow@1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-arrow@1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.10 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) - '@radix-ui/react-collection@1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collection@1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.10 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-context': 1.0.1(@types/react@18.3.18)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': 1.0.2(@types/react@18.3.18)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) - '@radix-ui/react-collection@1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collection@1.1.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-context': 1.1.1(@types/react@18.3.18)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.2(@types/react@18.3.18)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.1(@types/react@18.3.18)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.18)(react@18.3.1)': dependencies: @@ -8478,18 +9869,19 @@ snapshots: optionalDependencies: '@types/react': 18.3.18 - '@radix-ui/react-dismissable-layer@1.0.4(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.10 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.18)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.18)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.18)(react@18.3.1)': dependencies: @@ -8498,16 +9890,17 @@ snapshots: optionalDependencies: '@types/react': 18.3.18 - '@radix-ui/react-focus-scope@1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-focus-scope@1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.10 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.18)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.18)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) '@radix-ui/react-id@1.0.1(@types/react@18.3.18)(react@18.3.1)': dependencies: @@ -8524,14 +9917,14 @@ snapshots: optionalDependencies: '@types/react': 18.3.18 - '@radix-ui/react-popper@1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-popper@1.1.2(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.10 '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-context': 1.0.1(@types/react@18.3.18)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.18)(react@18.3.1) @@ -8541,17 +9934,19 @@ snapshots: react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) - '@radix-ui/react-portal@1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-portal@1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.10 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) - '@radix-ui/react-primitive@1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.10 '@radix-ui/react-slot': 1.0.2(@types/react@18.3.18)(react@18.3.1) @@ -8559,67 +9954,72 @@ snapshots: react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) - '@radix-ui/react-primitive@2.0.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@2.0.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-slot': 1.1.2(@types/react@18.3.18)(react@18.3.1) + '@radix-ui/react-slot': 1.1.1(@types/react@18.3.18)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) - '@radix-ui/react-roving-focus@1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-roving-focus@1.1.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-context': 1.1.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-direction': 1.1.0(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.18)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.18)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) - '@radix-ui/react-select@1.2.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-select@1.2.2(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.10 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-context': 1.0.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-direction': 1.0.1(@types/react@18.3.18)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.18)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-id': 1.0.1(@types/react@18.3.18)(react@18.3.1) - '@radix-ui/react-popper': 1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': 1.0.2(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.18)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) aria-hidden: 1.2.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-remove-scroll: 2.5.5(@types/react@18.3.18)(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) - '@radix-ui/react-separator@1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-separator@1.1.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) '@radix-ui/react-slot@1.0.2(@types/react@18.3.18)(react@18.3.1)': dependencies: @@ -8629,50 +10029,53 @@ snapshots: optionalDependencies: '@types/react': 18.3.18 - '@radix-ui/react-slot@1.1.2(@types/react@18.3.18)(react@18.3.1)': + '@radix-ui/react-slot@1.1.1(@types/react@18.3.18)(react@18.3.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) react: 18.3.1 optionalDependencies: '@types/react': 18.3.18 - '@radix-ui/react-toggle-group@1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-toggle-group@1.1.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 '@radix-ui/react-context': 1.1.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-direction': 1.1.0(@types/react@18.3.18)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle': 1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle': 1.1.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.18)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) - '@radix-ui/react-toggle@1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-toggle@1.1.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.18)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) - '@radix-ui/react-toolbar@1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-toolbar@1.1.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 '@radix-ui/react-context': 1.1.1(@types/react@18.3.18)(react@18.3.1) '@radix-ui/react-direction': 1.1.0(@types/react@18.3.18)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-separator': 1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle-group': 1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-separator': 1.1.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle-group': 1.1.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.18)(react@18.3.1)': dependencies: @@ -8746,14 +10149,15 @@ snapshots: optionalDependencies: '@types/react': 18.3.18 - '@radix-ui/react-visually-hidden@1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.10 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 + '@types/react-dom': 19.1.2(@types/react@18.3.18) '@radix-ui/rect@1.0.1': dependencies: @@ -8863,6 +10267,8 @@ snapshots: '@sinclair/typebox@0.27.8': {} + '@sindresorhus/is@4.6.0': {} + '@storybook/addon-actions@7.6.20': dependencies: '@storybook/core-events': 7.6.20 @@ -8872,15 +10278,31 @@ snapshots: polished: 4.3.1 uuid: 9.0.1 + '@storybook/addon-actions@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + '@storybook/global': 5.0.0 + '@types/uuid': 9.0.8 + dequal: 2.0.3 + polished: 4.3.1 + storybook: 8.6.12(prettier@2.8.8) + uuid: 9.0.1 + '@storybook/addon-backgrounds@7.6.20': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 ts-dedent: 2.2.0 - '@storybook/addon-controls@7.6.20(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/addon-backgrounds@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + '@storybook/global': 5.0.0 + memoizerific: 1.11.3 + storybook: 8.6.12(prettier@2.8.8) + ts-dedent: 2.2.0 + + '@storybook/addon-controls@7.6.20(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@storybook/blocks': 7.6.20(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/blocks': 7.6.20(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) lodash: 4.17.21 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -8891,13 +10313,20 @@ snapshots: - react-dom - supports-color - '@storybook/addon-docs@7.6.20(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/addon-controls@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + '@storybook/global': 5.0.0 + dequal: 2.0.3 + storybook: 8.6.12(prettier@2.8.8) + ts-dedent: 2.2.0 + + '@storybook/addon-docs@7.6.20(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@jest/transform': 29.7.0 '@mdx-js/react': 2.3.0(react@18.3.1) - '@storybook/blocks': 7.6.20(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/blocks': 7.6.20(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/client-logger': 7.6.20 - '@storybook/components': 7.6.20(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/components': 7.6.20(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/csf-plugin': 7.6.20 '@storybook/csf-tools': 7.6.20 '@storybook/global': 5.0.0 @@ -8920,12 +10349,25 @@ snapshots: - encoding - supports-color - '@storybook/addon-essentials@7.6.20(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/addon-docs@8.6.12(@types/react@19.1.2)(storybook@8.6.12(prettier@2.8.8))': + dependencies: + '@mdx-js/react': 3.1.0(@types/react@19.1.2)(react@19.1.0) + '@storybook/blocks': 8.6.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@2.8.8)) + '@storybook/csf-plugin': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/react-dom-shim': 8.6.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@2.8.8)) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + storybook: 8.6.12(prettier@2.8.8) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + + '@storybook/addon-essentials@7.6.20(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@storybook/addon-actions': 7.6.20 '@storybook/addon-backgrounds': 7.6.20 - '@storybook/addon-controls': 7.6.20(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/addon-docs': 7.6.20(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/addon-controls': 7.6.20(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/addon-docs': 7.6.20(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/addon-highlight': 7.6.20 '@storybook/addon-measure': 7.6.20 '@storybook/addon-outline': 7.6.20 @@ -8944,10 +10386,31 @@ snapshots: - encoding - supports-color + '@storybook/addon-essentials@8.6.12(@types/react@19.1.2)(storybook@8.6.12(prettier@2.8.8))': + dependencies: + '@storybook/addon-actions': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/addon-backgrounds': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/addon-controls': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/addon-docs': 8.6.12(@types/react@19.1.2)(storybook@8.6.12(prettier@2.8.8)) + '@storybook/addon-highlight': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/addon-measure': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/addon-outline': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/addon-toolbars': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/addon-viewport': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + storybook: 8.6.12(prettier@2.8.8) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + '@storybook/addon-highlight@7.6.20': dependencies: '@storybook/global': 5.0.0 + '@storybook/addon-highlight@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.6.12(prettier@2.8.8) + '@storybook/addon-interactions@7.6.20': dependencies: '@storybook/global': 5.0.0 @@ -8956,6 +10419,15 @@ snapshots: polished: 4.3.1 ts-dedent: 2.2.0 + '@storybook/addon-interactions@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/test': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + polished: 4.3.1 + storybook: 8.6.12(prettier@2.8.8) + ts-dedent: 2.2.0 + '@storybook/addon-links@7.6.20(react@18.3.1)': dependencies: '@storybook/csf': 0.1.13 @@ -8964,6 +10436,14 @@ snapshots: optionalDependencies: react: 18.3.1 + '@storybook/addon-links@8.6.12(react@19.1.0)(storybook@8.6.12(prettier@2.8.8))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.6.12(prettier@2.8.8) + ts-dedent: 2.2.0 + optionalDependencies: + react: 19.1.0 + '@storybook/addon-mdx-gfm@7.6.20': dependencies: '@storybook/node-logger': 7.6.20 @@ -8972,22 +10452,55 @@ snapshots: transitivePeerDependencies: - supports-color + '@storybook/addon-mdx-gfm@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + remark-gfm: 4.0.1 + storybook: 8.6.12(prettier@2.8.8) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + '@storybook/addon-measure@7.6.20': dependencies: '@storybook/global': 5.0.0 tiny-invariant: 1.3.3 + '@storybook/addon-measure@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.6.12(prettier@2.8.8) + tiny-invariant: 1.3.3 + + '@storybook/addon-onboarding@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + storybook: 8.6.12(prettier@2.8.8) + '@storybook/addon-outline@7.6.20': dependencies: '@storybook/global': 5.0.0 ts-dedent: 2.2.0 + '@storybook/addon-outline@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.6.12(prettier@2.8.8) + ts-dedent: 2.2.0 + '@storybook/addon-toolbars@7.6.20': {} + '@storybook/addon-toolbars@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + storybook: 8.6.12(prettier@2.8.8) + '@storybook/addon-viewport@7.6.20': dependencies: memoizerific: 1.11.3 + '@storybook/addon-viewport@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + memoizerific: 1.11.3 + storybook: 8.6.12(prettier@2.8.8) + '@storybook/addons@7.6.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@storybook/manager-api': 7.6.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -9005,11 +10518,11 @@ snapshots: - react - react-dom - '@storybook/blocks@7.6.20(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/blocks@7.6.20(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@storybook/channels': 7.6.20 '@storybook/client-logger': 7.6.20 - '@storybook/components': 7.6.20(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/components': 7.6.20(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/core-events': 7.6.20 '@storybook/csf': 0.1.13 '@storybook/docs-tools': 7.6.20(encoding@0.1.13) @@ -9038,6 +10551,15 @@ snapshots: - encoding - supports-color + '@storybook/blocks@8.6.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@2.8.8))': + dependencies: + '@storybook/icons': 1.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + storybook: 8.6.12(prettier@2.8.8) + ts-dedent: 2.2.0 + optionalDependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + '@storybook/builder-manager@7.6.20(encoding@0.1.13)': dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 @@ -9060,7 +10582,7 @@ snapshots: - encoding - supports-color - '@storybook/builder-vite@7.6.20(encoding@0.1.13)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0))': + '@storybook/builder-vite@7.6.20(encoding@0.1.13)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0))': dependencies: '@storybook/channels': 7.6.20 '@storybook/client-logger': 7.6.20 @@ -9078,13 +10600,21 @@ snapshots: fs-extra: 11.3.0 magic-string: 0.30.17 rollup: 3.29.5 - vite: 6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0) + vite: 6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) optionalDependencies: typescript: 5.8.2 transitivePeerDependencies: - encoding - supports-color + '@storybook/builder-vite@8.6.12(storybook@8.6.12(prettier@2.8.8))(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0))': + dependencies: + '@storybook/csf-plugin': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + browser-assert: 1.2.1 + storybook: 8.6.12(prettier@2.8.8) + ts-dedent: 2.2.0 + vite: 6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) + '@storybook/channels@7.6.17': dependencies: '@storybook/client-logger': 7.6.17 @@ -9179,14 +10709,14 @@ snapshots: jscodeshift: 0.15.2(@babel/preset-env@7.26.9(@babel/core@7.26.10)) lodash: 4.17.21 prettier: 2.8.8 - recast: 0.23.11 + recast: 0.23.9 transitivePeerDependencies: - supports-color - '@storybook/components@7.6.20(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/components@7.6.20(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-select': 1.2.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toolbar': 1.1.2(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-select': 1.2.2(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toolbar': 1.1.1(@types/react-dom@19.1.2(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/client-logger': 7.6.20 '@storybook/csf': 0.1.13 '@storybook/global': 5.0.0 @@ -9201,6 +10731,10 @@ snapshots: - '@types/react' - '@types/react-dom' + '@storybook/components@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + storybook: 8.6.12(prettier@2.8.8) + '@storybook/core-client@7.6.20': dependencies: '@storybook/client-logger': 7.6.20 @@ -9291,6 +10825,27 @@ snapshots: - supports-color - utf-8-validate + '@storybook/core@8.6.12(prettier@2.8.8)(storybook@8.6.12(prettier@2.8.8))': + dependencies: + '@storybook/theming': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + better-opn: 3.0.2 + browser-assert: 1.2.1 + esbuild: 0.25.1 + esbuild-register: 3.6.0(esbuild@0.25.1) + jsdoc-type-pratt-parser: 4.1.0 + process: 0.11.10 + recast: 0.23.9 + semver: 7.7.1 + util: 0.12.5 + ws: 8.18.1 + optionalDependencies: + prettier: 2.8.8 + transitivePeerDependencies: + - bufferutil + - storybook + - supports-color + - utf-8-validate + '@storybook/csf-plugin@7.6.20': dependencies: '@storybook/csf-tools': 7.6.20 @@ -9298,6 +10853,11 @@ snapshots: transitivePeerDependencies: - supports-color + '@storybook/csf-plugin@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + storybook: 8.6.12(prettier@2.8.8) + unplugin: 1.16.1 + '@storybook/csf-tools@7.6.20': dependencies: '@babel/generator': 7.26.10 @@ -9307,7 +10867,7 @@ snapshots: '@storybook/csf': 0.1.13 '@storybook/types': 7.6.20 fs-extra: 11.3.0 - recast: 0.23.11 + recast: 0.23.9 ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color @@ -9333,9 +10893,20 @@ snapshots: '@storybook/global@5.0.0': {} - '@storybook/manager-api@7.6.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/icons@1.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@storybook/channels': 7.6.17 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + + '@storybook/instrumenter@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + '@storybook/global': 5.0.0 + '@vitest/utils': 2.1.9 + storybook: 8.6.12(prettier@2.8.8) + + '@storybook/manager-api@7.6.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@storybook/channels': 7.6.17 '@storybook/client-logger': 7.6.17 '@storybook/core-events': 7.6.17 '@storybook/csf': 0.1.13 @@ -9373,6 +10944,10 @@ snapshots: - react - react-dom + '@storybook/manager-api@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + storybook: 8.6.12(prettier@2.8.8) + '@storybook/manager@7.6.20': {} '@storybook/mdx2-csf@1.1.0': {} @@ -9419,6 +10994,10 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 + '@storybook/preview-api@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + storybook: 8.6.12(prettier@2.8.8) + '@storybook/preview@7.6.20': {} '@storybook/react-dom-shim@7.6.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -9426,18 +11005,24 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/react-vite@7.6.20(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.35.0)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0))': + '@storybook/react-dom-shim@8.6.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@2.8.8))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0)) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + storybook: 8.6.12(prettier@2.8.8) + + '@storybook/react-vite@7.6.20(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.35.0)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0))': + dependencies: + '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) '@rollup/pluginutils': 5.1.4(rollup@4.35.0) - '@storybook/builder-vite': 7.6.20(encoding@0.1.13)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0)) + '@storybook/builder-vite': 7.6.20(encoding@0.1.13)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) '@storybook/react': 7.6.20(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.2) - '@vitejs/plugin-react': 3.1.0(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0)) + '@vitejs/plugin-react': 3.1.0(vite@6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) magic-string: 0.30.17 react: 18.3.1 - react-docgen: 7.1.1 + react-docgen: 7.1.0 react-dom: 18.3.1(react@18.3.1) - vite: 6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0) + vite: 6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -9446,6 +11031,28 @@ snapshots: - typescript - vite-plugin-glimmerx + '@storybook/react-vite@8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@2.8.8)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.35.0)(storybook@8.6.12(prettier@2.8.8))(typescript@5.8.3)(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0))': + dependencies: + '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.8.3)(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) + '@rollup/pluginutils': 5.1.4(rollup@4.35.0) + '@storybook/builder-vite': 8.6.12(storybook@8.6.12(prettier@2.8.8))(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) + '@storybook/react': 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@2.8.8)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@2.8.8))(typescript@5.8.3) + find-up: 5.0.0 + magic-string: 0.30.17 + react: 19.1.0 + react-docgen: 7.1.0 + react-dom: 19.1.0(react@19.1.0) + resolve: 1.22.10 + storybook: 8.6.12(prettier@2.8.8) + tsconfig-paths: 4.2.0 + vite: 6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) + optionalDependencies: + '@storybook/test': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + transitivePeerDependencies: + - rollup + - supports-color + - typescript + '@storybook/react@7.6.20(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.2)': dependencies: '@storybook/client-logger': 7.6.20 @@ -9477,6 +11084,21 @@ snapshots: - encoding - supports-color + '@storybook/react@8.6.12(@storybook/test@8.6.12(storybook@8.6.12(prettier@2.8.8)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@2.8.8))(typescript@5.8.3)': + dependencies: + '@storybook/components': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/global': 5.0.0 + '@storybook/manager-api': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/preview-api': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@storybook/react-dom-shim': 8.6.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(prettier@2.8.8)) + '@storybook/theming': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + storybook: 8.6.12(prettier@2.8.8) + optionalDependencies: + '@storybook/test': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + typescript: 5.8.3 + '@storybook/router@7.6.17': dependencies: '@storybook/client-logger': 7.6.17 @@ -9503,6 +11125,17 @@ snapshots: - encoding - supports-color + '@storybook/test@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.6.12(storybook@8.6.12(prettier@2.8.8)) + '@testing-library/dom': 10.4.0 + '@testing-library/jest-dom': 6.5.0 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) + '@vitest/expect': 2.0.5 + '@vitest/spy': 2.0.5 + storybook: 8.6.12(prettier@2.8.8) + '@storybook/testing-library@0.2.2': dependencies: '@testing-library/dom': 9.3.4 @@ -9527,6 +11160,10 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + '@storybook/theming@8.6.12(storybook@8.6.12(prettier@2.8.8))': + dependencies: + storybook: 8.6.12(prettier@2.8.8) + '@storybook/types@7.6.17': dependencies: '@storybook/channels': 7.6.17 @@ -9541,20 +11178,20 @@ snapshots: '@types/express': 4.17.21 file-system-cache: 2.3.0 - '@stripe/react-stripe-js@3.4.0(@stripe/stripe-js@5.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@stripe/react-stripe-js@3.5.1(@stripe/stripe-js@6.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@stripe/stripe-js': 5.10.0 + '@stripe/stripe-js': 6.1.0 prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - '@stripe/stripe-js@5.10.0': {} + '@stripe/stripe-js@6.1.0': {} - '@tanstack/react-table@8.21.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-table@8.21.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@tanstack/table-core': 8.21.2 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) '@tanstack/table-core@8.21.2': {} @@ -9580,14 +11217,29 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/react@16.2.0(@testing-library/dom@10.4.0)(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@testing-library/jest-dom@6.5.0': + dependencies: + '@adobe/css-tools': 4.4.1 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + + '@testing-library/react@16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.2(@types/react@19.0.12))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.10 '@testing-library/dom': 10.4.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.18 + '@types/react': 19.0.12 + '@types/react-dom': 19.1.2(@types/react@19.0.12) + + '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': + dependencies: + '@testing-library/dom': 10.4.0 '@testing-library/user-event@14.6.1(@testing-library/dom@9.3.4)': dependencies: @@ -9604,7 +11256,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@types/applepayjs@14.0.8': {} + '@types/applepayjs@14.0.9': {} '@types/aria-query@5.0.4': {} @@ -9632,22 +11284,22 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.13.10 + '@types/node': 22.13.14 - '@types/braintree-web@3.96.16': + '@types/braintree-web@3.96.17': dependencies: '@types/googlepay': 0.7.6 '@types/paypal-checkout-components': 4.0.8 '@types/connect@3.4.38': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.14 '@types/cookie@0.6.0': {} '@types/cross-spawn@6.0.6': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.14 '@types/debug@4.1.12': dependencies: @@ -9681,7 +11333,7 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.14 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -9698,17 +11350,17 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.13.10 + '@types/node': 22.13.14 '@types/googlepay@0.7.6': {} '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.14 '@types/http-errors@2.0.4': {} - '@types/iframe-resizer@3.5.13': {} + '@types/iframe-resizer@4.0.0': {} '@types/istanbul-lib-coverage@2.0.6': {} @@ -9730,6 +11382,10 @@ snapshots: dependencies: '@types/unist': 2.0.11 + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/mdx@2.0.13': {} '@types/mime-types@2.1.4': {} @@ -9746,14 +11402,14 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.14 form-data: 4.0.2 '@types/node@18.19.80': dependencies: undici-types: 5.26.5 - '@types/node@22.13.10': + '@types/node@22.13.14': dependencies: undici-types: 6.20.0 @@ -9769,19 +11425,41 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-test-renderer@18.3.1': + '@types/react-dom@19.1.2(@types/react@18.3.18)': dependencies: '@types/react': 18.3.18 + optional: true + + '@types/react-dom@19.1.2(@types/react@19.0.12)': + dependencies: + '@types/react': 19.0.12 + optional: true + + '@types/react-dom@19.1.2(@types/react@19.1.2)': + dependencies: + '@types/react': 19.1.2 + + '@types/react-test-renderer@19.0.0': + dependencies: + '@types/react': 19.1.2 '@types/react-window@1.8.8': dependencies: - '@types/react': 18.3.18 + '@types/react': 19.1.2 '@types/react@18.3.18': dependencies: '@types/prop-types': 15.7.14 csstype: 3.1.3 + '@types/react@19.0.12': + dependencies: + csstype: 3.1.3 + + '@types/react@19.1.2': + dependencies: + csstype: 3.1.3 + '@types/resolve@1.20.6': {} '@types/semver@7.5.8': {} @@ -9789,12 +11467,12 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.13.10 + '@types/node': 22.13.14 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.13.10 + '@types/node': 22.13.14 '@types/send': 0.17.4 '@types/statuses@2.0.5': {} @@ -9803,6 +11481,8 @@ snapshots: '@types/unist@2.0.11': {} + '@types/unist@3.0.3': {} + '@types/uuid@9.0.8': {} '@types/yargs-parser@21.0.3': {} @@ -9815,29 +11495,183 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@vitejs/plugin-react@3.1.0(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0))': + '@typescript-eslint/eslint-plugin@8.30.1(@typescript-eslint/parser@8.30.1(eslint@9.24.0)(typescript@5.8.3))(eslint@9.24.0)(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.30.1(eslint@9.24.0)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.30.1 + '@typescript-eslint/type-utils': 8.30.1(eslint@9.24.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.30.1(eslint@9.24.0)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.30.1 + eslint: 9.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 2.0.1(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.30.1(eslint@9.24.0)(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.30.1 + '@typescript-eslint/types': 8.30.1 + '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.30.1 + debug: 4.4.0 + eslint: 9.24.0 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.23.0': + dependencies: + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/visitor-keys': 8.23.0 + + '@typescript-eslint/scope-manager@8.30.1': + dependencies: + '@typescript-eslint/types': 8.30.1 + '@typescript-eslint/visitor-keys': 8.30.1 + + '@typescript-eslint/type-utils@8.30.1(eslint@9.24.0)(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.30.1(eslint@9.24.0)(typescript@5.8.3) + debug: 4.4.0 + eslint: 9.24.0 + ts-api-utils: 2.0.1(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.23.0': {} + + '@typescript-eslint/types@8.30.1': {} + + '@typescript-eslint/typescript-estree@8.23.0(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/visitor-keys': 8.23.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.0.1(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.30.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.30.1 + '@typescript-eslint/visitor-keys': 8.30.1 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.0.1(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.23.0(eslint@9.24.0)(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.24.0) + '@typescript-eslint/scope-manager': 8.23.0 + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.8.3) + eslint: 9.24.0 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.30.1(eslint@9.24.0)(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.24.0) + '@typescript-eslint/scope-manager': 8.30.1 + '@typescript-eslint/types': 8.30.1 + '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) + eslint: 9.24.0 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.23.0': + dependencies: + '@typescript-eslint/types': 8.23.0 + eslint-visitor-keys: 4.2.0 + + '@typescript-eslint/visitor-keys@8.30.1': + dependencies: + '@typescript-eslint/types': 8.30.1 + eslint-visitor-keys: 4.2.0 + + '@vitejs/plugin-react@3.1.0(vite@6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) magic-string: 0.27.0 react-refresh: 0.14.2 - vite: 6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0) + vite: 6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.3.4(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0))': + '@vitejs/plugin-react@4.3.4(vite@6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0) + vite: 6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.0.8(vitest@3.0.8(@types/debug@4.1.12)(@types/node@22.13.10)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2))(terser@5.39.0)(yaml@2.7.0))': + '@vitejs/plugin-react@4.3.4(vite@6.2.3(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0))': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 6.2.3(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-react@4.4.0(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0))': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@3.0.9(vitest@3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.39.0)(yaml@2.7.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 1.0.2 + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.17 + magicast: 0.3.5 + std-env: 3.8.1 + test-exclude: 7.0.1 + tinyrainbow: 2.0.0 + vitest: 3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.39.0)(yaml@2.7.0) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.4(@types/node@22.13.14)(typescript@5.8.3))(terser@5.39.0)(yaml@2.7.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -9851,48 +11685,121 @@ snapshots: std-env: 3.8.1 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.0.8(@types/debug@4.1.12)(@types/node@22.13.10)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2))(terser@5.39.0)(yaml@2.7.0) + vitest: 3.1.1(@types/debug@4.1.12)(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.4(@types/node@22.13.14)(typescript@5.8.3))(terser@5.39.0)(yaml@2.7.0) transitivePeerDependencies: - supports-color - '@vitest/expect@3.0.8': + '@vitest/expect@2.0.5': + dependencies: + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.2.0 + tinyrainbow: 1.2.0 + + '@vitest/expect@3.0.9': + dependencies: + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 + chai: 5.2.0 + tinyrainbow: 2.0.0 + + '@vitest/expect@3.1.1': dependencies: - '@vitest/spy': 3.0.8 - '@vitest/utils': 3.0.8 + '@vitest/spy': 3.1.1 + '@vitest/utils': 3.1.1 chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.8(msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2))(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0))': + '@vitest/mocker@3.0.9(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0))': dependencies: - '@vitest/spy': 3.0.8 + '@vitest/spy': 3.0.9 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - msw: 2.7.3(@types/node@22.13.10)(typescript@5.8.2) - vite: 6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0) + msw: 2.7.3(@types/node@22.13.14)(typescript@5.8.2) + vite: 6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) - '@vitest/pretty-format@3.0.8': + '@vitest/mocker@3.1.1(msw@2.7.4(@types/node@22.13.14)(typescript@5.8.3))(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0))': + dependencies: + '@vitest/spy': 3.1.1 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + msw: 2.7.4(@types/node@22.13.14)(typescript@5.8.3) + vite: 6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) + + '@vitest/pretty-format@2.0.5': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.1.9': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@3.0.9': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.0.8': + '@vitest/pretty-format@3.1.1': dependencies: - '@vitest/utils': 3.0.8 + tinyrainbow: 2.0.0 + + '@vitest/runner@3.0.9': + dependencies: + '@vitest/utils': 3.0.9 pathe: 2.0.3 - '@vitest/snapshot@3.0.8': + '@vitest/runner@3.1.1': dependencies: - '@vitest/pretty-format': 3.0.8 + '@vitest/utils': 3.1.1 + pathe: 2.0.3 + + '@vitest/snapshot@3.0.9': + dependencies: + '@vitest/pretty-format': 3.0.9 magic-string: 0.30.17 pathe: 2.0.3 - '@vitest/spy@3.0.8': + '@vitest/snapshot@3.1.1': + dependencies: + '@vitest/pretty-format': 3.1.1 + magic-string: 0.30.17 + pathe: 2.0.3 + + '@vitest/spy@2.0.5': dependencies: tinyspy: 3.0.2 - '@vitest/utils@3.0.8': + '@vitest/spy@3.0.9': dependencies: - '@vitest/pretty-format': 3.0.8 + tinyspy: 3.0.2 + + '@vitest/spy@3.1.1': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@2.0.5': + dependencies: + '@vitest/pretty-format': 2.0.5 + estree-walker: 3.0.3 + loupe: 3.1.3 + tinyrainbow: 1.2.0 + + '@vitest/utils@2.1.9': + dependencies: + '@vitest/pretty-format': 2.1.9 + loupe: 3.1.3 + tinyrainbow: 1.2.0 + + '@vitest/utils@3.0.9': + dependencies: + '@vitest/pretty-format': 3.0.9 + loupe: 3.1.3 + tinyrainbow: 2.0.0 + + '@vitest/utils@3.1.1': + dependencies: + '@vitest/pretty-format': 3.1.1 loupe: 3.1.3 tinyrainbow: 2.0.0 @@ -10018,6 +11925,10 @@ snapshots: dependencies: acorn: 7.4.1 + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + acorn-walk@7.2.0: {} acorn@7.4.1: {} @@ -10046,6 +11957,13 @@ snapshots: ajv: 8.17.1 fast-deep-equal: 3.1.3 + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -10059,6 +11977,10 @@ snapshots: dependencies: type-fest: 0.21.3 + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} @@ -10071,6 +11993,8 @@ snapshots: ansi-styles@6.2.1: {} + any-promise@1.3.0: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -10255,7 +12179,7 @@ snapshots: dependencies: fill-range: 7.1.1 - braintree-web@3.116.3: + braintree-web@3.117.1: dependencies: '@braintree/asset-loader': 2.0.2 '@braintree/browser-detection': 2.0.2 @@ -10299,6 +12223,11 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + bundle-require@5.1.0(esbuild@0.25.1): + dependencies: + esbuild: 0.25.1 + load-tsconfig: 0.2.5 + byte-size@8.1.1: {} bytes@3.1.2: {} @@ -10363,6 +12292,11 @@ snapshots: loupe: 3.1.3 pathval: 2.0.0 + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chalk@4.1.0: dependencies: ansi-styles: 4.3.0 @@ -10373,6 +12307,10 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.4.1: {} + + char-regex@1.0.2: {} + character-entities@2.0.2: {} chardet@0.7.0: {} @@ -10391,10 +12329,16 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chokidar@4.0.3: + dependencies: + readdirp: 4.1.1 + chownr@1.1.4: {} chownr@2.0.0: {} + chromatic@11.25.2: {} + chrome-trace-event@1.0.4: {} ci-info@3.9.0: {} @@ -10405,6 +12349,8 @@ snapshots: dependencies: consola: 3.4.0 + cjs-module-lexer@1.4.3: {} + classnames@2.5.1: {} clean-stack@2.2.0: {} @@ -10413,6 +12359,15 @@ snapshots: dependencies: restore-cursor: 3.1.0 + cli-highlight@2.1.11: + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + cli-spinners@2.6.1: {} cli-spinners@2.9.2: {} @@ -10466,10 +12421,14 @@ snapshots: dependencies: delayed-stream: 1.0.0 + commander@10.0.1: {} + commander@11.1.0: {} commander@2.20.3: {} + commander@4.1.1: {} + commander@6.2.1: {} commander@9.5.0: {} @@ -10595,14 +12554,14 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig@9.0.0(typescript@5.8.2): + cosmiconfig@9.0.0(typescript@5.8.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.8.2 + typescript: 5.8.3 credit-card-type@10.0.2: {} @@ -10614,6 +12573,8 @@ snapshots: crypto-random-string@2.0.0: {} + css.escape@1.5.1: {} + cssesc@3.0.0: {} cssstyle@4.3.0: @@ -10678,6 +12639,8 @@ snapshots: which-collection: 1.0.2 which-typed-array: 1.1.19 + deep-is@0.1.4: {} + default-browser-id@3.0.0: dependencies: bplist-parser: 0.2.0 @@ -10741,6 +12704,10 @@ snapshots: transitivePeerDependencies: - supports-color + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + diff-sequences@29.6.3: {} diff@5.2.0: {} @@ -10755,6 +12722,8 @@ snapshots: dom-accessibility-api@0.5.16: {} + dom-accessibility-api@0.6.3: {} + dot-prop@5.3.0: dependencies: is-obj: 2.0.0 @@ -10798,6 +12767,8 @@ snapshots: emoji-regex@9.2.2: {} + emojilib@2.4.0: {} + encodeurl@1.0.2: {} encodeurl@2.0.0: {} @@ -10833,6 +12804,8 @@ snapshots: envinfo@7.14.0: {} + environment@1.1.0: {} + err-code@2.0.3: {} error-ex@1.3.2: @@ -10879,6 +12852,13 @@ snapshots: transitivePeerDependencies: - supports-color + esbuild-register@3.6.0(esbuild@0.25.1): + dependencies: + debug: 4.4.0 + esbuild: 0.25.1 + transitivePeerDependencies: + - supports-color + esbuild@0.18.20: optionalDependencies: '@esbuild/android-arm': 0.18.20 @@ -10938,6 +12918,8 @@ snapshots: escape-string-regexp@1.0.5: {} + escape-string-regexp@4.0.0: {} + escape-string-regexp@5.0.0: {} escodegen@2.1.0: @@ -10948,13 +12930,90 @@ snapshots: optionalDependencies: source-map: 0.6.1 + eslint-plugin-react-hooks@5.2.0(eslint@9.24.0): + dependencies: + eslint: 9.24.0 + + eslint-plugin-react-refresh@0.4.19(eslint@9.24.0): + dependencies: + eslint: 9.24.0 + + eslint-plugin-storybook@0.12.0(eslint@9.24.0)(typescript@5.8.3): + dependencies: + '@storybook/csf': 0.1.13 + '@typescript-eslint/utils': 8.23.0(eslint@9.24.0)(typescript@5.8.3) + eslint: 9.24.0 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + - typescript + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.24.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.24.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.0 + '@eslint/config-helpers': 0.2.0 + '@eslint/core': 0.12.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.24.0 + '@eslint/plugin-kit': 0.2.7 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.2 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + esprima@4.0.1: {} + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 @@ -10980,9 +13039,9 @@ snapshots: execa@5.0.0: dependencies: cross-spawn: 7.0.6 - get-stream: 6.0.0 + get-stream: 6.0.1 human-signals: 2.1.0 - is-stream: 2.0.0 + is-stream: 2.0.1 merge-stream: 2.0.0 npm-run-path: 4.0.1 onetime: 5.1.2 @@ -11070,6 +13129,8 @@ snapshots: fast-json-stable-stringify@2.1.0: {} + fast-levenshtein@2.0.6: {} + fast-uri@3.0.6: {} fastq@1.19.1: @@ -11084,12 +13145,22 @@ snapshots: dependencies: pend: 1.2.0 + fdir@6.4.3(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + fetch-retry@5.0.6: {} + fflate@0.8.2: {} + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + file-system-cache@2.3.0: dependencies: fs-extra: 11.1.1 @@ -11099,6 +13170,8 @@ snapshots: dependencies: minimatch: 5.1.6 + filesize@10.1.6: {} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -11155,8 +13228,15 @@ snapshots: locate-path: 7.2.0 path-exists: 5.0.0 + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + flat@5.0.2: {} + flatted@3.3.3: {} + flow-parser@0.265.2: {} follow-redirects@1.15.9: {} @@ -11183,11 +13263,11 @@ snapshots: dependencies: '@braintree/uuid': 1.0.1 - frames-react@1.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.35.0)(typescript@5.8.2): + frames-react@1.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.35.0)(typescript@5.8.2): dependencies: classnames: 2.5.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) rollup-plugin-typescript2: 0.36.0(rollup@4.35.0)(typescript@5.8.2) tslib: 2.8.1 transitivePeerDependencies: @@ -11364,6 +13444,10 @@ snapshots: globals@11.12.0: {} + globals@14.0.0: {} + + globals@16.0.0: {} + globby@11.1.0: dependencies: array-union: 2.1.0 @@ -11379,6 +13463,8 @@ snapshots: graceful-fs@4.2.11: {} + graphemer@1.4.0: {} + graphql@16.10.0: {} gunzip-maybe@1.4.2: @@ -11423,6 +13509,8 @@ snapshots: headers-polyfill@4.0.3: {} + highlight.js@10.7.3: {} + hosted-git-info@2.8.9: {} hosted-git-info@4.1.0: @@ -11773,13 +13861,13 @@ snapshots: jake@10.9.2: dependencies: async: 3.2.6 - chalk: 4.1.0 + chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 jest-diff@29.7.0: dependencies: - chalk: 4.1.0 + chalk: 4.1.2 diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 @@ -11790,7 +13878,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.13.10 + '@types/node': 22.13.14 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -11805,14 +13893,14 @@ snapshots: jest-mock@27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 22.13.10 + '@types/node': 22.13.14 jest-regex-util@29.6.3: {} jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.13.10 + '@types/node': 22.13.14 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -11820,17 +13908,19 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.14 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.14 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 + joycon@3.1.1: {} + js-cookie@3.0.5: {} js-tokens@4.0.0: {} @@ -11865,7 +13955,7 @@ snapshots: micromatch: 4.0.8 neo-async: 2.6.2 node-dir: 0.1.17 - recast: 0.23.11 + recast: 0.23.9 temp: 0.8.4 write-file-atomic: 2.4.3 optionalDependencies: @@ -11873,6 +13963,8 @@ snapshots: transitivePeerDependencies: - supports-color + jsdoc-type-pratt-parser@4.1.0: {} + jsdom@26.0.0: dependencies: cssstyle: 4.3.0 @@ -11905,14 +13997,20 @@ snapshots: jsesc@3.1.0: {} + json-buffer@3.0.1: {} + json-parse-better-errors@1.0.2: {} json-parse-even-better-errors@2.3.1: {} json-parse-even-better-errors@3.0.2: {} + json-schema-traverse@0.4.1: {} + json-schema-traverse@1.0.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} + json-stringify-nice@1.1.4: {} json-stringify-safe@5.0.1: {} @@ -11935,6 +14033,10 @@ snapshots: jwt-decode@4.0.0: {} + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + kind-of@6.0.3: {} kleur@3.0.3: {} @@ -11947,9 +14049,9 @@ snapshots: dotenv: 16.4.7 dotenv-expand: 10.0.0 - lerna@8.2.1(encoding@0.1.13): + lerna@8.2.2(encoding@0.1.13): dependencies: - '@lerna/create': 8.2.1(encoding@0.1.13)(typescript@5.8.2) + '@lerna/create': 8.2.2(encoding@0.1.13)(typescript@5.8.3) '@npmcli/arborist': 7.5.4 '@npmcli/package-json': 5.2.0 '@npmcli/run-script': 8.1.0 @@ -11967,7 +14069,7 @@ snapshots: conventional-changelog-angular: 7.0.0 conventional-changelog-core: 5.0.1 conventional-recommended-bump: 7.0.1 - cosmiconfig: 9.0.0(typescript@5.8.2) + cosmiconfig: 9.0.0(typescript@5.8.3) dedent: 1.5.3 envinfo: 7.13.0 execa: 5.0.0 @@ -12019,7 +14121,7 @@ snapshots: strong-log-transformer: 2.1.0 tar: 6.2.1 temp-dir: 1.0.0 - typescript: 5.8.2 + typescript: 5.8.3 upath: 2.0.1 uuid: 10.0.0 validate-npm-package-license: 3.0.4 @@ -12040,6 +14142,11 @@ snapshots: leven@3.1.0: {} + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + libnpmaccess@8.0.6: dependencies: npm-package-arg: 11.0.2 @@ -12060,6 +14167,8 @@ snapshots: transitivePeerDependencies: - supports-color + lilconfig@3.1.3: {} + lines-and-columns@1.2.4: {} lines-and-columns@2.0.3: {} @@ -12078,6 +14187,8 @@ snapshots: strip-bom: 4.0.0 type-fest: 0.6.0 + load-tsconfig@0.2.5: {} + loader-runner@4.3.0: {} locate-path@2.0.0: @@ -12106,6 +14217,10 @@ snapshots: lodash.ismatch@4.4.0: {} + lodash.merge@4.6.2: {} + + lodash.sortby@4.7.0: {} + lodash@4.17.21: {} log-symbols@4.1.0: @@ -12193,6 +14308,19 @@ snapshots: dependencies: react: 18.3.1 + marked-terminal@7.3.0(marked@9.1.6): + dependencies: + ansi-escapes: 7.0.0 + ansi-regex: 6.1.0 + chalk: 5.4.1 + cli-highlight: 2.1.11 + cli-table3: 0.6.5 + marked: 9.1.6 + node-emoji: 2.2.0 + supports-hyperlinks: 3.2.0 + + marked@9.1.6: {} + math-intrinsics@1.1.0: {} mdast-util-definitions@4.0.0: @@ -12206,6 +14334,13 @@ snapshots: unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + mdast-util-from-markdown@1.3.1: dependencies: '@types/mdast': 3.0.15 @@ -12223,6 +14358,23 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + mdast-util-gfm-autolink-literal@1.0.3: dependencies: '@types/mdast': 3.0.15 @@ -12230,17 +14382,43 @@ snapshots: mdast-util-find-and-replace: 2.2.2 micromark-util-character: 1.2.0 + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + mdast-util-gfm-footnote@1.0.2: dependencies: '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 micromark-util-normalize-identifier: 1.1.0 + mdast-util-gfm-footnote@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + mdast-util-gfm-strikethrough@1.0.3: dependencies: '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + mdast-util-gfm-table@1.0.7: dependencies: '@types/mdast': 3.0.15 @@ -12250,11 +14428,30 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + mdast-util-gfm-task-list-item@1.0.2: dependencies: '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + mdast-util-gfm@2.0.2: dependencies: mdast-util-from-markdown: 1.3.1 @@ -12267,11 +14464,28 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-gfm@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + mdast-util-phrasing@3.0.1: dependencies: '@types/mdast': 3.0.15 unist-util-is: 5.2.1 + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + mdast-util-to-markdown@1.5.0: dependencies: '@types/mdast': 3.0.15 @@ -12283,12 +14497,28 @@ snapshots: unist-util-visit: 4.1.2 zwitch: 2.0.4 + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + mdast-util-to-string@1.1.0: {} mdast-util-to-string@3.2.0: dependencies: '@types/mdast': 3.0.15 + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + media-typer@0.3.0: {} memoizerific@1.11.3: @@ -12340,6 +14570,25 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-core-commonmark@2.0.2: + dependencies: + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.0.4 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + micromark-extension-gfm-autolink-literal@1.0.5: dependencies: micromark-util-character: 1.2.0 @@ -12347,6 +14596,13 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + micromark-extension-gfm-footnote@1.1.2: dependencies: micromark-core-commonmark: 1.1.0 @@ -12358,6 +14614,17 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.2 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + micromark-extension-gfm-strikethrough@1.0.7: dependencies: micromark-util-chunked: 1.1.0 @@ -12367,6 +14634,15 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + micromark-extension-gfm-table@1.0.7: dependencies: micromark-factory-space: 1.1.0 @@ -12375,10 +14651,22 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + micromark-extension-gfm-tagfilter@1.0.2: dependencies: micromark-util-types: 1.1.0 + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.1 + micromark-extension-gfm-task-list-item@1.0.5: dependencies: micromark-factory-space: 1.1.0 @@ -12387,6 +14675,14 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + micromark-extension-gfm@2.0.3: dependencies: micromark-extension-gfm-autolink-literal: 1.0.5 @@ -12398,12 +14694,29 @@ snapshots: micromark-util-combine-extensions: 1.1.0 micromark-util-types: 1.1.0 + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.1 + micromark-factory-destination@1.1.0: dependencies: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + micromark-factory-label@1.1.0: dependencies: micromark-util-character: 1.2.0 @@ -12411,11 +14724,23 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + micromark-factory-space@1.1.0: dependencies: micromark-util-character: 1.2.0 micromark-util-types: 1.1.0 + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.1 + micromark-factory-title@1.1.0: dependencies: micromark-factory-space: 1.1.0 @@ -12423,6 +14748,13 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + micromark-factory-whitespace@1.1.0: dependencies: micromark-factory-space: 1.1.0 @@ -12430,30 +14762,61 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + micromark-util-character@1.2.0: dependencies: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + micromark-util-chunked@1.1.0: dependencies: micromark-util-symbol: 1.1.0 + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-classify-character@1.1.0: dependencies: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + micromark-util-combine-extensions@1.1.0: dependencies: micromark-util-chunked: 1.1.0 micromark-util-types: 1.1.0 + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.1 + micromark-util-decode-numeric-character-reference@1.1.0: dependencies: micromark-util-symbol: 1.1.0 + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-decode-string@1.1.0: dependencies: decode-named-character-reference: 1.1.0 @@ -12461,24 +14824,49 @@ snapshots: micromark-util-decode-numeric-character-reference: 1.1.0 micromark-util-symbol: 1.1.0 + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + micromark-util-encode@1.1.0: {} + micromark-util-encode@2.0.1: {} + micromark-util-html-tag-name@1.2.0: {} + micromark-util-html-tag-name@2.0.1: {} + micromark-util-normalize-identifier@1.1.0: dependencies: micromark-util-symbol: 1.1.0 + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-resolve-all@1.1.0: dependencies: micromark-util-types: 1.1.0 + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.1 + micromark-util-sanitize-uri@1.2.0: dependencies: micromark-util-character: 1.2.0 micromark-util-encode: 1.1.0 micromark-util-symbol: 1.1.0 + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-subtokenize@1.1.0: dependencies: micromark-util-chunked: 1.1.0 @@ -12486,10 +14874,21 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-util-subtokenize@2.0.4: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + micromark-util-symbol@1.1.0: {} + micromark-util-symbol@2.0.1: {} + micromark-util-types@1.1.0: {} + micromark-util-types@2.0.1: {} + micromark@3.2.0: dependencies: '@types/debug': 4.1.12 @@ -12512,6 +14911,28 @@ snapshots: transitivePeerDependencies: - supports-color + micromark@4.0.1: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.0 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.2 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.0.4 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + transitivePeerDependencies: + - supports-color + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -12637,13 +15058,13 @@ snapshots: ms@2.1.3: {} - msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2): + msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.8(@types/node@22.13.10) - '@mswjs/interceptors': 0.37.6 + '@inquirer/confirm': 5.1.8(@types/node@22.13.14) + '@mswjs/interceptors': 0.37.3 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 '@types/cookie': 0.6.0 @@ -12662,13 +15083,38 @@ snapshots: transitivePeerDependencies: - '@types/node' + msw@2.7.4(@types/node@22.13.14)(typescript@5.8.3): + dependencies: + '@bundled-es-modules/cookie': 2.0.1 + '@bundled-es-modules/statuses': 1.0.1 + '@bundled-es-modules/tough-cookie': 0.1.6 + '@inquirer/confirm': 5.1.8(@types/node@22.13.14) + '@mswjs/interceptors': 0.37.3 + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/until': 2.1.0 + '@types/cookie': 0.6.0 + '@types/statuses': 2.0.5 + graphql: 16.10.0 + headers-polyfill: 4.0.3 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.3.0 + picocolors: 1.1.1 + strict-event-emitter: 0.5.1 + type-fest: 4.37.0 + yargs: 17.7.2 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - '@types/node' + multimatch@5.0.0: dependencies: '@types/minimatch': 3.0.5 array-differ: 3.0.0 array-union: 2.1.0 arrify: 2.0.1 - minimatch: 3.0.5 + minimatch: 3.1.2 mute-stream@0.0.8: {} @@ -12678,7 +15124,15 @@ snapshots: mylas@2.1.13: {} - nanoid@3.3.10: {} + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.8: {} + + natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -12690,6 +15144,13 @@ snapshots: dependencies: minimatch: 3.1.2 + node-emoji@2.2.0: + dependencies: + '@sindresorhus/is': 4.6.0 + char-regex: 1.0.2 + emojilib: 2.4.0 + skin-tone: 2.0.0 + node-fetch-native@1.6.6: {} node-fetch@2.6.7(encoding@0.1.13): @@ -12805,7 +15266,7 @@ snapshots: '@yarnpkg/parsers': 3.0.2 '@zkochan/js-yaml': 0.0.7 axios: 1.8.3 - chalk: 4.1.0 + chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 cliui: 8.0.1 @@ -12897,12 +15358,21 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + ora@5.3.0: dependencies: bl: 4.1.0 - chalk: 4.1.0 + chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.6.1 + cli-spinners: 2.9.2 is-interactive: 1.0.0 log-symbols: 4.1.0 strip-ansi: 6.0.1 @@ -13046,6 +15516,14 @@ snapshots: dependencies: parse-path: 7.0.1 + parse5-htmlparser2-tree-adapter@6.0.1: + dependencies: + parse5: 6.0.1 + + parse5@5.1.1: {} + + parse5@6.0.1: {} + parse5@7.2.1: dependencies: entities: 4.5.0 @@ -13129,11 +15607,11 @@ snapshots: mlly: 1.7.4 pathe: 2.0.3 - playwright-core@1.51.0: {} + playwright-core@1.51.1: {} - playwright@1.51.0: + playwright@1.51.1: dependencies: - playwright-core: 1.51.0 + playwright-core: 1.51.1 optionalDependencies: fsevents: 2.3.2 @@ -13147,6 +15625,13 @@ snapshots: possible-typed-array-names@1.1.0: {} + postcss-load-config@6.0.1(postcss@8.5.3)(yaml@2.7.0): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + postcss: 8.5.3 + yaml: 2.7.0 + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 @@ -13154,12 +15639,14 @@ snapshots: postcss@8.5.3: dependencies: - nanoid: 3.3.10 + nanoid: 3.3.8 picocolors: 1.1.1 source-map-js: 1.2.1 preact@10.22.1: {} + prelude-ls@1.2.1: {} + prettier@2.8.8: {} pretty-bytes@6.1.1: {} @@ -13290,7 +15777,11 @@ snapshots: range-parser@1.2.1: {} - rapid-form@2.1.0: {} + rapid-form@3.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@example/basics': link:../../../../alessandrocasazza/Documents/GitHub/okeo-academy + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) raw-body@2.5.2: dependencies: @@ -13304,11 +15795,20 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + react-confetti@6.2.2(react@19.1.0): + dependencies: + react: 19.1.0 + tween-functions: 1.2.0 + react-docgen-typescript@2.2.2(typescript@5.8.2): dependencies: typescript: 5.8.2 - react-docgen@7.1.1: + react-docgen-typescript@2.2.2(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + react-docgen@7.1.0: dependencies: '@babel/core': 7.26.10 '@babel/traverse': 7.26.10 @@ -13329,6 +15829,16 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 + react-dom@19.0.0(react@19.0.0): + dependencies: + react: 19.0.0 + scheduler: 0.25.0 + + react-dom@19.1.0(react@19.1.0): + dependencies: + react: 19.1.0 + scheduler: 0.26.0 + react-element-to-jsx-string@15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@base2/pretty-print-object': 1.0.1 @@ -13345,8 +15855,12 @@ snapshots: react-is@18.3.1: {} + react-is@19.0.0: {} + react-refresh@0.14.2: {} + react-refresh@0.17.0: {} + react-remove-scroll-bar@2.3.8(@types/react@18.3.18)(react@18.3.1): dependencies: react: 18.3.1 @@ -13366,12 +15880,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.18 - react-shallow-renderer@16.15.0(react@18.3.1): - dependencies: - object-assign: 4.1.1 - react: 18.3.1 - react-is: 18.3.1 - react-style-singleton@2.2.3(@types/react@18.3.18)(react@18.3.1): dependencies: get-nonce: 1.0.1 @@ -13380,17 +15888,20 @@ snapshots: optionalDependencies: '@types/react': 18.3.18 - react-test-renderer@18.3.1(react@18.3.1): + react-test-renderer@19.0.0(react@19.0.0): dependencies: - react: 18.3.1 - react-is: 18.3.1 - react-shallow-renderer: 16.15.0(react@18.3.1) - scheduler: 0.23.2 + react: 19.0.0 + react-is: 19.0.0 + scheduler: 0.25.0 react@18.3.1: dependencies: loose-envify: 1.4.0 + react@19.0.0: {} + + react@19.1.0: {} + read-cmd-shim@4.0.0: {} read-package-json-fast@3.0.2: @@ -13446,7 +15957,9 @@ snapshots: dependencies: picomatch: 2.3.1 - recast@0.23.11: + readdirp@4.1.1: {} + + recast@0.23.9: dependencies: ast-types: 0.16.1 esprima: 4.0.1 @@ -13512,12 +16025,38 @@ snapshots: transitivePeerDependencies: - supports-color + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.1 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + remark-slug@6.1.0: dependencies: github-slugger: 1.5.0 mdast-util-to-string: 1.1.0 unist-util-visit: 2.0.3 + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -13644,6 +16183,10 @@ snapshots: dependencies: loose-envify: 1.4.0 + scheduler@0.25.0: {} + + scheduler@0.26.0: {} + schema-utils@4.3.0: dependencies: '@types/json-schema': 7.0.15 @@ -13765,6 +16308,10 @@ snapshots: sisteransi@1.0.5: {} + skin-tone@2.0.0: + dependencies: + unicode-emoji-modifier-base: 1.0.0 + slash@3.0.0: {} smart-buffer@4.2.0: {} @@ -13795,6 +16342,10 @@ snapshots: source-map@0.6.1: {} + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + space-separated-tokens@1.1.5: {} spdx-correct@3.2.0: @@ -13849,6 +16400,16 @@ snapshots: - supports-color - utf-8-validate + storybook@8.6.12(prettier@2.8.8): + dependencies: + '@storybook/core': 8.6.12(prettier@2.8.8)(storybook@8.6.12(prettier@2.8.8)) + optionalDependencies: + prettier: 2.8.8 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + stream-shift@1.0.3: {} strict-event-emitter@0.5.1: {} @@ -13903,6 +16464,16 @@ snapshots: minimist: 1.2.8 through: 2.3.8 + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -13911,6 +16482,11 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-hyperlinks@3.2.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} symbol-tree@3.2.4: {} @@ -13995,6 +16571,14 @@ snapshots: text-extensions@1.9.0: {} + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + through2@2.0.5: dependencies: readable-stream: 2.3.8 @@ -14008,8 +16592,15 @@ snapshots: tinyexec@0.3.2: {} + tinyglobby@0.2.12: + dependencies: + fdir: 6.4.3(picomatch@4.0.2) + picomatch: 4.0.2 + tinypool@1.0.2: {} + tinyrainbow@1.2.0: {} + tinyrainbow@2.0.0: {} tinyspy@3.0.2: {} @@ -14049,18 +16640,30 @@ snapshots: tr46@0.0.3: {} + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + tr46@5.1.0: dependencies: punycode: 2.3.1 + tree-kill@1.2.2: {} + treeverse@3.0.0: {} trim-newlines@3.0.1: {} trough@2.2.0: {} + ts-api-utils@2.0.1(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + ts-dedent@2.2.0: {} + ts-interface-checker@0.1.13: {} + tsc-alias@1.8.11: dependencies: chokidar: 3.6.0 @@ -14074,6 +16677,10 @@ snapshots: optionalDependencies: typescript: 5.8.2 + tsconfck@3.1.5(typescript@5.8.3): + optionalDependencies: + typescript: 5.8.3 + tsconfig-paths@4.2.0: dependencies: json5: 2.2.3 @@ -14084,6 +16691,33 @@ snapshots: tslib@2.8.1: {} + tsup@8.4.0(postcss@8.5.3)(typescript@5.8.3)(yaml@2.7.0): + dependencies: + bundle-require: 5.1.0(esbuild@0.25.1) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.0 + debug: 4.4.0 + esbuild: 0.25.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(postcss@8.5.3)(yaml@2.7.0) + resolve-from: 5.0.0 + rollup: 4.35.0 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.12 + tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.5.3 + typescript: 5.8.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + tuf-js@2.2.1: dependencies: '@tufjs/models': 2.0.1 @@ -14092,6 +16726,12 @@ snapshots: transitivePeerDependencies: - supports-color + tween-functions@1.2.0: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + type-fest@0.16.0: {} type-fest@0.18.1: {} @@ -14115,10 +16755,24 @@ snapshots: typedarray@0.0.6: {} + typescript-eslint@8.30.1(eslint@9.24.0)(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.30.1(@typescript-eslint/parser@8.30.1(eslint@9.24.0)(typescript@5.8.3))(eslint@9.24.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.30.1(eslint@9.24.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.30.1(eslint@9.24.0)(typescript@5.8.3) + eslint: 9.24.0 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + typescript@4.9.5: {} + typescript@5.6.1-rc: {} + typescript@5.8.2: {} + typescript@5.8.3: {} + ufo@1.5.4: {} uglify-js@3.19.3: @@ -14130,6 +16784,8 @@ snapshots: unicode-canonical-property-names-ecmascript@2.0.1: {} + unicode-emoji-modifier-base@1.0.0: {} + unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.1 @@ -14149,6 +16805,16 @@ snapshots: trough: 2.2.0 vfile: 5.3.7 + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + unique-filename@3.0.0: dependencies: unique-slug: 4.0.0 @@ -14167,10 +16833,18 @@ snapshots: dependencies: '@types/unist': 2.0.11 + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position@3.0.3: dependencies: '@types/unist': 2.0.11 + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit-parents@3.1.1: dependencies: '@types/unist': 2.0.11 @@ -14181,6 +16855,11 @@ snapshots: '@types/unist': 2.0.11 unist-util-is: 5.2.1 + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit@2.0.3: dependencies: '@types/unist': 2.0.11 @@ -14193,6 +16872,12 @@ snapshots: unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + universal-user-agent@6.0.1: {} universalify@0.2.0: {} @@ -14216,6 +16901,10 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + url-parse@1.5.10: dependencies: querystringify: 2.2.0 @@ -14279,6 +16968,11 @@ snapshots: '@types/unist': 2.0.11 unist-util-stringify-position: 3.0.3 + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + vfile@5.3.7: dependencies: '@types/unist': 2.0.11 @@ -14286,13 +16980,39 @@ snapshots: unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 - vite-node@3.0.8(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0): + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + + vite-node@3.0.9(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 2.0.3 + vite: 6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite-node@3.1.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0) + vite: 6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) transitivePeerDependencies: - '@types/node' - jiti @@ -14307,37 +17027,124 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0)): + vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)): + dependencies: + debug: 4.4.0 + globrex: 0.1.2 + tsconfck: 3.1.5(typescript@5.8.2) + optionalDependencies: + vite: 6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) + transitivePeerDependencies: + - supports-color + - typescript + + vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)): dependencies: debug: 4.4.0 globrex: 0.1.2 tsconfck: 3.1.5(typescript@5.8.2) optionalDependencies: - vite: 6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) + transitivePeerDependencies: + - supports-color + - typescript + + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)): + dependencies: + debug: 4.4.0 + globrex: 0.1.2 + tsconfck: 3.1.5(typescript@5.8.3) + optionalDependencies: + vite: 6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) transitivePeerDependencies: - supports-color - typescript - vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0): + vite@6.2.2(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0): + dependencies: + esbuild: 0.25.1 + postcss: 8.5.3 + rollup: 4.35.0 + optionalDependencies: + '@types/node': 22.13.14 + fsevents: 2.3.3 + terser: 5.39.0 + yaml: 2.7.0 + + vite@6.2.3(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0): + dependencies: + esbuild: 0.25.1 + postcss: 8.5.3 + rollup: 4.35.0 + optionalDependencies: + '@types/node': 22.13.14 + fsevents: 2.3.3 + terser: 5.39.0 + yaml: 2.7.0 + + vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0): dependencies: esbuild: 0.25.1 + fdir: 6.4.3(picomatch@4.0.2) + picomatch: 4.0.2 postcss: 8.5.3 rollup: 4.35.0 + tinyglobby: 0.2.12 optionalDependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.14 fsevents: 2.3.3 terser: 5.39.0 yaml: 2.7.0 - vitest@3.0.8(@types/debug@4.1.12)(@types/node@22.13.10)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2))(terser@5.39.0)(yaml@2.7.0): + vitest@3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.39.0)(yaml@2.7.0): + dependencies: + '@vitest/expect': 3.0.9 + '@vitest/mocker': 3.0.9(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) + '@vitest/pretty-format': 3.0.9 + '@vitest/runner': 3.0.9 + '@vitest/snapshot': 3.0.9 + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.2.0 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.8.1 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) + vite-node: 3.0.9(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 22.13.14 + jsdom: 26.0.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.4(@types/node@22.13.14)(typescript@5.8.3))(terser@5.39.0)(yaml@2.7.0): dependencies: - '@vitest/expect': 3.0.8 - '@vitest/mocker': 3.0.8(msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2))(vite@6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0)) - '@vitest/pretty-format': 3.0.8 - '@vitest/runner': 3.0.8 - '@vitest/snapshot': 3.0.8 - '@vitest/spy': 3.0.8 - '@vitest/utils': 3.0.8 + '@vitest/expect': 3.1.1 + '@vitest/mocker': 3.1.1(msw@2.7.4(@types/node@22.13.14)(typescript@5.8.3))(vite@6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0)) + '@vitest/pretty-format': 3.1.1 + '@vitest/runner': 3.1.1 + '@vitest/snapshot': 3.1.1 + '@vitest/spy': 3.1.1 + '@vitest/utils': 3.1.1 chai: 5.2.0 debug: 4.4.0 expect-type: 1.2.0 @@ -14348,12 +17155,12 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.2.2(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0) - vite-node: 3.0.8(@types/node@22.13.10)(terser@5.39.0)(yaml@2.7.0) + vite: 6.3.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) + vite-node: 3.1.1(@types/node@22.13.14)(terser@5.39.0)(yaml@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 22.13.10 + '@types/node': 22.13.14 jsdom: 26.0.0 transitivePeerDependencies: - jiti @@ -14390,6 +17197,8 @@ snapshots: webidl-conversions@3.0.1: {} + webidl-conversions@4.0.2: {} + webidl-conversions@7.0.0: {} webpack-sources@3.2.3: {} @@ -14442,6 +17251,12 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -14484,6 +17299,8 @@ snapshots: dependencies: string-width: 4.2.3 + word-wrap@1.2.5: {} + wordwrap@1.0.0: {} wrap-ansi@6.2.0: diff --git a/vitest.workspace.ts b/vitest.workspace.ts new file mode 100644 index 00000000..cbf98059 --- /dev/null +++ b/vitest.workspace.ts @@ -0,0 +1,3 @@ +import { defineWorkspace } from "vitest/config" + +export default defineWorkspace(["packages/*"])