From 7ca39b3b83951705dba1274315a9320b40de6257 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 10:40:33 -0700 Subject: [PATCH 001/211] feat: add tailwindcss dependencies to cursorless-org-docs - @tailwindcss/postcss - postcss - tailwindcss --- packages/cursorless-org-docs/package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/cursorless-org-docs/package.json b/packages/cursorless-org-docs/package.json index 5c1c7bb41f..14e8cf28cd 100644 --- a/packages/cursorless-org-docs/package.json +++ b/packages/cursorless-org-docs/package.json @@ -61,6 +61,9 @@ "@tsconfig/docusaurus": "2.0.3", "@types/mdast": "4.0.4", "@types/react": "19.1.6", + "@tailwindcss/postcss": "4.1.8", + "postcss": "8.4.47", + "tailwindcss": "3.4.14", "typescript": "5.8.3", "unified": "11.0.5" } From d2ad48a0dc310d375772b3bd896b446406587e31 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 10:42:31 -0700 Subject: [PATCH 002/211] chore: Duplicate tailwind.config from cursorless-org --- .../cursorless-org-docs/tailwind.config.js | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 packages/cursorless-org-docs/tailwind.config.js diff --git a/packages/cursorless-org-docs/tailwind.config.js b/packages/cursorless-org-docs/tailwind.config.js new file mode 100644 index 0000000000..8cfb16243c --- /dev/null +++ b/packages/cursorless-org-docs/tailwind.config.js @@ -0,0 +1,100 @@ +import { fontFamily as _fontFamily } from "tailwindcss/defaultTheme"; +import { join } from "path"; +import { readFileSync } from "fs"; + +const CONTENT_RATIO = 1000 / 814; + +/** + * Returns css strings for width, height, and fontSize that will result in a + * fixed aspect ratio and automaticaly expand to fill the smallest dimension. + * + * Based loosely on https://stackoverflow.com/a/20593342 + * @type {(marginXPct: number, marginYPct: number) => {width: string, height: + * string, fontSize: string}} + */ +function getScalingStrings(marginXPct, marginYPct) { + const widthVw = 100 - marginXPct * 2; + const maxWidth = `calc(${widthVw}vw - var(--safe-area-inset-right) - var(--safe-area-inset-left))`; + const heightVh = 100 - marginYPct * 2; + const maxHeight = `calc(${heightVh}vh - var(--safe-area-inset-bottom) - var(--safe-area-inset-top))`; + const heightFromWidth = `calc(${maxWidth} / ${CONTENT_RATIO})`; + const widthFromHeight = `calc(${maxHeight} * ${CONTENT_RATIO})`; + + return { + width: `min(${maxWidth}, ${widthFromHeight})`, + height: `min(${maxHeight}, ${heightFromWidth})`, + fontSize: `min(calc(${maxWidth} / 100), calc(${widthFromHeight} / 100))`, + }; +} + +const { + width: smallWidth, + height: smallHeight, + fontSize: smallFontSize, +} = getScalingStrings(15.28, 10.255); + +/** + * On screens that have very wide or very tall aspect ratios, we expand closer + * to the narrow dimension, otherwise the content feels small. + */ +const { + width: stretchedWidth, + height: stretchedHeight, + fontSize: stretchedFontSize, +} = getScalingStrings(5, 5); + +const references = JSON.parse( + readFileSync(join(__dirname, "tsconfig.json"), "utf-8"), +).references.map((ref) => ref.path); + +/** @type {import('tailwindcss').Config} */ +export const content = ["./src/**/*.{js,ts,jsx,tsx}"]; +export const theme = { + extend: { + fontFamily: { + mono: ["Inconsolata", ..._fontFamily.mono], + monoWide: ["Inconsolata-SemiExpanded", ..._fontFamily.mono], + }, + width: { + smBase: smallWidth, + stretchedBase: stretchedWidth, + }, + height: { + smBase: smallHeight, + stretchedBase: stretchedHeight, + }, + fontSize: { + smBase: smallFontSize, + stretchedBase: stretchedFontSize, + xs: "1.2em", + lg: "1.8em", + "2xl": "2.4em", + "3xl": "3.6em", + }, + colors: { + salmon: { + 100: "#FFFAF8", + 300: "#F8C9BA", + 400: "#FF9273", + 700: "#372e2a", + 800: "#161110", + 900: "#0A0707", + }, + teal: { + 100: "#F9FFFE", + 200: "#CDFFF9", + 300: "#99FFF3", + 400: "#00907F", + 500: "#47D4C3", + 600: "#0F776B", + 700: "#005349", + 800: "#00443C", + 900: "#00110F", + }, + }, + }, +}; +export const corePlugins = { + preflight: false, +}; +export const plugins = []; From 36e7471cc578649e9b941fd30a6305977692eb66 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 10:43:05 -0700 Subject: [PATCH 003/211] feat: Create postcss for cursorless-org-docs --- packages/cursorless-org-docs/postcss.config.cjs | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 packages/cursorless-org-docs/postcss.config.cjs diff --git a/packages/cursorless-org-docs/postcss.config.cjs b/packages/cursorless-org-docs/postcss.config.cjs new file mode 100644 index 0000000000..12a703d900 --- /dev/null +++ b/packages/cursorless-org-docs/postcss.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; From 44641c847321d90797ceb317dd97b5193a0a78d4 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 10:43:32 -0700 Subject: [PATCH 004/211] feat: Create tailwind plugin for docusaurus in cursorless-org-docs --- .../cursorless-org-docs/src/plugins/tailwind-config.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 packages/cursorless-org-docs/src/plugins/tailwind-config.js diff --git a/packages/cursorless-org-docs/src/plugins/tailwind-config.js b/packages/cursorless-org-docs/src/plugins/tailwind-config.js new file mode 100644 index 0000000000..2effd7d567 --- /dev/null +++ b/packages/cursorless-org-docs/src/plugins/tailwind-config.js @@ -0,0 +1,9 @@ +module.exports = function tailwindPlugin(context, options) { + return { + name: "tailwind-plugin", + configurePostCss(postcssOptions) { + postcssOptions.plugins.push(require("tailwindcss")); + return postcssOptions; + }, + }; +}; From 9beb4b4eb3ac2b18720629cb30156945ef465873 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 10:44:02 -0700 Subject: [PATCH 005/211] feat: Add tailwind directives to custom.css --- packages/cursorless-org-docs/src/css/custom.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/cursorless-org-docs/src/css/custom.css b/packages/cursorless-org-docs/src/css/custom.css index e964fa0baf..6dcbe7ba80 100644 --- a/packages/cursorless-org-docs/src/css/custom.css +++ b/packages/cursorless-org-docs/src/css/custom.css @@ -1,3 +1,7 @@ +@tailwind components; +@tailwind base; +@tailwind utilities; + /* From https://github.com/facebook/docusaurus/blob/cc0bceab9c1678303f6237f5526753edc1b12fc3/website/src/css/custom.css#L70-L86 */ .header-github-link:hover { opacity: 0.6; From 24b37cb66d5b8bc43f2f185eca33e34c848991e9 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 10:44:22 -0700 Subject: [PATCH 006/211] chore: Add tailwind-config as plugin in docusaurus.config --- packages/cursorless-org-docs/docusaurus.config.mts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/cursorless-org-docs/docusaurus.config.mts b/packages/cursorless-org-docs/docusaurus.config.mts index e332156b88..ca2bfd82db 100644 --- a/packages/cursorless-org-docs/docusaurus.config.mts +++ b/packages/cursorless-org-docs/docusaurus.config.mts @@ -146,6 +146,9 @@ const config: Config = { }, ], ], + plugins: [ + "./src/plugins/tailwind-config.js", + ], themeConfig: { navbar: { From d7b763431ab7da01131022c92dee9c61dc7c07a6 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 21:54:11 -0700 Subject: [PATCH 007/211] fix: Remove extraneous objects from talewind.config --- .../cursorless-org-docs/tailwind.config.js | 92 ------------------- 1 file changed, 92 deletions(-) diff --git a/packages/cursorless-org-docs/tailwind.config.js b/packages/cursorless-org-docs/tailwind.config.js index 8cfb16243c..ef134d74ec 100644 --- a/packages/cursorless-org-docs/tailwind.config.js +++ b/packages/cursorless-org-docs/tailwind.config.js @@ -1,99 +1,7 @@ import { fontFamily as _fontFamily } from "tailwindcss/defaultTheme"; -import { join } from "path"; -import { readFileSync } from "fs"; - -const CONTENT_RATIO = 1000 / 814; - -/** - * Returns css strings for width, height, and fontSize that will result in a - * fixed aspect ratio and automaticaly expand to fill the smallest dimension. - * - * Based loosely on https://stackoverflow.com/a/20593342 - * @type {(marginXPct: number, marginYPct: number) => {width: string, height: - * string, fontSize: string}} - */ -function getScalingStrings(marginXPct, marginYPct) { - const widthVw = 100 - marginXPct * 2; - const maxWidth = `calc(${widthVw}vw - var(--safe-area-inset-right) - var(--safe-area-inset-left))`; - const heightVh = 100 - marginYPct * 2; - const maxHeight = `calc(${heightVh}vh - var(--safe-area-inset-bottom) - var(--safe-area-inset-top))`; - const heightFromWidth = `calc(${maxWidth} / ${CONTENT_RATIO})`; - const widthFromHeight = `calc(${maxHeight} * ${CONTENT_RATIO})`; - - return { - width: `min(${maxWidth}, ${widthFromHeight})`, - height: `min(${maxHeight}, ${heightFromWidth})`, - fontSize: `min(calc(${maxWidth} / 100), calc(${widthFromHeight} / 100))`, - }; -} - -const { - width: smallWidth, - height: smallHeight, - fontSize: smallFontSize, -} = getScalingStrings(15.28, 10.255); - -/** - * On screens that have very wide or very tall aspect ratios, we expand closer - * to the narrow dimension, otherwise the content feels small. - */ -const { - width: stretchedWidth, - height: stretchedHeight, - fontSize: stretchedFontSize, -} = getScalingStrings(5, 5); - -const references = JSON.parse( - readFileSync(join(__dirname, "tsconfig.json"), "utf-8"), -).references.map((ref) => ref.path); /** @type {import('tailwindcss').Config} */ export const content = ["./src/**/*.{js,ts,jsx,tsx}"]; -export const theme = { - extend: { - fontFamily: { - mono: ["Inconsolata", ..._fontFamily.mono], - monoWide: ["Inconsolata-SemiExpanded", ..._fontFamily.mono], - }, - width: { - smBase: smallWidth, - stretchedBase: stretchedWidth, - }, - height: { - smBase: smallHeight, - stretchedBase: stretchedHeight, - }, - fontSize: { - smBase: smallFontSize, - stretchedBase: stretchedFontSize, - xs: "1.2em", - lg: "1.8em", - "2xl": "2.4em", - "3xl": "3.6em", - }, - colors: { - salmon: { - 100: "#FFFAF8", - 300: "#F8C9BA", - 400: "#FF9273", - 700: "#372e2a", - 800: "#161110", - 900: "#0A0707", - }, - teal: { - 100: "#F9FFFE", - 200: "#CDFFF9", - 300: "#99FFF3", - 400: "#00907F", - 500: "#47D4C3", - 600: "#0F776B", - 700: "#005349", - 800: "#00443C", - 900: "#00110F", - }, - }, - }, -}; export const corePlugins = { preflight: false, }; From 1e17213677fc8cafaed857b4bd302d79a5735e90 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 21:59:18 -0700 Subject: [PATCH 008/211] chore: Update pnpm-lock --- pnpm-lock.yaml | 515 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 439 insertions(+), 76 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6caf12dc9a..c8ff9c8729 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,10 +24,10 @@ importers: version: 20.17.50 '@typescript-eslint/eslint-plugin': specifier: 8.33.1 - version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3) + version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/parser': specifier: 8.33.1 - version: 8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3) + version: 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) cross-env: specifier: 7.0.3 version: 7.0.3 @@ -36,25 +36,25 @@ importers: version: 0.25.5 eslint: specifier: 9.28.0 - version: 9.28.0(jiti@1.21.6) + version: 9.28.0(jiti@2.4.2) eslint-config-prettier: specifier: 10.1.5 - version: 10.1.5(eslint@9.28.0(jiti@1.21.6)) + version: 10.1.5(eslint@9.28.0(jiti@2.4.2)) eslint-import-resolver-typescript: specifier: 4.4.2 - version: 4.4.2(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@1.21.6)) + version: 4.4.2(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@2.4.2)) eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@1.21.6)) + version: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@2.4.2)) eslint-plugin-mocha: specifier: 10.5.0 - version: 10.5.0(eslint@9.28.0(jiti@1.21.6)) + version: 10.5.0(eslint@9.28.0(jiti@2.4.2)) eslint-plugin-unicorn: specifier: 56.0.1 - version: 56.0.1(eslint@9.28.0(jiti@1.21.6)) + version: 56.0.1(eslint@9.28.0(jiti@2.4.2)) eslint-plugin-unused-imports: specifier: 4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.6)) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2)) prettier: specifier: 3.3.3 version: 3.3.3 @@ -502,10 +502,10 @@ importers: version: 10.4.21(postcss@8.5.4) eslint: specifier: 9.28.0 - version: 9.28.0(jiti@1.21.6) + version: 9.28.0(jiti@2.4.2) eslint-config-next: specifier: 15.3.3 - version: 15.3.3(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3) + version: 15.3.3(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) http-server: specifier: 14.1.1 version: 14.1.1 @@ -573,6 +573,9 @@ importers: '@docusaurus/types': specifier: 3.8.0 version: 3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tailwindcss/postcss': + specifier: 4.1.8 + version: 4.1.8 '@tsconfig/docusaurus': specifier: 2.0.3 version: 2.0.3 @@ -582,6 +585,12 @@ importers: '@types/react': specifier: 19.1.6 version: 19.1.6 + postcss: + specifier: 8.4.47 + version: 8.4.47 + tailwindcss: + specifier: 3.4.14 + version: 3.4.14(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)) typescript: specifier: 5.8.3 version: 5.8.3 @@ -2559,6 +2568,10 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@isaacs/string-locale-compare@1.1.0': resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} @@ -3427,6 +3440,94 @@ packages: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} + '@tailwindcss/node@4.1.8': + resolution: {integrity: sha512-OWwBsbC9BFAJelmnNcrKuf+bka2ZxCE2A4Ft53Tkg4uoiE67r/PMEYwCsourC26E+kmxfwE0hVzMdxqeW+xu7Q==} + + '@tailwindcss/oxide-android-arm64@4.1.8': + resolution: {integrity: sha512-Fbz7qni62uKYceWYvUjRqhGfZKwhZDQhlrJKGtnZfuNtHFqa8wmr+Wn74CTWERiW2hn3mN5gTpOoxWKk0jRxjg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.8': + resolution: {integrity: sha512-RdRvedGsT0vwVVDztvyXhKpsU2ark/BjgG0huo4+2BluxdXo8NDgzl77qh0T1nUxmM11eXwR8jA39ibvSTbi7A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.8': + resolution: {integrity: sha512-t6PgxjEMLp5Ovf7uMb2OFmb3kqzVTPPakWpBIFzppk4JE4ix0yEtbtSjPbU8+PZETpaYMtXvss2Sdkx8Vs4XRw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.8': + resolution: {integrity: sha512-g8C8eGEyhHTqwPStSwZNSrOlyx0bhK/V/+zX0Y+n7DoRUzyS8eMbVshVOLJTDDC+Qn9IJnilYbIKzpB9n4aBsg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.8': + resolution: {integrity: sha512-Jmzr3FA4S2tHhaC6yCjac3rGf7hG9R6Gf2z9i9JFcuyy0u79HfQsh/thifbYTF2ic82KJovKKkIB6Z9TdNhCXQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.8': + resolution: {integrity: sha512-qq7jXtO1+UEtCmCeBBIRDrPFIVI4ilEQ97qgBGdwXAARrUqSn/L9fUrkb1XP/mvVtoVeR2bt/0L77xx53bPZ/Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.8': + resolution: {integrity: sha512-O6b8QesPbJCRshsNApsOIpzKt3ztG35gfX9tEf4arD7mwNinsoCKxkj8TgEE0YRjmjtO3r9FlJnT/ENd9EVefQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.8': + resolution: {integrity: sha512-32iEXX/pXwikshNOGnERAFwFSfiltmijMIAbUhnNyjFr3tmWmMJWQKU2vNcFX0DACSXJ3ZWcSkzNbaKTdngH6g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.8': + resolution: {integrity: sha512-s+VSSD+TfZeMEsCaFaHTaY5YNj3Dri8rST09gMvYQKwPphacRG7wbuQ5ZJMIJXN/puxPcg/nU+ucvWguPpvBDg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.8': + resolution: {integrity: sha512-CXBPVFkpDjM67sS1psWohZ6g/2/cd+cq56vPxK4JeawelxwK4YECgl9Y9TjkE2qfF+9/s1tHHJqrC4SS6cVvSg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.8': + resolution: {integrity: sha512-7GmYk1n28teDHUjPlIx4Z6Z4hHEgvP5ZW2QS9ygnDAdI/myh3HTHjDqtSqgu1BpRoI4OiLx+fThAyA1JePoENA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.8': + resolution: {integrity: sha512-fou+U20j+Jl0EHwK92spoWISON2OBnCazIc038Xj2TdweYV33ZRkS9nwqiUi2d/Wba5xg5UoHfvynnb/UB49cQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.8': + resolution: {integrity: sha512-d7qvv9PsM5N3VNKhwVUhpK6r4h9wtLkJ6lz9ZY9aeZgrUWk1Z8VPyqyDT9MZlem7GTGseRQHkeB1j3tC7W1P+A==} + engines: {node: '>= 10'} + + '@tailwindcss/postcss@4.1.8': + resolution: {integrity: sha512-vB/vlf7rIky+w94aWMw34bWW1ka6g6C3xIOdICKX2GC0VcLtL6fhlLiafF0DVIwa9V6EHz8kbWMkS2s2QvvNlw==} + '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} @@ -4595,6 +4696,10 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -5410,6 +5515,10 @@ packages: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -7047,6 +7156,10 @@ packages: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} @@ -7186,6 +7299,70 @@ packages: lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -7308,6 +7485,9 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -7730,6 +7910,10 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + mkdirp-infer-owner@2.0.0: resolution: {integrity: sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==} engines: {node: '>=10'} @@ -7743,6 +7927,11 @@ packages: engines: {node: '>=10'} hasBin: true + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + mocha@11.5.0: resolution: {integrity: sha512-VKDjhy6LMTKm0WgNEdlY77YVsD49LZnPSXJAaPNL9NRYQADxvORsyG1DIQY6v53BKTnlNbEE2MbVCDbnxr4K3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -8778,6 +8967,10 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + postcss@8.5.4: resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} engines: {node: ^10 || ^12 || >=14} @@ -9937,6 +10130,9 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + tailwindcss@4.1.8: + resolution: {integrity: sha512-kjeW8gjdxasbmFKpVGrGd5T4i40mV5J2Rasw48QARfYeQ8YS9x02ON9SFWax3Qf616rt4Cp3nVNIj6Hd1mP3og==} + talon-snippets@1.3.0: resolution: {integrity: sha512-iFc1ePBQyaqZ73TL0lVgY+G8/DBfFTSiBRVdT2wT1CdPDips6usxSkBmXKGTDgHYJKstQx/NpXhIc0vXiAL4Kw==} @@ -9948,6 +10144,10 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + terser-webpack-plugin@5.3.14: resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} engines: {node: '>= 10.13.0'} @@ -10739,6 +10939,10 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + yaml@2.6.0: resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} engines: {node: '>= 14'} @@ -12876,9 +13080,9 @@ snapshots: '@esbuild/win32-x64@0.25.5': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.28.0(jiti@1.21.6))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.28.0(jiti@2.4.2))': dependencies: - eslint: 9.28.0(jiti@1.21.6) + eslint: 9.28.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -13049,6 +13253,10 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@isaacs/string-locale-compare@1.1.0': {} '@istanbuljs/load-nyc-config@1.1.0': @@ -14316,6 +14524,78 @@ snapshots: dependencies: defer-to-connect: 2.0.1 + '@tailwindcss/node@4.1.8': + dependencies: + '@ampproject/remapping': 2.3.0 + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + lightningcss: 1.30.1 + magic-string: 0.30.17 + source-map-js: 1.2.1 + tailwindcss: 4.1.8 + + '@tailwindcss/oxide-android-arm64@4.1.8': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.8': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.8': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.8': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.8': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.8': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.8': + optional: true + + '@tailwindcss/oxide@4.1.8': + dependencies: + detect-libc: 2.0.4 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.8 + '@tailwindcss/oxide-darwin-arm64': 4.1.8 + '@tailwindcss/oxide-darwin-x64': 4.1.8 + '@tailwindcss/oxide-freebsd-x64': 4.1.8 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.8 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.8 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.8 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.8 + '@tailwindcss/oxide-linux-x64-musl': 4.1.8 + '@tailwindcss/oxide-wasm32-wasi': 4.1.8 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.8 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.8 + + '@tailwindcss/postcss@4.1.8': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.1.8 + '@tailwindcss/oxide': 4.1.8 + postcss: 8.5.4 + tailwindcss: 4.1.8 + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.27.1 @@ -14678,15 +14958,15 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3) + '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.33.1 - '@typescript-eslint/type-utils': 8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3) - '@typescript-eslint/utils': 8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.33.1 - eslint: 9.28.0(jiti@1.21.6) + eslint: 9.28.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 7.0.4 natural-compare: 1.4.0 @@ -14695,14 +14975,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3)': + '@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.33.1 '@typescript-eslint/types': 8.33.1 '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.33.1 debug: 4.4.1(supports-color@8.1.1) - eslint: 9.28.0(jiti@1.21.6) + eslint: 9.28.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -14725,12 +15005,12 @@ snapshots: dependencies: typescript: 5.8.3 - '@typescript-eslint/type-utils@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3) + '@typescript-eslint/utils': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) debug: 4.4.1(supports-color@8.1.1) - eslint: 9.28.0(jiti@1.21.6) + eslint: 9.28.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -14754,13 +15034,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3)': + '@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.33.1 '@typescript-eslint/types': 8.33.1 '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) - eslint: 9.28.0(jiti@1.21.6) + eslint: 9.28.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -15694,6 +15974,8 @@ snapshots: chownr@2.0.0: {} + chownr@3.0.0: {} + chrome-trace-event@1.0.4: {} ci-info@3.9.0: {} @@ -16457,6 +16739,11 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.1 + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -16638,19 +16925,19 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-next@15.3.3(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3): + eslint-config-next@15.3.3(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3): dependencies: '@next/eslint-plugin-next': 15.3.3 '@rushstack/eslint-patch': 1.10.4 - '@typescript-eslint/eslint-plugin': 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3) - '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3) - eslint: 9.28.0(jiti@1.21.6) + '@typescript-eslint/eslint-plugin': 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.28.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@1.21.6)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@1.21.6)) - eslint-plugin-jsx-a11y: 6.10.0(eslint@9.28.0(jiti@1.21.6)) - eslint-plugin-react: 7.37.1(eslint@9.28.0(jiti@1.21.6)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.28.0(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@2.4.2)) + eslint-plugin-jsx-a11y: 6.10.0(eslint@9.28.0(jiti@2.4.2)) + eslint-plugin-react: 7.37.1(eslint@9.28.0(jiti@2.4.2)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.28.0(jiti@2.4.2)) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -16658,9 +16945,9 @@ snapshots: - eslint-plugin-import-x - supports-color - eslint-config-prettier@10.1.5(eslint@9.28.0(jiti@1.21.6)): + eslint-config-prettier@10.1.5(eslint@9.28.0(jiti@2.4.2)): dependencies: - eslint: 9.28.0(jiti@1.21.6) + eslint: 9.28.0(jiti@2.4.2) eslint-import-context@0.1.6(unrs-resolver@1.7.2): dependencies: @@ -16677,29 +16964,29 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@1.21.6)): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@2.4.2)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1(supports-color@8.1.1) enhanced-resolve: 5.17.1 - eslint: 9.28.0(jiti@1.21.6) - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.28.0(jiti@1.21.6)) + eslint: 9.28.0(jiti@2.4.2) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.28.0(jiti@2.4.2)) fast-glob: 3.3.3 get-tsconfig: 4.10.1 is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@1.21.6)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@2.4.2)) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-import-resolver-typescript@4.4.2(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@1.21.6)): + eslint-import-resolver-typescript@4.4.2(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@2.4.2)): dependencies: debug: 4.4.1(supports-color@8.1.1) - eslint: 9.28.0(jiti@1.21.6) + eslint: 9.28.0(jiti@2.4.2) eslint-import-context: 0.1.6(unrs-resolver@1.7.2) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 @@ -16707,33 +16994,33 @@ snapshots: tinyglobby: 0.2.14 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@1.21.6)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.28.0(jiti@1.21.6)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.28.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3) - eslint: 9.28.0(jiti@1.21.6) + '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.28.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@1.21.6)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3) - eslint: 9.28.0(jiti@1.21.6) + '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.28.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.4.2(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@1.21.6)) + eslint-import-resolver-typescript: 4.4.2(eslint-plugin-import@2.31.0)(eslint@9.28.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@1.21.6)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -16742,9 +17029,9 @@ snapshots: array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.28.0(jiti@1.21.6) + eslint: 9.28.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@1.21.6)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -16756,13 +17043,13 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3) + '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.0(eslint@9.28.0(jiti@1.21.6)): + eslint-plugin-jsx-a11y@6.10.0(eslint@9.28.0(jiti@2.4.2)): dependencies: aria-query: 5.1.3 array-includes: 3.1.8 @@ -16773,7 +17060,7 @@ snapshots: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.1.0 - eslint: 9.28.0(jiti@1.21.6) + eslint: 9.28.0(jiti@2.4.2) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -16782,18 +17069,18 @@ snapshots: safe-regex-test: 1.0.3 string.prototype.includes: 2.0.1 - eslint-plugin-mocha@10.5.0(eslint@9.28.0(jiti@1.21.6)): + eslint-plugin-mocha@10.5.0(eslint@9.28.0(jiti@2.4.2)): dependencies: - eslint: 9.28.0(jiti@1.21.6) - eslint-utils: 3.0.0(eslint@9.28.0(jiti@1.21.6)) + eslint: 9.28.0(jiti@2.4.2) + eslint-utils: 3.0.0(eslint@9.28.0(jiti@2.4.2)) globals: 13.24.0 rambda: 7.5.0 - eslint-plugin-react-hooks@5.2.0(eslint@9.28.0(jiti@1.21.6)): + eslint-plugin-react-hooks@5.2.0(eslint@9.28.0(jiti@2.4.2)): dependencies: - eslint: 9.28.0(jiti@1.21.6) + eslint: 9.28.0(jiti@2.4.2) - eslint-plugin-react@7.37.1(eslint@9.28.0(jiti@1.21.6)): + eslint-plugin-react@7.37.1(eslint@9.28.0(jiti@2.4.2)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -16801,7 +17088,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.1.0 - eslint: 9.28.0(jiti@1.21.6) + eslint: 9.28.0(jiti@2.4.2) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -16815,14 +17102,14 @@ snapshots: string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 - eslint-plugin-unicorn@56.0.1(eslint@9.28.0(jiti@1.21.6)): + eslint-plugin-unicorn@56.0.1(eslint@9.28.0(jiti@2.4.2)): dependencies: '@babel/helper-validator-identifier': 7.27.1 - '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@2.4.2)) ci-info: 4.2.0 clean-regexp: 1.0.0 core-js-compat: 3.42.0 - eslint: 9.28.0(jiti@1.21.6) + eslint: 9.28.0(jiti@2.4.2) esquery: 1.6.0 globals: 15.15.0 indent-string: 4.0.0 @@ -16835,11 +17122,11 @@ snapshots: semver: 7.7.2 strip-indent: 3.0.0 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.6)): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2)): dependencies: - eslint: 9.28.0(jiti@1.21.6) + eslint: 9.28.0(jiti@2.4.2) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.6))(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) eslint-scope@5.1.1: dependencies: @@ -16851,9 +17138,9 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-utils@3.0.0(eslint@9.28.0(jiti@1.21.6)): + eslint-utils@3.0.0(eslint@9.28.0(jiti@2.4.2)): dependencies: - eslint: 9.28.0(jiti@1.21.6) + eslint: 9.28.0(jiti@2.4.2) eslint-visitor-keys: 2.1.0 eslint-visitor-keys@2.1.0: {} @@ -16862,9 +17149,9 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.28.0(jiti@1.21.6): + eslint@9.28.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.20.0 '@eslint/config-helpers': 0.2.2 @@ -16900,7 +17187,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 1.21.6 + jiti: 2.4.2 transitivePeerDependencies: - supports-color @@ -18599,6 +18886,8 @@ snapshots: jiti@1.21.6: {} + jiti@2.4.2: {} + joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 @@ -18741,6 +19030,51 @@ snapshots: dependencies: immediate: 3.0.6 + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true + + lightningcss-win32-x64-msvc@1.30.1: + optional: true + + lightningcss@1.30.1: + dependencies: + detect-libc: 2.0.4 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + lilconfig@2.1.0: {} lilconfig@3.1.2: {} @@ -18850,6 +19184,10 @@ snapshots: lz-string@1.5.0: {} + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + make-dir@4.0.0: dependencies: semver: 7.7.2 @@ -19629,6 +19967,10 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + mkdirp-infer-owner@2.0.0: dependencies: chownr: 2.0.0 @@ -19641,6 +19983,8 @@ snapshots: mkdirp@1.0.4: {} + mkdirp@3.0.1: {} + mocha@11.5.0: dependencies: browser-stdout: 1.3.1 @@ -20846,6 +21190,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.4.47: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postcss@8.5.4: dependencies: nanoid: 3.3.11 @@ -22164,6 +22514,8 @@ snapshots: transitivePeerDependencies: - ts-node + tailwindcss@4.1.8: {} + talon-snippets@1.3.0: {} tapable@2.2.1: {} @@ -22177,6 +22529,15 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + terser-webpack-plugin@5.3.14(esbuild@0.25.5)(webpack@5.99.9(esbuild@0.25.5)): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -23132,6 +23493,8 @@ snapshots: yallist@4.0.0: {} + yallist@5.0.0: {} + yaml@2.6.0: {} yargs-parser@21.1.1: {} From 292a339fd612d4156fd7a0f5498784722a040b86 Mon Sep 17 00:00:00 2001 From: SimeonC <1085899+SimeonC@users.noreply.github.com> Date: Mon, 20 Mar 2023 10:18:14 +0900 Subject: [PATCH 009/211] chore: Bring #940 to current monorepo structure wip: Delete workspace.json for cherry-pick - git cherry pick 070c870 - Delete cursorless-nx/workspace.json Add the package and initial working There is an issue here that the jest parser requires no file name extension in imports, but ts-node requires `.js` extension. Probably will need to change this to build then generate rather than ts-node (or spend ages messing with the configs) [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci All working with tests Need to update to be in the new NX repo format and correctly handle the newer formats for test fixtures which have changed since this was written --- cursorless-nx/libs/generate-examples/.babelrc | 10 + .../libs/generate-examples/.eslintrc.json | 18 + .../libs/generate-examples/README.md | 11 + .../libs/generate-examples/jest.config.js | 15 + .../libs/generate-examples/package-lock.json | 881 ++++++++++++++++++ .../libs/generate-examples/package.json | 17 + .../libs/generate-examples/project.json | 33 + .../libs/generate-examples/src/index.ts | 1 + .../src/lib/buildDictionary.ts | 23 + .../src/lib/buildSpokenForm.ts | 189 ++++ .../src/lib/generate-examples.ts | 3 + .../src/lib/generateHtml.spec.ts | 310 ++++++ .../generate-examples/src/lib/generateHtml.ts | 389 ++++++++ .../generate-examples/src/lib/loadFixture.ts | 84 ++ .../generate-examples/src/lib/renderToHtml.ts | 193 ++++ .../libs/generate-examples/tsconfig.json | 24 + .../libs/generate-examples/tsconfig.lib.json | 10 + .../libs/generate-examples/tsconfig.spec.json | 9 + 18 files changed, 2220 insertions(+) create mode 100644 cursorless-nx/libs/generate-examples/.babelrc create mode 100644 cursorless-nx/libs/generate-examples/.eslintrc.json create mode 100644 cursorless-nx/libs/generate-examples/README.md create mode 100644 cursorless-nx/libs/generate-examples/jest.config.js create mode 100644 cursorless-nx/libs/generate-examples/package-lock.json create mode 100644 cursorless-nx/libs/generate-examples/package.json create mode 100644 cursorless-nx/libs/generate-examples/project.json create mode 100644 cursorless-nx/libs/generate-examples/src/index.ts create mode 100644 cursorless-nx/libs/generate-examples/src/lib/buildDictionary.ts create mode 100644 cursorless-nx/libs/generate-examples/src/lib/buildSpokenForm.ts create mode 100644 cursorless-nx/libs/generate-examples/src/lib/generate-examples.ts create mode 100644 cursorless-nx/libs/generate-examples/src/lib/generateHtml.spec.ts create mode 100644 cursorless-nx/libs/generate-examples/src/lib/generateHtml.ts create mode 100644 cursorless-nx/libs/generate-examples/src/lib/loadFixture.ts create mode 100644 cursorless-nx/libs/generate-examples/src/lib/renderToHtml.ts create mode 100644 cursorless-nx/libs/generate-examples/tsconfig.json create mode 100644 cursorless-nx/libs/generate-examples/tsconfig.lib.json create mode 100644 cursorless-nx/libs/generate-examples/tsconfig.spec.json diff --git a/cursorless-nx/libs/generate-examples/.babelrc b/cursorless-nx/libs/generate-examples/.babelrc new file mode 100644 index 0000000000..e24a5465f3 --- /dev/null +++ b/cursorless-nx/libs/generate-examples/.babelrc @@ -0,0 +1,10 @@ +{ + "presets": [ + [ + "@nrwl/web/babel", + { + "useBuiltIns": "usage" + } + ] + ] +} diff --git a/cursorless-nx/libs/generate-examples/.eslintrc.json b/cursorless-nx/libs/generate-examples/.eslintrc.json new file mode 100644 index 0000000000..9d9c0db55b --- /dev/null +++ b/cursorless-nx/libs/generate-examples/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/cursorless-nx/libs/generate-examples/README.md b/cursorless-nx/libs/generate-examples/README.md new file mode 100644 index 0000000000..41ab501054 --- /dev/null +++ b/cursorless-nx/libs/generate-examples/README.md @@ -0,0 +1,11 @@ +# generate-examples + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build generate-examples` to build the library. + +## Running unit tests + +Run `nx test generate-examples` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/cursorless-nx/libs/generate-examples/jest.config.js b/cursorless-nx/libs/generate-examples/jest.config.js new file mode 100644 index 0000000000..85725d68fb --- /dev/null +++ b/cursorless-nx/libs/generate-examples/jest.config.js @@ -0,0 +1,15 @@ +/* eslint-disable */ +export default { + displayName: 'generate-examples', + preset: '../../jest.preset.js', + globals: { + 'ts-jest': { + tsconfig: '/tsconfig.spec.json', + }, + }, + transform: { + '^.+\\.[tj]s$': 'ts-jest', + }, + moduleFileExtensions: ['ts', 'js', 'html'], + coverageDirectory: '../../coverage/libs/generate-examples', +}; diff --git a/cursorless-nx/libs/generate-examples/package-lock.json b/cursorless-nx/libs/generate-examples/package-lock.json new file mode 100644 index 0000000000..c7c5eb2cdd --- /dev/null +++ b/cursorless-nx/libs/generate-examples/package-lock.json @@ -0,0 +1,881 @@ +{ + "name": "@cursorless/generate-examples", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@cursorless/generate-examples", + "version": "0.0.1", + "dependencies": { + "fs-extra": "11.1.0", + "prettier": "2.8.4", + "shiki": "0.14.3", + "tsx": "3.12.7", + "yaml": "2.2.1" + } + }, + "node_modules/@esbuild-kit/cjs-loader": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", + "integrity": "sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==", + "dependencies": { + "@esbuild-kit/core-utils": "^3.0.0", + "get-tsconfig": "^4.4.0" + } + }, + "node_modules/@esbuild-kit/core-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz", + "integrity": "sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==", + "dependencies": { + "esbuild": "~0.17.6", + "source-map-support": "^0.5.21" + } + }, + "node_modules/@esbuild-kit/esm-loader": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz", + "integrity": "sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==", + "dependencies": { + "@esbuild-kit/core-utils": "^3.0.0", + "get-tsconfig": "^4.4.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-tsconfig": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.2.tgz", + "integrity": "sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/prettier": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/shiki": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.3.tgz", + "integrity": "sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==", + "dependencies": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/tsx": { + "version": "3.12.7", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.7.tgz", + "integrity": "sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==", + "dependencies": { + "@esbuild-kit/cjs-loader": "^2.4.2", + "@esbuild-kit/core-utils": "^3.0.0", + "@esbuild-kit/esm-loader": "^2.5.5" + }, + "bin": { + "tsx": "dist/cli.js" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" + }, + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" + }, + "node_modules/yaml": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "engines": { + "node": ">= 14" + } + } + }, + "dependencies": { + "@esbuild-kit/cjs-loader": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", + "integrity": "sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==", + "requires": { + "@esbuild-kit/core-utils": "^3.0.0", + "get-tsconfig": "^4.4.0" + } + }, + "@esbuild-kit/core-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz", + "integrity": "sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==", + "requires": { + "esbuild": "~0.17.6", + "source-map-support": "^0.5.21" + } + }, + "@esbuild-kit/esm-loader": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz", + "integrity": "sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==", + "requires": { + "@esbuild-kit/core-utils": "^3.0.0", + "get-tsconfig": "^4.4.0" + } + }, + "@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "optional": true + }, + "ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==" + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "requires": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "get-tsconfig": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.2.tgz", + "integrity": "sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==", + "requires": { + "resolve-pkg-maps": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "prettier": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==" + }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==" + }, + "shiki": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.3.tgz", + "integrity": "sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==", + "requires": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "tsx": { + "version": "3.12.7", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.7.tgz", + "integrity": "sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==", + "requires": { + "@esbuild-kit/cjs-loader": "^2.4.2", + "@esbuild-kit/core-utils": "^3.0.0", + "@esbuild-kit/esm-loader": "^2.5.5", + "fsevents": "~2.3.2" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" + }, + "vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" + }, + "yaml": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==" + } + } +} diff --git a/cursorless-nx/libs/generate-examples/package.json b/cursorless-nx/libs/generate-examples/package.json new file mode 100644 index 0000000000..c569188084 --- /dev/null +++ b/cursorless-nx/libs/generate-examples/package.json @@ -0,0 +1,17 @@ +{ + "name": "@cursorless/generate-examples", + "version": "0.0.1", + "type": "module", + "scripts": { + "build": "tsx src/lib/buildDictionary", + "test": "jest", + "test:watch": "jest --watch" + }, + "dependencies": { + "fs-extra": "11.1.0", + "prettier": "2.8.4", + "shiki": "0.14.3", + "tsx": "3.12.7", + "yaml": "2.2.1" + } +} diff --git a/cursorless-nx/libs/generate-examples/project.json b/cursorless-nx/libs/generate-examples/project.json new file mode 100644 index 0000000000..1396590a7e --- /dev/null +++ b/cursorless-nx/libs/generate-examples/project.json @@ -0,0 +1,33 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/generate-examples/src", + "projectType": "library", + "targets": { + "build": { + "executor": "@nrwl/js:tsc", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/libs/generate-examples", + "main": "libs/generate-examples/src/index.ts", + "tsConfig": "libs/generate-examples/tsconfig.lib.json", + "assets": ["libs/generate-examples/*.md"] + } + }, + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["libs/generate-examples/**/*.ts"] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": ["coverage/libs/generate-examples"], + "options": { + "jestConfig": "libs/generate-examples/jest.config.ts", + "passWithNoTests": true + } + } + }, + "tags": [] +} diff --git a/cursorless-nx/libs/generate-examples/src/index.ts b/cursorless-nx/libs/generate-examples/src/index.ts new file mode 100644 index 0000000000..1efb8fa2e7 --- /dev/null +++ b/cursorless-nx/libs/generate-examples/src/index.ts @@ -0,0 +1 @@ +export * from './lib/generate-examples'; diff --git a/cursorless-nx/libs/generate-examples/src/lib/buildDictionary.ts b/cursorless-nx/libs/generate-examples/src/lib/buildDictionary.ts new file mode 100644 index 0000000000..de3a6c2780 --- /dev/null +++ b/cursorless-nx/libs/generate-examples/src/lib/buildDictionary.ts @@ -0,0 +1,23 @@ +import { loadFixture } from './loadFixture.js'; + +Promise.all([ + loadFixture('actions', 'bringArgMadeAfterLook'), + loadFixture('decorations', 'chuckBlockAirUntilBatt'), + loadFixture('decorations', 'cutFine'), + loadFixture('decorations', 'chuckLineFine'), + loadFixture('actions', 'bringAirAndBatAndCapToAfterItemEach'), +]).then((allItems) => { + allItems.forEach((item) => { + if (item) + console.log(` +.wrapper + .before + ${item.before.replace(/\n/gi, '\n ')} + .during + ${(item.during || item.before).replace(/\n/gi, '\n ')} + .command ${item.command} + .after + ${item.after.replace(/\n/gi, '\n ')} +`); + }); +}); diff --git a/cursorless-nx/libs/generate-examples/src/lib/buildSpokenForm.ts b/cursorless-nx/libs/generate-examples/src/lib/buildSpokenForm.ts new file mode 100644 index 0000000000..26f974c6c1 --- /dev/null +++ b/cursorless-nx/libs/generate-examples/src/lib/buildSpokenForm.ts @@ -0,0 +1,189 @@ +import path from 'path'; +import fs from 'fs-extra'; +const cursorlessRoot = path.resolve('../../../src'); + +const commandDictionaryJson = fs.readJSONSync( + path.join( + cursorlessRoot, + '../cursorless-nx/libs/cheatsheet/src/lib/data/sampleSpokenFormInfos/defaults.json' + ) +) as typeof import('../../../cheatsheet/src/lib/data/sampleSpokenFormInfos/defaults.json'); + +const letters = 'abcdefghijklmnopqrstuvwxyz'.split(''); +const defaultAlphabet = + 'air bat cap drum each fine gust harp sit jury crunch look made near odd pit quench red sun trap urge vest whale plex yank zip' + .split(' ') + .map((word, index) => [letters[index], word] as const); + +const defaultDigits = 'zero one two three four five six seven eight nine' + .split(' ') + .map((word, index) => [`${index}`, word] as const); + +const letterDictionary = defaultAlphabet + .concat(defaultDigits) + .reduce((r, [key, value]) => ({ ...r, [key]: value }), {}); + +const commandDictionary = commandDictionaryJson.sections.reduce( + (topResult, section) => { + return { + ...topResult, + [section.id]: section.items.reduce( + (r, { id, variations }) => ({ + ...r, + [id]: variations[0].spokenForm, + }), + {} + ), + }; + }, + {} as Record< + typeof commandDictionaryJson['sections'][number]['id'], + Record< + typeof commandDictionaryJson['sections'][number]['items'][number]['id'], + typeof commandDictionaryJson['sections'][number]['items'][number]['variations'][0]['spokenForm'] + > + > +); + +type CommandDictionary = typeof commandDictionary; + +interface Modifier { + type: 'position' | 'containingScope'; + position: keyof CommandDictionary['positions']; + scopeType: { + type: keyof CommandDictionary['scopes']; + }; +} +type PrimitiveTarget = { + type: 'primitive'; + modifiers?: Modifier[]; + position?: keyof CommandDictionary['positions']; + mark?: { + type: 'decoratedSymbol'; + character: keyof typeof letterDictionary; + }; +}; + +type RangeTarget = { + type: 'range'; + excludeAnchor?: boolean; + excludeActive?: boolean; + anchor: Target; + active: Target; +}; + +type ListTarget = { + type: 'list'; + elements: Target[]; +}; + +type Target = PrimitiveTarget | RangeTarget | ListTarget; +type Command = { action: { name: string }; targets: Target[] }; + +function interpolate( + template: string, + handleAction: (counter: number) => string +) { + let counter = -1; + return template.replace(/<[a-z0-9]+>/gi, () => handleAction(++counter)); +} + +class SpokenForm { + private command: Command; + + constructor(command: Command) { + this.command = command; + } + + public build() { + return interpolate(this.getTemplate(), (counter) => + this.parseTarget(this.command.targets[counter]) + ); + } + + private getTemplate() { + return commandDictionary['actions'][this.command.action.name]; + } + + private parseTarget(target: Target): string { + if (!target) throw new Error(`Excess mark`); + switch (target.type) { + case 'primitive': + return this.parsePrimitiveTarget(target); + case 'range': + return this.parseRangeTarget(target); + case 'list': + return this.parseListTarget(target); + default: { + // @ts-expect-error - if this is hit we need to add new cases and types + throw new Error(`Unknown target type ${target.type}`); + } + } + } + parsePrimitiveTarget(target: PrimitiveTarget) { + let prefix = + target.modifiers + ?.filter((v): v is Modifier => !!v) + ?.map((mod) => { + switch (mod.type) { + case 'position': + return commandDictionary['positions'][mod.position]; + case 'containingScope': + return commandDictionary['scopes'][mod.scopeType.type]; + } + throw new Error(`Unknown modifier type ${mod.type}`); + }) + .join(' ') || ''; + if (target.position) { + prefix = `${commandDictionary['positions'][target.position]} ${prefix}`; + } + if (target.mark) { + if (target.mark.type !== 'decoratedSymbol') + throw new Error(`Unknown target type ${target.mark.type}`); + return ( + (prefix ? prefix + ' ' : '') + letterDictionary[target.mark.character] + ); + } + if (!prefix) throw new Error(`Unknown mark`); + return prefix; + } + + parseRangeTarget(target: RangeTarget) { + let compoundTargetKey; + if (target.excludeAnchor && target.excludeActive) + compoundTargetKey = 'rangeExclusive'; + else if (!target.excludeAnchor && !target.excludeActive) + compoundTargetKey = 'rangeInclusive'; + else if (!target.excludeAnchor && target.excludeActive) + compoundTargetKey = 'rangeExcludingEnd'; + else throw new Error(`Bad inclusion range`); + return interpolate( + commandDictionary['compoundTargets'][compoundTargetKey], + (index) => { + if (index === 0) return this.parseTarget(target.anchor); + if (index === 1) return this.parseTarget(target.active); + return ''; + } + ); + } + parseListTarget(target: ListTarget) { + return target.elements.reduce((result, element) => { + if (!result) return this.parseTarget(element); + return interpolate( + commandDictionary['compoundTargets']['listConnective'], + (index) => { + if (index === 0) return result; + if (index === 1) return this.parseTarget(element); + throw Error(`Invalid List`); + } + ); + }, ''); + } +} + +export function buildSpokenForm(command: { + action: { name: string }; + targets: Target[]; +}) { + return new SpokenForm(command).build(); +} diff --git a/cursorless-nx/libs/generate-examples/src/lib/generate-examples.ts b/cursorless-nx/libs/generate-examples/src/lib/generate-examples.ts new file mode 100644 index 0000000000..246cf0e168 --- /dev/null +++ b/cursorless-nx/libs/generate-examples/src/lib/generate-examples.ts @@ -0,0 +1,3 @@ +export function generateExamples(): string { + return 'generate-examples'; +} diff --git a/cursorless-nx/libs/generate-examples/src/lib/generateHtml.spec.ts b/cursorless-nx/libs/generate-examples/src/lib/generateHtml.spec.ts new file mode 100644 index 0000000000..8742a9e506 --- /dev/null +++ b/cursorless-nx/libs/generate-examples/src/lib/generateHtml.spec.ts @@ -0,0 +1,310 @@ +import prettier from 'prettier'; +import { generateHtml as unformettedFunc } from './generateHtml'; + +async function generateHtml(...args: Parameters) { + return prettier.format(await unformettedFunc(...args), { + singleAttributePerLine: true, + htmlWhitespaceSensitivity: 'ignore', + parser: 'babel', + }); +} + +describe('generateHtml', () => { + it('should select whole line', async () => { + expect( + await generateHtml( + { + documentContents: ' const oneLine = 1;\nconst line2 = 2;', + selections: [ + { + type: 'line', + anchor: { line: 1, character: 0 }, + active: { line: 1, character: 22 }, + }, + ], + }, + + 'typescript' + ) + ).toMatchInlineSnapshot(` + "
+        
+          
+             
+            const
+             
+            oneLine
+             
+            =
+             
+            1
+            ;
+          
+          
+            const
+             
+            line2
+             
+            =
+             
+            2
+            ;
+          
+        
+      
; + " + `); + }); + it('should select single token', async () => { + expect( + await generateHtml( + { + documentContents: ' const oneLine = 1;\nconst line2 = 2;', + selections: [ + { + type: 'selection', + anchor: { line: 0, character: 8 }, + active: { line: 0, character: 15 }, + }, + ], + }, + + 'typescript' + ) + ).toMatchInlineSnapshot(` + "
+        
+          
+             
+            const
+             
+            
+              oneLine
+            
+             
+            =
+             
+            1
+            ;
+          
+          
+            const
+             
+            line2
+             
+            =
+             
+            2
+            ;
+          
+        
+      
; + " + `); + }); + + it('should select multiple tokens', async () => { + expect( + await generateHtml( + { + documentContents: 'const oneLine = 1;', + selections: [ + { + type: 'selection', + anchor: { line: 0, character: 6 }, + active: { line: 0, character: 17 }, + }, + ], + }, + + 'typescript' + ) + ).toMatchInlineSnapshot(` + "
+        
+          
+            const
+             
+            
+              oneLine
+               
+              =
+               
+              1
+            
+            ;
+          
+        
+      
; + " + `); + }); + + it('should select inside tokens', async () => { + expect( + await generateHtml( + { + documentContents: 'const oneLine = "line";', + selections: [ + { + type: 'selection', + anchor: { line: 0, character: 9 }, + active: { line: 0, character: 19 }, + }, + ], + }, + + 'typescript' + ) + ).toMatchInlineSnapshot(` + "
+        
+          
+            const
+             
+            one
+            
+              Line
+               
+              =
+               
+              
+                "li
+              
+            
+            ne"
+            ;
+          
+        
+      
; + " + `); + }); + + it('should select inside single token', async () => { + expect( + await generateHtml( + { + documentContents: 'const oneLine = 1;', + selections: [ + { + type: 'selection', + anchor: { line: 0, character: 9 }, + active: { line: 0, character: 11 }, + }, + ], + }, + + 'typescript' + ) + ).toMatchInlineSnapshot(` + "
+        
+          
+            const
+             
+            one
+            
+              Li
+            
+            ne
+             
+            =
+             
+            1
+            ;
+          
+        
+      
; + " + `); + }); + it('should select superset ranges', async () => { + expect( + await generateHtml( + { + documentContents: 'const oneLine = 1;', + selections: [ + { + type: 'selection', + anchor: { line: 0, character: 9 }, + active: { line: 0, character: 11 }, + }, + ], + thatMark: [ + { + type: 'selection', + anchor: { line: 0, character: 6 }, + active: { line: 0, character: 13 }, + }, + ], + }, + + 'typescript' + ) + ).toMatchInlineSnapshot(` + "
+        
+          
+            const
+             
+            
+              one
+            
+            
+              Li
+            
+            
+              ne
+            
+             
+            =
+             
+            1
+            ;
+          
+        
+      
; + " + `); + }); +}); diff --git a/cursorless-nx/libs/generate-examples/src/lib/generateHtml.ts b/cursorless-nx/libs/generate-examples/src/lib/generateHtml.ts new file mode 100644 index 0000000000..8396ccdd11 --- /dev/null +++ b/cursorless-nx/libs/generate-examples/src/lib/generateHtml.ts @@ -0,0 +1,389 @@ +import { getHighlighter, Lang } from 'shiki'; +import { renderToHtml, HatType, SelectionType, Token } from './renderToHtml'; + +export interface SelectionAnchor { + line: number; + character: number; +} + +interface CursorlessFixtureSelection { + type: 'line' | 'selection'; + name?: string; + anchor: SelectionAnchor; + active: SelectionAnchor; +} +interface CursorlessFixtureState { + documentContents: any; + marks?: Record< + `${HatType}.${string}`, + { start: { line: number; character: number } } + >; + decorations?: CursorlessFixtureSelection[]; + selections?: CursorlessFixtureSelection[]; + thatMark?: [CursorlessFixtureSelection]; + sourceMark?: [CursorlessFixtureSelection]; +} + +export async function generateHtml(state: CursorlessFixtureState, lang: Lang) { + return new HTMLGenerator(state, lang).generate(); +} + +const highlighter = getHighlighter({ theme: 'css-variables' }); + +class HTMLGenerator { + private state: CursorlessFixtureState; + private lang: Lang; + private tokens: Token[][]; + private lineOptions: any[]; + + constructor(state: CursorlessFixtureState, lang: Lang) { + this.state = state; + this.lang = lang; + this.tokens = []; + this.lineOptions = []; + } + + async generate() { + await this.getTokens(); + this.applyMarks(); + this.applyAllSelections(); + return renderToHtml(this.tokens, { + bg: 'var(--shiki-color-background)', + fg: 'var(--shiki-color-text)', + lineOptions: this.lineOptions, + }); + } + + async getTokens() { + this.tokens = (await highlighter) + .codeToThemedTokens(this.state.documentContents, this.lang) + .map((line) => + line.map( + (token) => + ({ + ...token, + type: 'token', + } as Token) + ) + ); + } + + applyMarks() { + Object.entries(this.state.marks || {}).forEach(([key, mark]) => { + const [type, letterArg] = key.split('.') as [HatType, string]; + const letter = !letterArg || letterArg === '' ? '.' : letterArg; + const line = this.tokens[mark.start.line]; + if (!line) return; + this.insertHat( + line as Extract[], + type, + letter, + mark.start.character + ); + }); + } + insertHat( + line: Extract[], + hatType: HatType, + markCharacter: string, + wordStart: number + ) { + let rawIndex = 0; + for (let t = 0; t < line.length; t += 1) { + const token = line[t]; + if (token.content.length + rawIndex < wordStart) { + rawIndex += token.content.length; + continue; + } + for (let i = 0; i < token.content.length; i += 1) { + rawIndex += 1; + if (token.content[i] === markCharacter) { + line.splice( + t, + 1, + { ...token, content: token.content.substring(0, i) }, + { + type: 'hat', + hatType, + content: token.content.substring(i, i + 1), + }, + { ...token, content: token.content.substring(i + 1) } + ); + return; + } + } + throw new Error(`Mark not found`); + } + } + + applyAllSelections() { + if (!this.applySelectionsFromState('decorations')) { + this.applySelectionsFromState('selections'); + } + this.applySelectionsFromState('thatMark'); + this.applySelectionsFromState('sourceMark'); + } + + applySelectionsFromState( + key: 'decorations' | 'selections' | 'thatMark' | 'sourceMark' + ): boolean { + const selections = this.state[key]; + if (!selections?.length) return false; + const selectionParser = new SelectionParser( + this.tokens, + key.replace(/s$/gi, '') as SelectionType + ); + selections.forEach((selection) => { + if (selection.type === 'line') { + return this.applyLineSelection(key, selection); + } + selectionParser.parse(selection); + }); + return true; + } + + getSelectionClasses( + selectionType: keyof typeof this.state, + selection: CursorlessFixtureSelection + ) { + const classes = [selectionType.replace(/s$/g, '')]; + if (selection.name) { + classes.push(selection.name); + } + return classes; + } + + applyLineSelection( + selectionType: keyof typeof this.state, + selection: CursorlessFixtureSelection + ) { + const classes = this.getSelectionClasses(selectionType, selection); + const { anchor: start, active: end } = selection; + for (let i = start.line + 1; i <= end.line + 1; i += 1) + this.lineOptions.push({ + line: i, + classes, + }); + } +} + +class SelectionParser { + private lines: Token[][]; + private selectionType: SelectionType; + + constructor(lines: Token[][], selectionType: SelectionType) { + this.lines = lines; + this.selectionType = selectionType; + } + + parse(selection: CursorlessFixtureSelection) { + const { anchor: start, active: end } = selection; + for (let l = end.line; l <= start.line; l += 1) { + if (l !== end.line && l !== start.line) { + this.handleInsideLine(l); + continue; + } + this.lines[l] = this.parseLine(l, start, end); + } + } + + parseLine(l: number, start: SelectionAnchor, end: SelectionAnchor) { + const lineParser = new SelectionLineParser( + this.selectionType, + this.lines[l] + ); + if (end.line === start.line) + return lineParser.parse(start.character, end.character); + if (l === end.line) return lineParser.parse(0, end.character); + return lineParser.parse(start.character, Infinity); + } + + handleInsideLine(currentLine: number) { + this.lines[currentLine] = [ + { + type: 'selection', + selection: this.lines[currentLine], + className: this.selectionType, + }, + ]; + } +} + +type BaseToken = Exclude; +type SelectionToken = Extract; + +class SelectionLineParser { + selectionType: SelectionType; + line: Token[]; + result: Token[]; + activeSelectionTypes: string[]; + startIndex: number; + endIndex: number; + rawIndex = 0; + + constructor(selectionType: SelectionType, line: Token[]) { + this.selectionType = selectionType; + this.line = [...line]; + this.result = []; + this.activeSelectionTypes = []; + this.startIndex = 0; + this.endIndex = Infinity; + } + + hasRemainingTokens() { + return this.line.length > 0; + } + + getTokenState(tokenStart: number, tokenEnd: number) { + if (tokenEnd <= this.startIndex || this.endIndex <= tokenStart) + return 'outside'; + if (tokenStart === this.startIndex && tokenEnd === this.endIndex) + return 'entire'; + if (!this.getCurrentSelectionToken() && tokenEnd >= this.endIndex) + return 'inner'; + if (!this.getCurrentSelectionToken()) return 'start'; + if (tokenEnd >= this.endIndex) return 'end'; + return 'continue'; + } + + getCurrentSelectionToken() { + const lastResult = this.result[this.result.length - 1]; + return lastResult?.type === 'selection' ? lastResult : undefined; + } + + parse(startIndex: number, endIndex: number) { + this.startIndex = startIndex; + this.endIndex = endIndex; + this.rawIndex = 0; + while (this.hasRemainingTokens()) { + this.parseToken(this.line.shift()); + } + return this.result; + } + + parseToken(token: Token | undefined) { + if (!token) return; + if (token.type === 'selection') return this.parseSelection(token); + const tokenStart = this.rawIndex; + this.incrementRawIndex(token); + const tokenEnd = this.rawIndex; + const state = this.getTokenState(tokenStart, tokenEnd); + switch (state) { + case 'outside': { + this.result.push(token); + return; + } + case 'entire': { + this.createSelection(token); + return; + } + case 'start': { + this.startSelection(token); + return; + } + case 'continue': { + this.getCurrentSelectionToken()?.selection.push(token); + return; + } + case 'end': { + this.endSelection(token); + return; + } + case 'inner': { + this.innerSelection(token); + return; + } + } + } + + parseSelection(token: SelectionToken) { + this.activeSelectionTypes.push(token.className); + this.result.push({ + type: 'selection', + className: this.activeSelectionTypes.join(' '), + selection: [], + }); + for (const subToken of token.selection) { + this.parseToken(subToken); + } + this.activeSelectionTypes.pop(); + this.result.push({ + type: 'selection', + className: this.activeSelectionTypes.join(' '), + selection: [], + }); + } + + getCurrentSelectionClassName() { + return this.selectionType; + } + + incrementRawIndex(token: BaseToken) { + this.rawIndex += token.content.length; + } + + createSelection(token: Token) { + this.activeSelectionTypes.push( + (token as SelectionToken).className || this.getCurrentSelectionClassName() + ); + this.result.push({ + type: 'selection', + className: this.activeSelectionTypes.join(' '), + selection: [token], + }); + } + + startSelection(token: BaseToken) { + const selectionStartIndex = + token.content.length - (this.rawIndex - this.startIndex); + const preSelectionContent = token.content.substring(0, selectionStartIndex); + const selectionContent = token.content.substring(selectionStartIndex); + if (preSelectionContent.length) { + this.result.push({ + ...token, + content: preSelectionContent, + }); + } + this.createSelection({ ...token, content: selectionContent }); + } + + endSelection(token: BaseToken) { + const selectionStartIndex = + token.content.length - (this.rawIndex - this.endIndex); + const selectionContent = token.content.substring(0, selectionStartIndex); + const postSelectionContent = token.content.substring(selectionStartIndex); + this.getCurrentSelectionToken()?.selection.push({ + ...token, + content: selectionContent, + }); + this.activeSelectionTypes.pop(); + if (postSelectionContent.length) + this.result.push({ + ...token, + content: postSelectionContent, + }); + } + + innerSelection(token: BaseToken) { + const stringStart = + token.content.length - (this.rawIndex - this.startIndex); + const stringEnd = token.content.length - (this.rawIndex - this.endIndex); + const preSelectionContent = token.content.substring(0, stringStart); + const selectionContent = token.content.substring(stringStart, stringEnd); + const postSelectionContent = token.content.substring(stringEnd); + if (preSelectionContent.length) + this.result.push({ + ...token, + content: preSelectionContent, + }); + this.createSelection({ + ...token, + content: selectionContent, + }); + if (postSelectionContent.length) + this.result.push({ + ...token, + content: postSelectionContent, + }); + } +} diff --git a/cursorless-nx/libs/generate-examples/src/lib/loadFixture.ts b/cursorless-nx/libs/generate-examples/src/lib/loadFixture.ts new file mode 100644 index 0000000000..1cec6937d0 --- /dev/null +++ b/cursorless-nx/libs/generate-examples/src/lib/loadFixture.ts @@ -0,0 +1,84 @@ +import path from 'path'; +import fs from 'fs-extra'; +import * as yaml from 'yaml'; + +import { buildSpokenForm } from './buildSpokenForm'; +import { generateHtml, SelectionAnchor } from './generateHtml'; + +const fixturesDir = path.join( + '../../../packages', + 'cursorless-vscode-e2e', + 'suite', + 'fixtures', + 'recorded' +); + +async function safeGenerateHtml( + ...args: [stateName: string, ...rest: Parameters] +) { + const [stateName, state, languageId] = args; + try { + return await generateHtml(state, languageId); + } catch (e) { + console.log('error in state', stateName, e); + console.log(JSON.stringify(state, null, 2)); + throw e; + } +} + +export async function loadFixture(folder: string, name: string) { + const filepath = path.join(fixturesDir, folder, `${name}.yml`); + const data = yaml.parse(await fs.readFile(filepath, 'utf-8')); + if (data.command.version !== 2) return; + try { + const during = data.decorations + ? await safeGenerateHtml( + 'decorations', + { + ...data.initialState, + decorations: data.decorations.map( + ({ + name, + type, + start, + end, + }: { + name: string; + type: string; + start: SelectionAnchor; + end: SelectionAnchor; + }) => ({ + name, + type, + anchor: start, + active: end, + }) + ), + }, + data.languageId + ) + : undefined; + const before = await safeGenerateHtml( + 'initialState', + data.initialState, + data.languageId + ); + const after = await safeGenerateHtml( + 'finalState', + data.finalState, + data.languageId + ); + return { + language: data.languageId, + command: buildSpokenForm(data.command), + originalCommand: data.command.spokenForm, + during, + before, + after, + }; + } catch (e) { + console.log('error', filepath, e); + console.log(JSON.stringify(data, null, 2)); + throw e; + } +} diff --git a/cursorless-nx/libs/generate-examples/src/lib/renderToHtml.ts b/cursorless-nx/libs/generate-examples/src/lib/renderToHtml.ts new file mode 100644 index 0000000000..a367647df5 --- /dev/null +++ b/cursorless-nx/libs/generate-examples/src/lib/renderToHtml.ts @@ -0,0 +1,193 @@ +// forked from https://github.com/SimeonC/shiki/blob/main/packages/shiki/src/renderer.ts + +import { IThemedToken } from 'shiki'; + +// MIT License +const FontStyle = { + NotSet: -1, + None: 0, + Italic: 1, + Bold: 2, + Underline: 4, +} as const; + +export function groupBy( + elements: TObject[], + keyGetter: (element: TObject) => string +) { + const map = new Map(); + for (const element of elements) { + const key = keyGetter(element); + if (map.has(key)) { + const group = map.get(key); + group.push(element); + } else { + map.set(key, [element]); + } + } + return map; +} + +export type HatType = 'default'; +interface BaseElementProps { + style?: string; + children: string; + className?: string; +} + +const elements = { + pre({ className, style = '', children }: BaseElementProps) { + return `
${children}
`; + }, + + code({ children }: Pick) { + return `${children}`; + }, + + line({ className, children }: Omit) { + return `${children}`; + }, + + token({ style = '', children }: Omit) { + return `${children}`; + }, + + selection({ style = '', className, children }: BaseElementProps) { + return `${children}`; + }, + + hat({ hatType, children }: { hatType: HatType; children: string }) { + return `${children}`; + }, +} as const; +export type SelectionType = + | 'decoration' + | 'selection' + | 'thatMark' + | 'sourceMark'; +export type Token = + | ({ + type: 'token'; + } & IThemedToken) + | { + type: 'selection'; + className: string; + selection: Token[]; + } + | { + type: 'hat'; + hatType: HatType; + content: string; + }; + +export function renderToHtml( + lines: Token[][], + options: { + langId?: string; + bg?: string; + fg?: string; + lineOptions?: { line: string }[]; + } = {} +) { + const bg = options.bg || '#fff'; + const optionsByLineNumber = groupBy( + options.lineOptions ?? [], + (option) => option.line + ); + + function h< + TType extends keyof typeof elements, + TProps extends BaseElementProps = Parameters[0] + >(type: TType, props: Omit, children: string[]) { + const element = elements[type] as typeof elements[TType]; + if (element) { + children = children.filter(Boolean); + + return element({ + ...props, + children: type === 'code' ? children.join('\n') : children.join(''), + } as any); + } + + return ''; + } + + function handleToken(token: Token): string { + if (token.type === 'selection') { + return h( + 'selection', + { className: token.className }, + token.selection.map((token) => handleToken(token)) + ); + } + if (token.type === 'hat') { + return h('hat', token, [escapeHtml(token.content)]); + } + + const cssDeclarations = [`color: ${token.color || options.fg}`]; + if (token.fontStyle && FontStyle.Italic) { + cssDeclarations.push('font-style: italic'); + } + if (token.fontStyle && FontStyle.Bold) { + cssDeclarations.push('font-weight: bold'); + } + if (token.fontStyle && FontStyle.Underline) { + cssDeclarations.push('text-decoration: underline'); + } + + return h( + 'token', + { + style: cssDeclarations.join('; '), + }, + [escapeHtml(token.content)] + ); + } + + return h('pre', { className: 'shiki', style: `background-color: ${bg}` }, [ + options.langId ? `
${options.langId}
` : '', + h( + 'code', + {}, + lines.map((line, index) => { + const lineNumber = index + 1; + const lineOptions = optionsByLineNumber.get(lineNumber) ?? []; + const lineClasses = getLineClasses(lineOptions).join(' '); + return h( + 'line', + { + className: lineClasses, + }, + line.length === 0 + ? [' '] + : line.map((token) => handleToken(token)) + ); + }) + ), + ]); +} + +const htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', +} as const; + +function escapeHtml(html: string) { + return (html || '').replace( + /[&<>"']/g, + (chr) => htmlEscapes[chr as keyof typeof htmlEscapes] + ); +} + +function getLineClasses(lineOptions: { classes?: string }[]) { + const lineClasses = new Set(['line']); + for (const lineOption of lineOptions) { + for (const lineClass of lineOption.classes ?? []) { + lineClasses.add(lineClass); + } + } + return Array.from(lineClasses); +} diff --git a/cursorless-nx/libs/generate-examples/tsconfig.json b/cursorless-nx/libs/generate-examples/tsconfig.json new file mode 100644 index 0000000000..01d978e7e6 --- /dev/null +++ b/cursorless-nx/libs/generate-examples/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "module": "ESNext", + "target": "ESNext", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "esModuleInterop": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/cursorless-nx/libs/generate-examples/tsconfig.lib.json b/cursorless-nx/libs/generate-examples/tsconfig.lib.json new file mode 100644 index 0000000000..694751a4ef --- /dev/null +++ b/cursorless-nx/libs/generate-examples/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": [] + }, + "include": ["**/*.ts", "jest.config.js"], + "exclude": ["jest.config.js", "**/*.spec.ts", "**/*.test.ts"] +} diff --git a/cursorless-nx/libs/generate-examples/tsconfig.spec.json b/cursorless-nx/libs/generate-examples/tsconfig.spec.json new file mode 100644 index 0000000000..ef1c413913 --- /dev/null +++ b/cursorless-nx/libs/generate-examples/tsconfig.spec.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": ["jest.config.js", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] +} From e59736531420b4f053b087af6edbc83b129dac08 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 25 Mar 2024 11:18:37 -0700 Subject: [PATCH 010/211] chore: Move generate-examples to packages folder --- {cursorless-nx/libs => packages}/generate-examples/.babelrc | 0 {cursorless-nx/libs => packages}/generate-examples/.eslintrc.json | 0 {cursorless-nx/libs => packages}/generate-examples/README.md | 0 {cursorless-nx/libs => packages}/generate-examples/jest.config.js | 0 .../libs => packages}/generate-examples/package-lock.json | 0 {cursorless-nx/libs => packages}/generate-examples/package.json | 0 {cursorless-nx/libs => packages}/generate-examples/project.json | 0 {cursorless-nx/libs => packages}/generate-examples/src/index.ts | 0 .../generate-examples/src/lib/buildDictionary.ts | 0 .../generate-examples/src/lib/buildSpokenForm.ts | 0 .../generate-examples/src/lib/generate-examples.ts | 0 .../generate-examples/src/lib/generateHtml.spec.ts | 0 .../libs => packages}/generate-examples/src/lib/generateHtml.ts | 0 .../libs => packages}/generate-examples/src/lib/loadFixture.ts | 0 .../libs => packages}/generate-examples/src/lib/renderToHtml.ts | 0 {cursorless-nx/libs => packages}/generate-examples/tsconfig.json | 0 .../libs => packages}/generate-examples/tsconfig.lib.json | 0 .../libs => packages}/generate-examples/tsconfig.spec.json | 0 18 files changed, 0 insertions(+), 0 deletions(-) rename {cursorless-nx/libs => packages}/generate-examples/.babelrc (100%) rename {cursorless-nx/libs => packages}/generate-examples/.eslintrc.json (100%) rename {cursorless-nx/libs => packages}/generate-examples/README.md (100%) rename {cursorless-nx/libs => packages}/generate-examples/jest.config.js (100%) rename {cursorless-nx/libs => packages}/generate-examples/package-lock.json (100%) rename {cursorless-nx/libs => packages}/generate-examples/package.json (100%) rename {cursorless-nx/libs => packages}/generate-examples/project.json (100%) rename {cursorless-nx/libs => packages}/generate-examples/src/index.ts (100%) rename {cursorless-nx/libs => packages}/generate-examples/src/lib/buildDictionary.ts (100%) rename {cursorless-nx/libs => packages}/generate-examples/src/lib/buildSpokenForm.ts (100%) rename {cursorless-nx/libs => packages}/generate-examples/src/lib/generate-examples.ts (100%) rename {cursorless-nx/libs => packages}/generate-examples/src/lib/generateHtml.spec.ts (100%) rename {cursorless-nx/libs => packages}/generate-examples/src/lib/generateHtml.ts (100%) rename {cursorless-nx/libs => packages}/generate-examples/src/lib/loadFixture.ts (100%) rename {cursorless-nx/libs => packages}/generate-examples/src/lib/renderToHtml.ts (100%) rename {cursorless-nx/libs => packages}/generate-examples/tsconfig.json (100%) rename {cursorless-nx/libs => packages}/generate-examples/tsconfig.lib.json (100%) rename {cursorless-nx/libs => packages}/generate-examples/tsconfig.spec.json (100%) diff --git a/cursorless-nx/libs/generate-examples/.babelrc b/packages/generate-examples/.babelrc similarity index 100% rename from cursorless-nx/libs/generate-examples/.babelrc rename to packages/generate-examples/.babelrc diff --git a/cursorless-nx/libs/generate-examples/.eslintrc.json b/packages/generate-examples/.eslintrc.json similarity index 100% rename from cursorless-nx/libs/generate-examples/.eslintrc.json rename to packages/generate-examples/.eslintrc.json diff --git a/cursorless-nx/libs/generate-examples/README.md b/packages/generate-examples/README.md similarity index 100% rename from cursorless-nx/libs/generate-examples/README.md rename to packages/generate-examples/README.md diff --git a/cursorless-nx/libs/generate-examples/jest.config.js b/packages/generate-examples/jest.config.js similarity index 100% rename from cursorless-nx/libs/generate-examples/jest.config.js rename to packages/generate-examples/jest.config.js diff --git a/cursorless-nx/libs/generate-examples/package-lock.json b/packages/generate-examples/package-lock.json similarity index 100% rename from cursorless-nx/libs/generate-examples/package-lock.json rename to packages/generate-examples/package-lock.json diff --git a/cursorless-nx/libs/generate-examples/package.json b/packages/generate-examples/package.json similarity index 100% rename from cursorless-nx/libs/generate-examples/package.json rename to packages/generate-examples/package.json diff --git a/cursorless-nx/libs/generate-examples/project.json b/packages/generate-examples/project.json similarity index 100% rename from cursorless-nx/libs/generate-examples/project.json rename to packages/generate-examples/project.json diff --git a/cursorless-nx/libs/generate-examples/src/index.ts b/packages/generate-examples/src/index.ts similarity index 100% rename from cursorless-nx/libs/generate-examples/src/index.ts rename to packages/generate-examples/src/index.ts diff --git a/cursorless-nx/libs/generate-examples/src/lib/buildDictionary.ts b/packages/generate-examples/src/lib/buildDictionary.ts similarity index 100% rename from cursorless-nx/libs/generate-examples/src/lib/buildDictionary.ts rename to packages/generate-examples/src/lib/buildDictionary.ts diff --git a/cursorless-nx/libs/generate-examples/src/lib/buildSpokenForm.ts b/packages/generate-examples/src/lib/buildSpokenForm.ts similarity index 100% rename from cursorless-nx/libs/generate-examples/src/lib/buildSpokenForm.ts rename to packages/generate-examples/src/lib/buildSpokenForm.ts diff --git a/cursorless-nx/libs/generate-examples/src/lib/generate-examples.ts b/packages/generate-examples/src/lib/generate-examples.ts similarity index 100% rename from cursorless-nx/libs/generate-examples/src/lib/generate-examples.ts rename to packages/generate-examples/src/lib/generate-examples.ts diff --git a/cursorless-nx/libs/generate-examples/src/lib/generateHtml.spec.ts b/packages/generate-examples/src/lib/generateHtml.spec.ts similarity index 100% rename from cursorless-nx/libs/generate-examples/src/lib/generateHtml.spec.ts rename to packages/generate-examples/src/lib/generateHtml.spec.ts diff --git a/cursorless-nx/libs/generate-examples/src/lib/generateHtml.ts b/packages/generate-examples/src/lib/generateHtml.ts similarity index 100% rename from cursorless-nx/libs/generate-examples/src/lib/generateHtml.ts rename to packages/generate-examples/src/lib/generateHtml.ts diff --git a/cursorless-nx/libs/generate-examples/src/lib/loadFixture.ts b/packages/generate-examples/src/lib/loadFixture.ts similarity index 100% rename from cursorless-nx/libs/generate-examples/src/lib/loadFixture.ts rename to packages/generate-examples/src/lib/loadFixture.ts diff --git a/cursorless-nx/libs/generate-examples/src/lib/renderToHtml.ts b/packages/generate-examples/src/lib/renderToHtml.ts similarity index 100% rename from cursorless-nx/libs/generate-examples/src/lib/renderToHtml.ts rename to packages/generate-examples/src/lib/renderToHtml.ts diff --git a/cursorless-nx/libs/generate-examples/tsconfig.json b/packages/generate-examples/tsconfig.json similarity index 100% rename from cursorless-nx/libs/generate-examples/tsconfig.json rename to packages/generate-examples/tsconfig.json diff --git a/cursorless-nx/libs/generate-examples/tsconfig.lib.json b/packages/generate-examples/tsconfig.lib.json similarity index 100% rename from cursorless-nx/libs/generate-examples/tsconfig.lib.json rename to packages/generate-examples/tsconfig.lib.json diff --git a/cursorless-nx/libs/generate-examples/tsconfig.spec.json b/packages/generate-examples/tsconfig.spec.json similarity index 100% rename from cursorless-nx/libs/generate-examples/tsconfig.spec.json rename to packages/generate-examples/tsconfig.spec.json From b0727b622c7615eee13e7258ebd1c7b87021a43c Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 26 Mar 2024 19:57:42 -0700 Subject: [PATCH 011/211] chore: mkdir test-case-component, pnpm init --- packages/test-case-component/package.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 packages/test-case-component/package.json diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json new file mode 100644 index 0000000000..1960e5059e --- /dev/null +++ b/packages/test-case-component/package.json @@ -0,0 +1,12 @@ +{ + "name": "test-case-component", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC" +} From 4e033355b2d54ed0a20f8ceeb6d0d9d93abb4654 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 26 Mar 2024 19:58:53 -0700 Subject: [PATCH 012/211] chore: Add description for test-case-component/package.json --- packages/test-case-component/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index 1960e5059e..18c61dc3ed 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -1,7 +1,7 @@ { "name": "test-case-component", "version": "1.0.0", - "description": "", + "description": "Component for displaying results of test cases in cursorless-vscode-e2e", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" From 38d4f02d16d7d0cf6468fe5a34c7965fbae5e46f Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 26 Mar 2024 19:59:58 -0700 Subject: [PATCH 013/211] chore: Move generate-examples/src to test-case-examples/src --- packages/{generate-examples => test-case-component}/src/index.ts | 0 .../src/lib/buildDictionary.ts | 0 .../src/lib/buildSpokenForm.ts | 0 .../src/lib/generate-examples.ts | 0 .../src/lib/generateHtml.spec.ts | 0 .../src/lib/generateHtml.ts | 0 .../src/lib/loadFixture.ts | 0 .../src/lib/renderToHtml.ts | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename packages/{generate-examples => test-case-component}/src/index.ts (100%) rename packages/{generate-examples => test-case-component}/src/lib/buildDictionary.ts (100%) rename packages/{generate-examples => test-case-component}/src/lib/buildSpokenForm.ts (100%) rename packages/{generate-examples => test-case-component}/src/lib/generate-examples.ts (100%) rename packages/{generate-examples => test-case-component}/src/lib/generateHtml.spec.ts (100%) rename packages/{generate-examples => test-case-component}/src/lib/generateHtml.ts (100%) rename packages/{generate-examples => test-case-component}/src/lib/loadFixture.ts (100%) rename packages/{generate-examples => test-case-component}/src/lib/renderToHtml.ts (100%) diff --git a/packages/generate-examples/src/index.ts b/packages/test-case-component/src/index.ts similarity index 100% rename from packages/generate-examples/src/index.ts rename to packages/test-case-component/src/index.ts diff --git a/packages/generate-examples/src/lib/buildDictionary.ts b/packages/test-case-component/src/lib/buildDictionary.ts similarity index 100% rename from packages/generate-examples/src/lib/buildDictionary.ts rename to packages/test-case-component/src/lib/buildDictionary.ts diff --git a/packages/generate-examples/src/lib/buildSpokenForm.ts b/packages/test-case-component/src/lib/buildSpokenForm.ts similarity index 100% rename from packages/generate-examples/src/lib/buildSpokenForm.ts rename to packages/test-case-component/src/lib/buildSpokenForm.ts diff --git a/packages/generate-examples/src/lib/generate-examples.ts b/packages/test-case-component/src/lib/generate-examples.ts similarity index 100% rename from packages/generate-examples/src/lib/generate-examples.ts rename to packages/test-case-component/src/lib/generate-examples.ts diff --git a/packages/generate-examples/src/lib/generateHtml.spec.ts b/packages/test-case-component/src/lib/generateHtml.spec.ts similarity index 100% rename from packages/generate-examples/src/lib/generateHtml.spec.ts rename to packages/test-case-component/src/lib/generateHtml.spec.ts diff --git a/packages/generate-examples/src/lib/generateHtml.ts b/packages/test-case-component/src/lib/generateHtml.ts similarity index 100% rename from packages/generate-examples/src/lib/generateHtml.ts rename to packages/test-case-component/src/lib/generateHtml.ts diff --git a/packages/generate-examples/src/lib/loadFixture.ts b/packages/test-case-component/src/lib/loadFixture.ts similarity index 100% rename from packages/generate-examples/src/lib/loadFixture.ts rename to packages/test-case-component/src/lib/loadFixture.ts diff --git a/packages/generate-examples/src/lib/renderToHtml.ts b/packages/test-case-component/src/lib/renderToHtml.ts similarity index 100% rename from packages/generate-examples/src/lib/renderToHtml.ts rename to packages/test-case-component/src/lib/renderToHtml.ts From fd5e31e60139c9212537e16fbf14b891fc0933ac Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 25 Mar 2024 11:42:47 -0700 Subject: [PATCH 014/211] fix: Update fixturesDir to point correctly --- packages/test-case-component/src/lib/loadFixture.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/src/lib/loadFixture.ts b/packages/test-case-component/src/lib/loadFixture.ts index 1cec6937d0..4f4c775014 100644 --- a/packages/test-case-component/src/lib/loadFixture.ts +++ b/packages/test-case-component/src/lib/loadFixture.ts @@ -6,8 +6,9 @@ import { buildSpokenForm } from './buildSpokenForm'; import { generateHtml, SelectionAnchor } from './generateHtml'; const fixturesDir = path.join( - '../../../packages', + '../', 'cursorless-vscode-e2e', + 'src', 'suite', 'fixtures', 'recorded' From c6ccbfbf84a7069552932ea0902f7114bf9daa52 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 25 Mar 2024 11:43:44 -0700 Subject: [PATCH 015/211] fix: Use command.spokenForm from data obj --- packages/test-case-component/src/lib/loadFixture.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/test-case-component/src/lib/loadFixture.ts b/packages/test-case-component/src/lib/loadFixture.ts index 4f4c775014..03d6db0bc0 100644 --- a/packages/test-case-component/src/lib/loadFixture.ts +++ b/packages/test-case-component/src/lib/loadFixture.ts @@ -2,7 +2,6 @@ import path from 'path'; import fs from 'fs-extra'; import * as yaml from 'yaml'; -import { buildSpokenForm } from './buildSpokenForm'; import { generateHtml, SelectionAnchor } from './generateHtml'; const fixturesDir = path.join( @@ -71,7 +70,7 @@ export async function loadFixture(folder: string, name: string) { ); return { language: data.languageId, - command: buildSpokenForm(data.command), + command: data.command.spokenForm, originalCommand: data.command.spokenForm, during, before, From 92c448947bba91082f375b24c211eb38c599c07c Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 25 Mar 2024 12:41:47 -0700 Subject: [PATCH 016/211] fix: SelectionParser.parse error for UntypedTarget --- packages/test-case-component/src/lib/generateHtml.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/src/lib/generateHtml.ts b/packages/test-case-component/src/lib/generateHtml.ts index 8396ccdd11..d4499e4ce6 100644 --- a/packages/test-case-component/src/lib/generateHtml.ts +++ b/packages/test-case-component/src/lib/generateHtml.ts @@ -177,7 +177,14 @@ class SelectionParser { } parse(selection: CursorlessFixtureSelection) { - const { anchor: start, active: end } = selection; + let start, end; + if (selection.type === 'UntypedTarget') { + start = selection.contentRange.start.line; + end = selection.contentRange.end.line; + } else { + start = selection.anchor.line; + end = selection.active.line; + } for (let l = end.line; l <= start.line; l += 1) { if (l !== end.line && l !== start.line) { this.handleInsideLine(l); From 81203d51809881f0a86268e7a65d7013381178e9 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 25 Mar 2024 12:42:43 -0700 Subject: [PATCH 017/211] feat: Add originalData to loadFixture.ts --- packages/test-case-component/src/lib/loadFixture.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/lib/loadFixture.ts b/packages/test-case-component/src/lib/loadFixture.ts index 03d6db0bc0..80b8cbe317 100644 --- a/packages/test-case-component/src/lib/loadFixture.ts +++ b/packages/test-case-component/src/lib/loadFixture.ts @@ -71,7 +71,7 @@ export async function loadFixture(folder: string, name: string) { return { language: data.languageId, command: data.command.spokenForm, - originalCommand: data.command.spokenForm, + originalData: data, during, before, after, From a916c8c02f7751ca803130395db0b62298604fec Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 25 Mar 2024 15:37:40 -0700 Subject: [PATCH 018/211] chore: Add description to package.json --- packages/generate-examples/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/generate-examples/package.json b/packages/generate-examples/package.json index c569188084..fa9701bbbd 100644 --- a/packages/generate-examples/package.json +++ b/packages/generate-examples/package.json @@ -2,6 +2,7 @@ "name": "@cursorless/generate-examples", "version": "0.0.1", "type": "module", + "description": "Temp home for SimeonC's cursorless examples generator", "scripts": { "build": "tsx src/lib/buildDictionary", "test": "jest", From c562cd484cfc57cb2fded7a77a72f20775d98458 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 26 Mar 2024 20:02:47 -0700 Subject: [PATCH 019/211] chore: Bring dependencies from old package.json --- packages/test-case-component/package.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index 18c61dc3ed..b5942e722c 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -8,5 +8,12 @@ }, "keywords": [], "author": "", - "license": "ISC" + "license": "ISC", + "dependencies": { + "fs-extra": "11.1.0", + "prettier": "2.8.4", + "shiki": "0.14.3", + "tsx": "3.12.7", + "yaml": "2.2.1" + } } From e63a24bb68a07cc38e3a6ba7af3027619a47366b Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 26 Mar 2024 20:03:38 -0700 Subject: [PATCH 020/211] chore: Bring scripts from old package.json --- packages/test-case-component/package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index b5942e722c..5cf3cee3f9 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -4,7 +4,9 @@ "description": "Component for displaying results of test cases in cursorless-vscode-e2e", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "build": "tsx src/lib/buildDictionary", + "test": "jest", + "test:watch": "jest --watch" }, "keywords": [], "author": "", From b8c912eba04b2bfd046711873820812e7bfe3204 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 26 Mar 2024 20:04:17 -0700 Subject: [PATCH 021/211] chore: Update package.json name --- packages/test-case-component/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index 5cf3cee3f9..871bad7fe0 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -1,5 +1,5 @@ { - "name": "test-case-component", + "name": "@cursorless/test-case-component", "version": "1.0.0", "description": "Component for displaying results of test cases in cursorless-vscode-e2e", "main": "index.js", From 40c42fe88fbee4373ccb4fd65f19bc42806fee4a Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 26 Mar 2024 20:05:00 -0700 Subject: [PATCH 022/211] chore: Update version to 0.0.1 --- packages/test-case-component/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index 871bad7fe0..9b3bbe1225 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -1,6 +1,6 @@ { "name": "@cursorless/test-case-component", - "version": "1.0.0", + "version": "0.0.1", "description": "Component for displaying results of test cases in cursorless-vscode-e2e", "main": "index.js", "scripts": { From 66c7f9568fd5bea4fe7436513cf42a9cf9596192 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 26 Mar 2024 20:06:17 -0700 Subject: [PATCH 023/211] chore: Add type: module to package.json --- packages/test-case-component/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index 9b3bbe1225..4e5a8e59c5 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -1,6 +1,7 @@ { "name": "@cursorless/test-case-component", "version": "0.0.1", + "type": "module", "description": "Component for displaying results of test cases in cursorless-vscode-e2e", "main": "index.js", "scripts": { From 8872696581bafd3856f313312d5fd620d0848e83 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 26 Mar 2024 20:11:22 -0700 Subject: [PATCH 024/211] chore: Create basic tsconfig.json for test-case-component --- packages/test-case-component/tsconfig.json | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 packages/test-case-component/tsconfig.json diff --git a/packages/test-case-component/tsconfig.json b/packages/test-case-component/tsconfig.json new file mode 100644 index 0000000000..8cbf5e33fe --- /dev/null +++ b/packages/test-case-component/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "out", + "rootDir": "src" + }, + "references": [], + "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] +} From fc539be37e96545d7ca55fc481fd7080c6402caf Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 26 Mar 2024 20:17:50 -0700 Subject: [PATCH 025/211] chore: Copy jest config from pkgs/cheatsheet --- packages/test-case-component/jest.config.ts | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 packages/test-case-component/jest.config.ts diff --git a/packages/test-case-component/jest.config.ts b/packages/test-case-component/jest.config.ts new file mode 100644 index 0000000000..f7a6a00f40 --- /dev/null +++ b/packages/test-case-component/jest.config.ts @@ -0,0 +1,8 @@ +import type { Config } from "jest"; + +const config: Config = { + preset: "ts-jest", + testEnvironment: "jsdom", +}; + +export default config; From 48a5012153f0fee63f7c27650c0a928219a852a7 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 26 Mar 2024 20:21:56 -0700 Subject: [PATCH 026/211] chore: Run `pnpm -w fix:meta` for test-case-component --- packages/test-case-component/package.json | 20 +++++++++++++++++--- tsconfig.json | 3 +++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index 4e5a8e59c5..7058a98592 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -3,20 +3,34 @@ "version": "0.0.1", "type": "module", "description": "Component for displaying results of test cases in cursorless-vscode-e2e", - "main": "index.js", + "main": "./out/index.js", "scripts": { "build": "tsx src/lib/buildDictionary", "test": "jest", - "test:watch": "jest --watch" + "test:watch": "jest --watch", + "compile:tsc": "tsc --build", + "compile:esbuild": "esbuild ./src/index.ts --sourcemap --format=esm --bundle --packages=external --outfile=./out/index.js", + "compile": "pnpm compile:tsc && pnpm compile:esbuild", + "watch:tsc": "pnpm compile:tsc --watch", + "watch:esbuild": "pnpm compile:esbuild --watch", + "watch": "pnpm run --filter @cursorless/test-case-component --parallel '/^watch:.*/'", + "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "keywords": [], "author": "", - "license": "ISC", + "license": "MIT", "dependencies": { "fs-extra": "11.1.0", "prettier": "2.8.4", "shiki": "0.14.3", "tsx": "3.12.7", "yaml": "2.2.1" + }, + "types": "./out/index.d.ts", + "exports": { + ".": { + "cursorless:bundler": "./src/index.ts", + "default": "./out/index.js" + } } } diff --git a/tsconfig.json b/tsconfig.json index 20ea84c510..48ec0aa257 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -68,6 +68,9 @@ { "path": "./packages/test-case-recorder" }, + { + "path": "./packages/test-case-component" + }, { "path": "./packages/test-harness" }, From f65c2e456e19be03de7295b734f9e31638faaf52 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 26 Mar 2024 20:22:41 -0700 Subject: [PATCH 027/211] chore: Delete generate-examples folder --- packages/generate-examples/.babelrc | 10 - packages/generate-examples/.eslintrc.json | 18 - packages/generate-examples/README.md | 11 - packages/generate-examples/jest.config.js | 15 - packages/generate-examples/package-lock.json | 881 ------------------ packages/generate-examples/package.json | 18 - packages/generate-examples/project.json | 33 - packages/generate-examples/tsconfig.json | 24 - packages/generate-examples/tsconfig.lib.json | 10 - packages/generate-examples/tsconfig.spec.json | 9 - 10 files changed, 1029 deletions(-) delete mode 100644 packages/generate-examples/.babelrc delete mode 100644 packages/generate-examples/.eslintrc.json delete mode 100644 packages/generate-examples/README.md delete mode 100644 packages/generate-examples/jest.config.js delete mode 100644 packages/generate-examples/package-lock.json delete mode 100644 packages/generate-examples/package.json delete mode 100644 packages/generate-examples/project.json delete mode 100644 packages/generate-examples/tsconfig.json delete mode 100644 packages/generate-examples/tsconfig.lib.json delete mode 100644 packages/generate-examples/tsconfig.spec.json diff --git a/packages/generate-examples/.babelrc b/packages/generate-examples/.babelrc deleted file mode 100644 index e24a5465f3..0000000000 --- a/packages/generate-examples/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/web/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/generate-examples/.eslintrc.json b/packages/generate-examples/.eslintrc.json deleted file mode 100644 index 9d9c0db55b..0000000000 --- a/packages/generate-examples/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/generate-examples/README.md b/packages/generate-examples/README.md deleted file mode 100644 index 41ab501054..0000000000 --- a/packages/generate-examples/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# generate-examples - -This library was generated with [Nx](https://nx.dev). - -## Building - -Run `nx build generate-examples` to build the library. - -## Running unit tests - -Run `nx test generate-examples` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/packages/generate-examples/jest.config.js b/packages/generate-examples/jest.config.js deleted file mode 100644 index 85725d68fb..0000000000 --- a/packages/generate-examples/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/* eslint-disable */ -export default { - displayName: 'generate-examples', - preset: '../../jest.preset.js', - globals: { - 'ts-jest': { - tsconfig: '/tsconfig.spec.json', - }, - }, - transform: { - '^.+\\.[tj]s$': 'ts-jest', - }, - moduleFileExtensions: ['ts', 'js', 'html'], - coverageDirectory: '../../coverage/libs/generate-examples', -}; diff --git a/packages/generate-examples/package-lock.json b/packages/generate-examples/package-lock.json deleted file mode 100644 index c7c5eb2cdd..0000000000 --- a/packages/generate-examples/package-lock.json +++ /dev/null @@ -1,881 +0,0 @@ -{ - "name": "@cursorless/generate-examples", - "version": "0.0.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@cursorless/generate-examples", - "version": "0.0.1", - "dependencies": { - "fs-extra": "11.1.0", - "prettier": "2.8.4", - "shiki": "0.14.3", - "tsx": "3.12.7", - "yaml": "2.2.1" - } - }, - "node_modules/@esbuild-kit/cjs-loader": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", - "integrity": "sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==", - "dependencies": { - "@esbuild-kit/core-utils": "^3.0.0", - "get-tsconfig": "^4.4.0" - } - }, - "node_modules/@esbuild-kit/core-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz", - "integrity": "sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==", - "dependencies": { - "esbuild": "~0.17.6", - "source-map-support": "^0.5.21" - } - }, - "node_modules/@esbuild-kit/esm-loader": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz", - "integrity": "sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==", - "dependencies": { - "@esbuild-kit/core-utils": "^3.0.0", - "get-tsconfig": "^4.4.0" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" - } - }, - "node_modules/fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/get-tsconfig": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.2.tgz", - "integrity": "sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/shiki": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.3.tgz", - "integrity": "sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==", - "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/tsx": { - "version": "3.12.7", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.7.tgz", - "integrity": "sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==", - "dependencies": { - "@esbuild-kit/cjs-loader": "^2.4.2", - "@esbuild-kit/core-utils": "^3.0.0", - "@esbuild-kit/esm-loader": "^2.5.5" - }, - "bin": { - "tsx": "dist/cli.js" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" - }, - "node_modules/yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", - "engines": { - "node": ">= 14" - } - } - }, - "dependencies": { - "@esbuild-kit/cjs-loader": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", - "integrity": "sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==", - "requires": { - "@esbuild-kit/core-utils": "^3.0.0", - "get-tsconfig": "^4.4.0" - } - }, - "@esbuild-kit/core-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz", - "integrity": "sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==", - "requires": { - "esbuild": "~0.17.6", - "source-map-support": "^0.5.21" - } - }, - "@esbuild-kit/esm-loader": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz", - "integrity": "sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==", - "requires": { - "@esbuild-kit/core-utils": "^3.0.0", - "get-tsconfig": "^4.4.0" - } - }, - "@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", - "optional": true - }, - "ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", - "requires": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" - } - }, - "fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "get-tsconfig": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.2.tgz", - "integrity": "sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==", - "requires": { - "resolve-pkg-maps": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==" - }, - "resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==" - }, - "shiki": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.3.tgz", - "integrity": "sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==", - "requires": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "tsx": { - "version": "3.12.7", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.7.tgz", - "integrity": "sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==", - "requires": { - "@esbuild-kit/cjs-loader": "^2.4.2", - "@esbuild-kit/core-utils": "^3.0.0", - "@esbuild-kit/esm-loader": "^2.5.5", - "fsevents": "~2.3.2" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" - }, - "vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" - }, - "yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==" - } - } -} diff --git a/packages/generate-examples/package.json b/packages/generate-examples/package.json deleted file mode 100644 index fa9701bbbd..0000000000 --- a/packages/generate-examples/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@cursorless/generate-examples", - "version": "0.0.1", - "type": "module", - "description": "Temp home for SimeonC's cursorless examples generator", - "scripts": { - "build": "tsx src/lib/buildDictionary", - "test": "jest", - "test:watch": "jest --watch" - }, - "dependencies": { - "fs-extra": "11.1.0", - "prettier": "2.8.4", - "shiki": "0.14.3", - "tsx": "3.12.7", - "yaml": "2.2.1" - } -} diff --git a/packages/generate-examples/project.json b/packages/generate-examples/project.json deleted file mode 100644 index 1396590a7e..0000000000 --- a/packages/generate-examples/project.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "libs/generate-examples/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/js:tsc", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/libs/generate-examples", - "main": "libs/generate-examples/src/index.ts", - "tsConfig": "libs/generate-examples/tsconfig.lib.json", - "assets": ["libs/generate-examples/*.md"] - } - }, - "lint": { - "executor": "@nrwl/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["libs/generate-examples/**/*.ts"] - } - }, - "test": { - "executor": "@nrwl/jest:jest", - "outputs": ["coverage/libs/generate-examples"], - "options": { - "jestConfig": "libs/generate-examples/jest.config.ts", - "passWithNoTests": true - } - } - }, - "tags": [] -} diff --git a/packages/generate-examples/tsconfig.json b/packages/generate-examples/tsconfig.json deleted file mode 100644 index 01d978e7e6..0000000000 --- a/packages/generate-examples/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "module": "ESNext", - "target": "ESNext", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "esModuleInterop": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/packages/generate-examples/tsconfig.lib.json b/packages/generate-examples/tsconfig.lib.json deleted file mode 100644 index 694751a4ef..0000000000 --- a/packages/generate-examples/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts", "jest.config.js"], - "exclude": ["jest.config.js", "**/*.spec.ts", "**/*.test.ts"] -} diff --git a/packages/generate-examples/tsconfig.spec.json b/packages/generate-examples/tsconfig.spec.json deleted file mode 100644 index ef1c413913..0000000000 --- a/packages/generate-examples/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.js", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] -} From 22cd6f09335baa48117e672585227611b1317ff5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Wed, 27 Mar 2024 05:34:39 +0000 Subject: [PATCH 028/211] [pre-commit.ci lite] apply automatic fixes --- packages/test-case-component/src/index.ts | 2 +- .../src/lib/buildDictionary.ts | 21 +-- .../src/lib/buildSpokenForm.ts | 133 ++++++++------- .../src/lib/generate-examples.ts | 2 +- .../src/lib/generateHtml.spec.ts | 70 ++++---- .../src/lib/generateHtml.ts | 153 ++++++++++-------- .../src/lib/loadFixture.ts | 44 ++--- .../src/lib/renderToHtml.ts | 100 ++++++------ 8 files changed, 284 insertions(+), 241 deletions(-) diff --git a/packages/test-case-component/src/index.ts b/packages/test-case-component/src/index.ts index 1efb8fa2e7..60e8541ad4 100644 --- a/packages/test-case-component/src/index.ts +++ b/packages/test-case-component/src/index.ts @@ -1 +1 @@ -export * from './lib/generate-examples'; +export * from "./lib/generate-examples"; diff --git a/packages/test-case-component/src/lib/buildDictionary.ts b/packages/test-case-component/src/lib/buildDictionary.ts index de3a6c2780..67be2db5e3 100644 --- a/packages/test-case-component/src/lib/buildDictionary.ts +++ b/packages/test-case-component/src/lib/buildDictionary.ts @@ -1,23 +1,24 @@ -import { loadFixture } from './loadFixture.js'; +import { loadFixture } from "./loadFixture.js"; Promise.all([ - loadFixture('actions', 'bringArgMadeAfterLook'), - loadFixture('decorations', 'chuckBlockAirUntilBatt'), - loadFixture('decorations', 'cutFine'), - loadFixture('decorations', 'chuckLineFine'), - loadFixture('actions', 'bringAirAndBatAndCapToAfterItemEach'), + loadFixture("actions", "bringArgMadeAfterLook"), + loadFixture("decorations", "chuckBlockAirUntilBatt"), + loadFixture("decorations", "cutFine"), + loadFixture("decorations", "chuckLineFine"), + loadFixture("actions", "bringAirAndBatAndCapToAfterItemEach"), ]).then((allItems) => { allItems.forEach((item) => { - if (item) + if (item) { console.log(` .wrapper .before - ${item.before.replace(/\n/gi, '\n ')} + ${item.before.replace(/\n/gi, "\n ")} .during - ${(item.during || item.before).replace(/\n/gi, '\n ')} + ${(item.during || item.before).replace(/\n/gi, "\n ")} .command ${item.command} .after - ${item.after.replace(/\n/gi, '\n ')} + ${item.after.replace(/\n/gi, "\n ")} `); + } }); }); diff --git a/packages/test-case-component/src/lib/buildSpokenForm.ts b/packages/test-case-component/src/lib/buildSpokenForm.ts index 26f974c6c1..586ef3a0b6 100644 --- a/packages/test-case-component/src/lib/buildSpokenForm.ts +++ b/packages/test-case-component/src/lib/buildSpokenForm.ts @@ -1,22 +1,22 @@ -import path from 'path'; -import fs from 'fs-extra'; -const cursorlessRoot = path.resolve('../../../src'); +import path from "path"; +import fs from "fs-extra"; +const cursorlessRoot = path.resolve("../../../src"); const commandDictionaryJson = fs.readJSONSync( path.join( cursorlessRoot, - '../cursorless-nx/libs/cheatsheet/src/lib/data/sampleSpokenFormInfos/defaults.json' - ) -) as typeof import('../../../cheatsheet/src/lib/data/sampleSpokenFormInfos/defaults.json'); + "../cursorless-nx/libs/cheatsheet/src/lib/data/sampleSpokenFormInfos/defaults.json", + ), +) as typeof import("../../../cheatsheet/src/lib/data/sampleSpokenFormInfos/defaults.json"); -const letters = 'abcdefghijklmnopqrstuvwxyz'.split(''); +const letters = "abcdefghijklmnopqrstuvwxyz".split(""); const defaultAlphabet = - 'air bat cap drum each fine gust harp sit jury crunch look made near odd pit quench red sun trap urge vest whale plex yank zip' - .split(' ') + "air bat cap drum each fine gust harp sit jury crunch look made near odd pit quench red sun trap urge vest whale plex yank zip" + .split(" ") .map((word, index) => [letters[index], word] as const); -const defaultDigits = 'zero one two three four five six seven eight nine' - .split(' ') +const defaultDigits = "zero one two three four five six seven eight nine" + .split(" ") .map((word, index) => [`${index}`, word] as const); const letterDictionary = defaultAlphabet @@ -32,40 +32,40 @@ const commandDictionary = commandDictionaryJson.sections.reduce( ...r, [id]: variations[0].spokenForm, }), - {} + {}, ), }; }, {} as Record< - typeof commandDictionaryJson['sections'][number]['id'], + (typeof commandDictionaryJson)["sections"][number]["id"], Record< - typeof commandDictionaryJson['sections'][number]['items'][number]['id'], - typeof commandDictionaryJson['sections'][number]['items'][number]['variations'][0]['spokenForm'] + (typeof commandDictionaryJson)["sections"][number]["items"][number]["id"], + (typeof commandDictionaryJson)["sections"][number]["items"][number]["variations"][0]["spokenForm"] > - > + >, ); type CommandDictionary = typeof commandDictionary; interface Modifier { - type: 'position' | 'containingScope'; - position: keyof CommandDictionary['positions']; + type: "position" | "containingScope"; + position: keyof CommandDictionary["positions"]; scopeType: { - type: keyof CommandDictionary['scopes']; + type: keyof CommandDictionary["scopes"]; }; } type PrimitiveTarget = { - type: 'primitive'; + type: "primitive"; modifiers?: Modifier[]; - position?: keyof CommandDictionary['positions']; + position?: keyof CommandDictionary["positions"]; mark?: { - type: 'decoratedSymbol'; + type: "decoratedSymbol"; character: keyof typeof letterDictionary; }; }; type RangeTarget = { - type: 'range'; + type: "range"; excludeAnchor?: boolean; excludeActive?: boolean; anchor: Target; @@ -73,7 +73,7 @@ type RangeTarget = { }; type ListTarget = { - type: 'list'; + type: "list"; elements: Target[]; }; @@ -82,7 +82,7 @@ type Command = { action: { name: string }; targets: Target[] }; function interpolate( template: string, - handleAction: (counter: number) => string + handleAction: (counter: number) => string, ) { let counter = -1; return template.replace(/<[a-z0-9]+>/gi, () => handleAction(++counter)); @@ -97,22 +97,24 @@ class SpokenForm { public build() { return interpolate(this.getTemplate(), (counter) => - this.parseTarget(this.command.targets[counter]) + this.parseTarget(this.command.targets[counter]), ); } private getTemplate() { - return commandDictionary['actions'][this.command.action.name]; + return commandDictionary["actions"][this.command.action.name]; } private parseTarget(target: Target): string { - if (!target) throw new Error(`Excess mark`); + if (!target) { + throw new Error(`Excess mark`); + } switch (target.type) { - case 'primitive': + case "primitive": return this.parsePrimitiveTarget(target); - case 'range': + case "range": return this.parseRangeTarget(target); - case 'list': + case "list": return this.parseListTarget(target); default: { // @ts-expect-error - if this is hit we need to add new cases and types @@ -126,58 +128,73 @@ class SpokenForm { ?.filter((v): v is Modifier => !!v) ?.map((mod) => { switch (mod.type) { - case 'position': - return commandDictionary['positions'][mod.position]; - case 'containingScope': - return commandDictionary['scopes'][mod.scopeType.type]; + case "position": + return commandDictionary["positions"][mod.position]; + case "containingScope": + return commandDictionary["scopes"][mod.scopeType.type]; } throw new Error(`Unknown modifier type ${mod.type}`); }) - .join(' ') || ''; + .join(" ") || ""; if (target.position) { - prefix = `${commandDictionary['positions'][target.position]} ${prefix}`; + prefix = `${commandDictionary["positions"][target.position]} ${prefix}`; } if (target.mark) { - if (target.mark.type !== 'decoratedSymbol') + if (target.mark.type !== "decoratedSymbol") { throw new Error(`Unknown target type ${target.mark.type}`); + } return ( - (prefix ? prefix + ' ' : '') + letterDictionary[target.mark.character] + (prefix ? prefix + " " : "") + letterDictionary[target.mark.character] ); } - if (!prefix) throw new Error(`Unknown mark`); + if (!prefix) { + throw new Error(`Unknown mark`); + } return prefix; } parseRangeTarget(target: RangeTarget) { let compoundTargetKey; - if (target.excludeAnchor && target.excludeActive) - compoundTargetKey = 'rangeExclusive'; - else if (!target.excludeAnchor && !target.excludeActive) - compoundTargetKey = 'rangeInclusive'; - else if (!target.excludeAnchor && target.excludeActive) - compoundTargetKey = 'rangeExcludingEnd'; - else throw new Error(`Bad inclusion range`); + if (target.excludeAnchor && target.excludeActive) { + compoundTargetKey = "rangeExclusive"; + } else if (!target.excludeAnchor && !target.excludeActive) { + compoundTargetKey = "rangeInclusive"; + } else if (!target.excludeAnchor && target.excludeActive) { + compoundTargetKey = "rangeExcludingEnd"; + } else { + throw new Error(`Bad inclusion range`); + } return interpolate( - commandDictionary['compoundTargets'][compoundTargetKey], + commandDictionary["compoundTargets"][compoundTargetKey], (index) => { - if (index === 0) return this.parseTarget(target.anchor); - if (index === 1) return this.parseTarget(target.active); - return ''; - } + if (index === 0) { + return this.parseTarget(target.anchor); + } + if (index === 1) { + return this.parseTarget(target.active); + } + return ""; + }, ); } parseListTarget(target: ListTarget) { return target.elements.reduce((result, element) => { - if (!result) return this.parseTarget(element); + if (!result) { + return this.parseTarget(element); + } return interpolate( - commandDictionary['compoundTargets']['listConnective'], + commandDictionary["compoundTargets"]["listConnective"], (index) => { - if (index === 0) return result; - if (index === 1) return this.parseTarget(element); + if (index === 0) { + return result; + } + if (index === 1) { + return this.parseTarget(element); + } throw Error(`Invalid List`); - } + }, ); - }, ''); + }, ""); } } diff --git a/packages/test-case-component/src/lib/generate-examples.ts b/packages/test-case-component/src/lib/generate-examples.ts index 246cf0e168..c0113bc1f2 100644 --- a/packages/test-case-component/src/lib/generate-examples.ts +++ b/packages/test-case-component/src/lib/generate-examples.ts @@ -1,3 +1,3 @@ export function generateExamples(): string { - return 'generate-examples'; + return "generate-examples"; } diff --git a/packages/test-case-component/src/lib/generateHtml.spec.ts b/packages/test-case-component/src/lib/generateHtml.spec.ts index 8742a9e506..0b6d8f3705 100644 --- a/packages/test-case-component/src/lib/generateHtml.spec.ts +++ b/packages/test-case-component/src/lib/generateHtml.spec.ts @@ -1,31 +1,31 @@ -import prettier from 'prettier'; -import { generateHtml as unformettedFunc } from './generateHtml'; +import prettier from "prettier"; +import { generateHtml as unformettedFunc } from "./generateHtml"; async function generateHtml(...args: Parameters) { return prettier.format(await unformettedFunc(...args), { singleAttributePerLine: true, - htmlWhitespaceSensitivity: 'ignore', - parser: 'babel', + htmlWhitespaceSensitivity: "ignore", + parser: "babel", }); } -describe('generateHtml', () => { - it('should select whole line', async () => { +describe("generateHtml", () => { + it("should select whole line", async () => { expect( await generateHtml( { - documentContents: ' const oneLine = 1;\nconst line2 = 2;', + documentContents: " const oneLine = 1;\nconst line2 = 2;", selections: [ { - type: 'line', + type: "line", anchor: { line: 1, character: 0 }, active: { line: 1, character: 22 }, }, ], }, - 'typescript' - ) + "typescript", + ), ).toMatchInlineSnapshot(` "
 {
       "
     `);
   });
-  it('should select single token', async () => {
+  it("should select single token", async () => {
     expect(
       await generateHtml(
         {
-          documentContents: '  const oneLine = 1;\nconst line2 = 2;',
+          documentContents: "  const oneLine = 1;\nconst line2 = 2;",
           selections: [
             {
-              type: 'selection',
+              type: "selection",
               anchor: { line: 0, character: 8 },
               active: { line: 0, character: 15 },
             },
           ],
         },
 
-        'typescript'
-      )
+        "typescript",
+      ),
     ).toMatchInlineSnapshot(`
       "
 {
     `);
   });
 
-  it('should select multiple tokens', async () => {
+  it("should select multiple tokens", async () => {
     expect(
       await generateHtml(
         {
-          documentContents: 'const oneLine = 1;',
+          documentContents: "const oneLine = 1;",
           selections: [
             {
-              type: 'selection',
+              type: "selection",
               anchor: { line: 0, character: 6 },
               active: { line: 0, character: 17 },
             },
           ],
         },
 
-        'typescript'
-      )
+        "typescript",
+      ),
     ).toMatchInlineSnapshot(`
       "
 {
     `);
   });
 
-  it('should select inside tokens', async () => {
+  it("should select inside tokens", async () => {
     expect(
       await generateHtml(
         {
           documentContents: 'const oneLine = "line";',
           selections: [
             {
-              type: 'selection',
+              type: "selection",
               anchor: { line: 0, character: 9 },
               active: { line: 0, character: 19 },
             },
           ],
         },
 
-        'typescript'
-      )
+        "typescript",
+      ),
     ).toMatchInlineSnapshot(`
       "
 {
     `);
   });
 
-  it('should select inside single token', async () => {
+  it("should select inside single token", async () => {
     expect(
       await generateHtml(
         {
-          documentContents: 'const oneLine = 1;',
+          documentContents: "const oneLine = 1;",
           selections: [
             {
-              type: 'selection',
+              type: "selection",
               anchor: { line: 0, character: 9 },
               active: { line: 0, character: 11 },
             },
           ],
         },
 
-        'typescript'
-      )
+        "typescript",
+      ),
     ).toMatchInlineSnapshot(`
       "
 {
       "
     `);
   });
-  it('should select superset ranges', async () => {
+  it("should select superset ranges", async () => {
     expect(
       await generateHtml(
         {
-          documentContents: 'const oneLine = 1;',
+          documentContents: "const oneLine = 1;",
           selections: [
             {
-              type: 'selection',
+              type: "selection",
               anchor: { line: 0, character: 9 },
               active: { line: 0, character: 11 },
             },
           ],
           thatMark: [
             {
-              type: 'selection',
+              type: "selection",
               anchor: { line: 0, character: 6 },
               active: { line: 0, character: 13 },
             },
           ],
         },
 
-        'typescript'
-      )
+        "typescript",
+      ),
     ).toMatchInlineSnapshot(`
       "
             ({
               ...token,
-              type: 'token',
-            } as Token)
-        )
+              type: "token",
+            }) as Token,
+        ),
       );
   }
 
   applyMarks() {
     Object.entries(this.state.marks || {}).forEach(([key, mark]) => {
-      const [type, letterArg] = key.split('.') as [HatType, string];
-      const letter = !letterArg || letterArg === '' ? '.' : letterArg;
+      const [type, letterArg] = key.split(".") as [HatType, string];
+      const letter = !letterArg || letterArg === "" ? "." : letterArg;
       const line = this.tokens[mark.start.line];
-      if (!line) return;
+      if (!line) {
+        return;
+      }
       this.insertHat(
-        line as Extract[],
+        line as Extract[],
         type,
         letter,
-        mark.start.character
+        mark.start.character,
       );
     });
   }
   insertHat(
-    line: Extract[],
+    line: Extract[],
     hatType: HatType,
     markCharacter: string,
-    wordStart: number
+    wordStart: number,
   ) {
     let rawIndex = 0;
     for (let t = 0; t < line.length; t += 1) {
@@ -103,11 +105,11 @@ class HTMLGenerator {
             1,
             { ...token, content: token.content.substring(0, i) },
             {
-              type: 'hat',
+              type: "hat",
               hatType,
               content: token.content.substring(i, i + 1),
             },
-            { ...token, content: token.content.substring(i + 1) }
+            { ...token, content: token.content.substring(i + 1) },
           );
           return;
         }
@@ -117,24 +119,26 @@ class HTMLGenerator {
   }
 
   applyAllSelections() {
-    if (!this.applySelectionsFromState('decorations')) {
-      this.applySelectionsFromState('selections');
+    if (!this.applySelectionsFromState("decorations")) {
+      this.applySelectionsFromState("selections");
     }
-    this.applySelectionsFromState('thatMark');
-    this.applySelectionsFromState('sourceMark');
+    this.applySelectionsFromState("thatMark");
+    this.applySelectionsFromState("sourceMark");
   }
 
   applySelectionsFromState(
-    key: 'decorations' | 'selections' | 'thatMark' | 'sourceMark'
+    key: "decorations" | "selections" | "thatMark" | "sourceMark",
   ): boolean {
     const selections = this.state[key];
-    if (!selections?.length) return false;
+    if (!selections?.length) {
+      return false;
+    }
     const selectionParser = new SelectionParser(
       this.tokens,
-      key.replace(/s$/gi, '') as SelectionType
+      key.replace(/s$/gi, "") as SelectionType,
     );
     selections.forEach((selection) => {
-      if (selection.type === 'line') {
+      if (selection.type === "line") {
         return this.applyLineSelection(key, selection);
       }
       selectionParser.parse(selection);
@@ -144,9 +148,9 @@ class HTMLGenerator {
 
   getSelectionClasses(
     selectionType: keyof typeof this.state,
-    selection: CursorlessFixtureSelection
+    selection: CursorlessFixtureSelection,
   ) {
-    const classes = [selectionType.replace(/s$/g, '')];
+    const classes = [selectionType.replace(/s$/g, "")];
     if (selection.name) {
       classes.push(selection.name);
     }
@@ -155,15 +159,16 @@ class HTMLGenerator {
 
   applyLineSelection(
     selectionType: keyof typeof this.state,
-    selection: CursorlessFixtureSelection
+    selection: CursorlessFixtureSelection,
   ) {
     const classes = this.getSelectionClasses(selectionType, selection);
     const { anchor: start, active: end } = selection;
-    for (let i = start.line + 1; i <= end.line + 1; i += 1)
+    for (let i = start.line + 1; i <= end.line + 1; i += 1) {
       this.lineOptions.push({
         line: i,
         classes,
       });
+    }
   }
 }
 
@@ -178,7 +183,7 @@ class SelectionParser {
 
   parse(selection: CursorlessFixtureSelection) {
     let start, end;
-    if (selection.type === 'UntypedTarget') {
+    if (selection.type === "UntypedTarget") {
       start = selection.contentRange.start.line;
       end = selection.contentRange.end.line;
     } else {
@@ -197,18 +202,21 @@ class SelectionParser {
   parseLine(l: number, start: SelectionAnchor, end: SelectionAnchor) {
     const lineParser = new SelectionLineParser(
       this.selectionType,
-      this.lines[l]
+      this.lines[l],
     );
-    if (end.line === start.line)
+    if (end.line === start.line) {
       return lineParser.parse(start.character, end.character);
-    if (l === end.line) return lineParser.parse(0, end.character);
+    }
+    if (l === end.line) {
+      return lineParser.parse(0, end.character);
+    }
     return lineParser.parse(start.character, Infinity);
   }
 
   handleInsideLine(currentLine: number) {
     this.lines[currentLine] = [
       {
-        type: 'selection',
+        type: "selection",
         selection: this.lines[currentLine],
         className: this.selectionType,
       },
@@ -216,8 +224,8 @@ class SelectionParser {
   }
 }
 
-type BaseToken = Exclude;
-type SelectionToken = Extract;
+type BaseToken = Exclude;
+type SelectionToken = Extract;
 
 class SelectionLineParser {
   selectionType: SelectionType;
@@ -242,20 +250,27 @@ class SelectionLineParser {
   }
 
   getTokenState(tokenStart: number, tokenEnd: number) {
-    if (tokenEnd <= this.startIndex || this.endIndex <= tokenStart)
-      return 'outside';
-    if (tokenStart === this.startIndex && tokenEnd === this.endIndex)
-      return 'entire';
-    if (!this.getCurrentSelectionToken() && tokenEnd >= this.endIndex)
-      return 'inner';
-    if (!this.getCurrentSelectionToken()) return 'start';
-    if (tokenEnd >= this.endIndex) return 'end';
-    return 'continue';
+    if (tokenEnd <= this.startIndex || this.endIndex <= tokenStart) {
+      return "outside";
+    }
+    if (tokenStart === this.startIndex && tokenEnd === this.endIndex) {
+      return "entire";
+    }
+    if (!this.getCurrentSelectionToken() && tokenEnd >= this.endIndex) {
+      return "inner";
+    }
+    if (!this.getCurrentSelectionToken()) {
+      return "start";
+    }
+    if (tokenEnd >= this.endIndex) {
+      return "end";
+    }
+    return "continue";
   }
 
   getCurrentSelectionToken() {
     const lastResult = this.result[this.result.length - 1];
-    return lastResult?.type === 'selection' ? lastResult : undefined;
+    return lastResult?.type === "selection" ? lastResult : undefined;
   }
 
   parse(startIndex: number, endIndex: number) {
@@ -269,34 +284,38 @@ class SelectionLineParser {
   }
 
   parseToken(token: Token | undefined) {
-    if (!token) return;
-    if (token.type === 'selection') return this.parseSelection(token);
+    if (!token) {
+      return;
+    }
+    if (token.type === "selection") {
+      return this.parseSelection(token);
+    }
     const tokenStart = this.rawIndex;
     this.incrementRawIndex(token);
     const tokenEnd = this.rawIndex;
     const state = this.getTokenState(tokenStart, tokenEnd);
     switch (state) {
-      case 'outside': {
+      case "outside": {
         this.result.push(token);
         return;
       }
-      case 'entire': {
+      case "entire": {
         this.createSelection(token);
         return;
       }
-      case 'start': {
+      case "start": {
         this.startSelection(token);
         return;
       }
-      case 'continue': {
+      case "continue": {
         this.getCurrentSelectionToken()?.selection.push(token);
         return;
       }
-      case 'end': {
+      case "end": {
         this.endSelection(token);
         return;
       }
-      case 'inner': {
+      case "inner": {
         this.innerSelection(token);
         return;
       }
@@ -306,8 +325,8 @@ class SelectionLineParser {
   parseSelection(token: SelectionToken) {
     this.activeSelectionTypes.push(token.className);
     this.result.push({
-      type: 'selection',
-      className: this.activeSelectionTypes.join(' '),
+      type: "selection",
+      className: this.activeSelectionTypes.join(" "),
       selection: [],
     });
     for (const subToken of token.selection) {
@@ -315,8 +334,8 @@ class SelectionLineParser {
     }
     this.activeSelectionTypes.pop();
     this.result.push({
-      type: 'selection',
-      className: this.activeSelectionTypes.join(' '),
+      type: "selection",
+      className: this.activeSelectionTypes.join(" "),
       selection: [],
     });
   }
@@ -331,11 +350,12 @@ class SelectionLineParser {
 
   createSelection(token: Token) {
     this.activeSelectionTypes.push(
-      (token as SelectionToken).className || this.getCurrentSelectionClassName()
+      (token as SelectionToken).className ||
+        this.getCurrentSelectionClassName(),
     );
     this.result.push({
-      type: 'selection',
-      className: this.activeSelectionTypes.join(' '),
+      type: "selection",
+      className: this.activeSelectionTypes.join(" "),
       selection: [token],
     });
   }
@@ -364,11 +384,12 @@ class SelectionLineParser {
       content: selectionContent,
     });
     this.activeSelectionTypes.pop();
-    if (postSelectionContent.length)
+    if (postSelectionContent.length) {
       this.result.push({
         ...token,
         content: postSelectionContent,
       });
+    }
   }
 
   innerSelection(token: BaseToken) {
@@ -378,19 +399,21 @@ class SelectionLineParser {
     const preSelectionContent = token.content.substring(0, stringStart);
     const selectionContent = token.content.substring(stringStart, stringEnd);
     const postSelectionContent = token.content.substring(stringEnd);
-    if (preSelectionContent.length)
+    if (preSelectionContent.length) {
       this.result.push({
         ...token,
         content: preSelectionContent,
       });
+    }
     this.createSelection({
       ...token,
       content: selectionContent,
     });
-    if (postSelectionContent.length)
+    if (postSelectionContent.length) {
       this.result.push({
         ...token,
         content: postSelectionContent,
       });
+    }
   }
 }
diff --git a/packages/test-case-component/src/lib/loadFixture.ts b/packages/test-case-component/src/lib/loadFixture.ts
index 80b8cbe317..38cbecb351 100644
--- a/packages/test-case-component/src/lib/loadFixture.ts
+++ b/packages/test-case-component/src/lib/loadFixture.ts
@@ -1,16 +1,16 @@
-import path from 'path';
-import fs from 'fs-extra';
-import * as yaml from 'yaml';
+import path from "path";
+import fs from "fs-extra";
+import * as yaml from "yaml";
 
-import { generateHtml, SelectionAnchor } from './generateHtml';
+import { generateHtml, SelectionAnchor } from "./generateHtml";
 
 const fixturesDir = path.join(
-  '../',
-  'cursorless-vscode-e2e',
-  'src',
-  'suite',
-  'fixtures',
-  'recorded'
+  "../",
+  "cursorless-vscode-e2e",
+  "src",
+  "suite",
+  "fixtures",
+  "recorded",
 );
 
 async function safeGenerateHtml(
@@ -20,7 +20,7 @@ async function safeGenerateHtml(
   try {
     return await generateHtml(state, languageId);
   } catch (e) {
-    console.log('error in state', stateName, e);
+    console.log("error in state", stateName, e);
     console.log(JSON.stringify(state, null, 2));
     throw e;
   }
@@ -28,12 +28,14 @@ async function safeGenerateHtml(
 
 export async function loadFixture(folder: string, name: string) {
   const filepath = path.join(fixturesDir, folder, `${name}.yml`);
-  const data = yaml.parse(await fs.readFile(filepath, 'utf-8'));
-  if (data.command.version !== 2) return;
+  const data = yaml.parse(await fs.readFile(filepath, "utf-8"));
+  if (data.command.version !== 2) {
+    return;
+  }
   try {
     const during = data.decorations
       ? await safeGenerateHtml(
-          'decorations',
+          "decorations",
           {
             ...data.initialState,
             decorations: data.decorations.map(
@@ -52,21 +54,21 @@ export async function loadFixture(folder: string, name: string) {
                 type,
                 anchor: start,
                 active: end,
-              })
+              }),
             ),
           },
-          data.languageId
+          data.languageId,
         )
       : undefined;
     const before = await safeGenerateHtml(
-      'initialState',
+      "initialState",
       data.initialState,
-      data.languageId
+      data.languageId,
     );
     const after = await safeGenerateHtml(
-      'finalState',
+      "finalState",
       data.finalState,
-      data.languageId
+      data.languageId,
     );
     return {
       language: data.languageId,
@@ -77,7 +79,7 @@ export async function loadFixture(folder: string, name: string) {
       after,
     };
   } catch (e) {
-    console.log('error', filepath, e);
+    console.log("error", filepath, e);
     console.log(JSON.stringify(data, null, 2));
     throw e;
   }
diff --git a/packages/test-case-component/src/lib/renderToHtml.ts b/packages/test-case-component/src/lib/renderToHtml.ts
index a367647df5..c3f7b4ded2 100644
--- a/packages/test-case-component/src/lib/renderToHtml.ts
+++ b/packages/test-case-component/src/lib/renderToHtml.ts
@@ -1,6 +1,6 @@
 // forked from https://github.com/SimeonC/shiki/blob/main/packages/shiki/src/renderer.ts
 
-import { IThemedToken } from 'shiki';
+import { IThemedToken } from "shiki";
 
 // MIT License
 const FontStyle = {
@@ -13,7 +13,7 @@ const FontStyle = {
 
 export function groupBy(
   elements: TObject[],
-  keyGetter: (element: TObject) => string
+  keyGetter: (element: TObject) => string,
 ) {
   const map = new Map();
   for (const element of elements) {
@@ -28,7 +28,7 @@ export function groupBy(
   return map;
 }
 
-export type HatType = 'default';
+export type HatType = "default";
 interface BaseElementProps {
   style?: string;
   children: string;
@@ -36,23 +36,23 @@ interface BaseElementProps {
 }
 
 const elements = {
-  pre({ className, style = '', children }: BaseElementProps) {
+  pre({ className, style = "", children }: BaseElementProps) {
     return `
${children}
`; }, - code({ children }: Pick) { + code({ children }: Pick) { return `${children}`; }, - line({ className, children }: Omit) { + line({ className, children }: Omit) { return `${children}`; }, - token({ style = '', children }: Omit) { + token({ style = "", children }: Omit) { return `${children}`; }, - selection({ style = '', className, children }: BaseElementProps) { + selection({ style = "", className, children }: BaseElementProps) { return `${children}`; }, @@ -61,21 +61,21 @@ const elements = { }, } as const; export type SelectionType = - | 'decoration' - | 'selection' - | 'thatMark' - | 'sourceMark'; + | "decoration" + | "selection" + | "thatMark" + | "sourceMark"; export type Token = | ({ - type: 'token'; + type: "token"; } & IThemedToken) | { - type: 'selection'; + type: "selection"; className: string; selection: Token[]; } | { - type: 'hat'; + type: "hat"; hatType: HatType; content: string; }; @@ -87,103 +87,103 @@ export function renderToHtml( bg?: string; fg?: string; lineOptions?: { line: string }[]; - } = {} + } = {}, ) { - const bg = options.bg || '#fff'; + const bg = options.bg || "#fff"; const optionsByLineNumber = groupBy( options.lineOptions ?? [], - (option) => option.line + (option) => option.line, ); function h< TType extends keyof typeof elements, - TProps extends BaseElementProps = Parameters[0] - >(type: TType, props: Omit, children: string[]) { - const element = elements[type] as typeof elements[TType]; + TProps extends BaseElementProps = Parameters<(typeof elements)[TType]>[0], + >(type: TType, props: Omit, children: string[]) { + const element = elements[type] as (typeof elements)[TType]; if (element) { children = children.filter(Boolean); return element({ ...props, - children: type === 'code' ? children.join('\n') : children.join(''), + children: type === "code" ? children.join("\n") : children.join(""), } as any); } - return ''; + return ""; } function handleToken(token: Token): string { - if (token.type === 'selection') { + if (token.type === "selection") { return h( - 'selection', + "selection", { className: token.className }, - token.selection.map((token) => handleToken(token)) + token.selection.map((token) => handleToken(token)), ); } - if (token.type === 'hat') { - return h('hat', token, [escapeHtml(token.content)]); + if (token.type === "hat") { + return h("hat", token, [escapeHtml(token.content)]); } const cssDeclarations = [`color: ${token.color || options.fg}`]; if (token.fontStyle && FontStyle.Italic) { - cssDeclarations.push('font-style: italic'); + cssDeclarations.push("font-style: italic"); } if (token.fontStyle && FontStyle.Bold) { - cssDeclarations.push('font-weight: bold'); + cssDeclarations.push("font-weight: bold"); } if (token.fontStyle && FontStyle.Underline) { - cssDeclarations.push('text-decoration: underline'); + cssDeclarations.push("text-decoration: underline"); } return h( - 'token', + "token", { - style: cssDeclarations.join('; '), + style: cssDeclarations.join("; "), }, - [escapeHtml(token.content)] + [escapeHtml(token.content)], ); } - return h('pre', { className: 'shiki', style: `background-color: ${bg}` }, [ - options.langId ? `
${options.langId}
` : '', + return h("pre", { className: "shiki", style: `background-color: ${bg}` }, [ + options.langId ? `
${options.langId}
` : "", h( - 'code', + "code", {}, lines.map((line, index) => { const lineNumber = index + 1; const lineOptions = optionsByLineNumber.get(lineNumber) ?? []; - const lineClasses = getLineClasses(lineOptions).join(' '); + const lineClasses = getLineClasses(lineOptions).join(" "); return h( - 'line', + "line", { className: lineClasses, }, line.length === 0 - ? [' '] - : line.map((token) => handleToken(token)) + ? [" "] + : line.map((token) => handleToken(token)), ); - }) + }), ), ]); } const htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'", } as const; function escapeHtml(html: string) { - return (html || '').replace( + return (html || "").replace( /[&<>"']/g, - (chr) => htmlEscapes[chr as keyof typeof htmlEscapes] + (chr) => htmlEscapes[chr as keyof typeof htmlEscapes], ); } function getLineClasses(lineOptions: { classes?: string }[]) { - const lineClasses = new Set(['line']); + const lineClasses = new Set(["line"]); for (const lineOption of lineOptions) { for (const lineClass of lineOption.classes ?? []) { lineClasses.add(lineClass); From 1214efed99f1328906997276f50584d2800efb40 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 27 Mar 2024 10:19:54 -0700 Subject: [PATCH 029/211] chore: Follow pattern for files in /src and not /src/lib --- packages/test-case-component/package.json | 2 +- packages/test-case-component/src/{lib => }/buildDictionary.ts | 0 packages/test-case-component/src/{lib => }/buildSpokenForm.ts | 0 packages/test-case-component/src/{lib => }/generate-examples.ts | 0 packages/test-case-component/src/{lib => }/generateHtml.spec.ts | 0 packages/test-case-component/src/{lib => }/generateHtml.ts | 0 packages/test-case-component/src/{lib => }/loadFixture.ts | 0 packages/test-case-component/src/{lib => }/renderToHtml.ts | 0 8 files changed, 1 insertion(+), 1 deletion(-) rename packages/test-case-component/src/{lib => }/buildDictionary.ts (100%) rename packages/test-case-component/src/{lib => }/buildSpokenForm.ts (100%) rename packages/test-case-component/src/{lib => }/generate-examples.ts (100%) rename packages/test-case-component/src/{lib => }/generateHtml.spec.ts (100%) rename packages/test-case-component/src/{lib => }/generateHtml.ts (100%) rename packages/test-case-component/src/{lib => }/loadFixture.ts (100%) rename packages/test-case-component/src/{lib => }/renderToHtml.ts (100%) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index 7058a98592..fee6ce1fee 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -5,7 +5,7 @@ "description": "Component for displaying results of test cases in cursorless-vscode-e2e", "main": "./out/index.js", "scripts": { - "build": "tsx src/lib/buildDictionary", + "build": "tsx src/buildDictionary", "test": "jest", "test:watch": "jest --watch", "compile:tsc": "tsc --build", diff --git a/packages/test-case-component/src/lib/buildDictionary.ts b/packages/test-case-component/src/buildDictionary.ts similarity index 100% rename from packages/test-case-component/src/lib/buildDictionary.ts rename to packages/test-case-component/src/buildDictionary.ts diff --git a/packages/test-case-component/src/lib/buildSpokenForm.ts b/packages/test-case-component/src/buildSpokenForm.ts similarity index 100% rename from packages/test-case-component/src/lib/buildSpokenForm.ts rename to packages/test-case-component/src/buildSpokenForm.ts diff --git a/packages/test-case-component/src/lib/generate-examples.ts b/packages/test-case-component/src/generate-examples.ts similarity index 100% rename from packages/test-case-component/src/lib/generate-examples.ts rename to packages/test-case-component/src/generate-examples.ts diff --git a/packages/test-case-component/src/lib/generateHtml.spec.ts b/packages/test-case-component/src/generateHtml.spec.ts similarity index 100% rename from packages/test-case-component/src/lib/generateHtml.spec.ts rename to packages/test-case-component/src/generateHtml.spec.ts diff --git a/packages/test-case-component/src/lib/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts similarity index 100% rename from packages/test-case-component/src/lib/generateHtml.ts rename to packages/test-case-component/src/generateHtml.ts diff --git a/packages/test-case-component/src/lib/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts similarity index 100% rename from packages/test-case-component/src/lib/loadFixture.ts rename to packages/test-case-component/src/loadFixture.ts diff --git a/packages/test-case-component/src/lib/renderToHtml.ts b/packages/test-case-component/src/renderToHtml.ts similarity index 100% rename from packages/test-case-component/src/lib/renderToHtml.ts rename to packages/test-case-component/src/renderToHtml.ts From 81ada0eabc570d259a5b1e001684763ea36a1fc2 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sat, 7 Jun 2025 13:34:31 -0700 Subject: [PATCH 030/211] chore: Add dependencies for /test-case-component in /cursorless-org --- packages/cursorless-org/package.json | 1 + .../test-case-component/package-lock.json | 172 ++++++++++++++++++ packages/test-case-component/package.json | 5 + 3 files changed, 178 insertions(+) create mode 100644 packages/test-case-component/package-lock.json diff --git a/packages/cursorless-org/package.json b/packages/cursorless-org/package.json index af3b10f650..c13866fd53 100644 --- a/packages/cursorless-org/package.json +++ b/packages/cursorless-org/package.json @@ -30,6 +30,7 @@ }, "dependencies": { "@cursorless/cheatsheet": "workspace:*", + "@cursorless/test-case-component": "workspace:*", "@mdx-js/loader": "3.1.0", "@mdx-js/react": "3.1.0", "@next/mdx": "15.3.3", diff --git a/packages/test-case-component/package-lock.json b/packages/test-case-component/package-lock.json new file mode 100644 index 0000000000..15e993d681 --- /dev/null +++ b/packages/test-case-component/package-lock.json @@ -0,0 +1,172 @@ +{ + "name": "@cursorless/test-case-component", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@cursorless/test-case-component", + "version": "0.0.1", + "license": "MIT", + "dependencies": { + "fs-extra": "11.1.0", + "prettier": "2.8.4", + "shiki": "0.14.3", + "tsx": "3.12.7", + "yaml": "2.2.1" + }, + "devDependencies": { + "@types/fs-extra": "^11.0.4" + } + }, + "../../node_modules/.pnpm/fs-extra@11.1.0/node_modules/fs-extra": { + "version": "11.1.0", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "devDependencies": { + "klaw": "^2.1.1", + "klaw-sync": "^3.0.2", + "minimist": "^1.1.1", + "mocha": "^10.1.0", + "nyc": "^15.0.0", + "proxyquire": "^2.0.1", + "read-dir-files": "^0.1.1", + "standard": "^17.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "../../node_modules/.pnpm/prettier@2.8.4/node_modules/prettier": { + "version": "2.8.4", + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "../../node_modules/.pnpm/shiki@0.14.3/node_modules/shiki": { + "version": "0.14.3", + "license": "MIT", + "dependencies": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + }, + "devDependencies": { + "@types/node": "^18.11.17" + } + }, + "../../node_modules/.pnpm/tsx@3.12.7/node_modules/tsx": { + "version": "3.12.7", + "license": "MIT", + "dependencies": { + "@esbuild-kit/cjs-loader": "^2.4.2", + "@esbuild-kit/core-utils": "^3.0.0", + "@esbuild-kit/esm-loader": "^2.5.5" + }, + "bin": { + "tsx": "dist/cli.js" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "../../node_modules/.pnpm/yaml@2.2.1/node_modules/yaml": { + "version": "2.2.1", + "license": "ISC", + "devDependencies": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-transform-typescript": "^7.12.17", + "@babel/preset-env": "^7.12.11", + "@rollup/plugin-babel": "^6.0.3", + "@rollup/plugin-replace": "^5.0.2", + "@rollup/plugin-typescript": "^10.0.1", + "@types/jest": "^29.2.4", + "@types/node": "^14.18.35", + "@typescript-eslint/eslint-plugin": "^5.3.1", + "@typescript-eslint/parser": "^5.3.1", + "babel-jest": "^29.0.1", + "cross-env": "^7.0.3", + "eslint": "^8.2.0", + "eslint-config-prettier": "^8.1.0", + "fast-check": "^2.12.0", + "jest": "^29.0.1", + "jest-ts-webcompat-resolver": "^1.0.0", + "prettier": "^2.2.1", + "rollup": "^3.7.5", + "tslib": "^2.1.0", + "typescript": "^4.3.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@types/fs-extra": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", + "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", + "dev": true, + "dependencies": { + "@types/jsonfile": "*", + "@types/node": "*" + } + }, + "node_modules/@types/jsonfile": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", + "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.11.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", + "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/fs-extra": { + "resolved": "../../node_modules/.pnpm/fs-extra@11.1.0/node_modules/fs-extra", + "link": true + }, + "node_modules/prettier": { + "resolved": "../../node_modules/.pnpm/prettier@2.8.4/node_modules/prettier", + "link": true + }, + "node_modules/shiki": { + "resolved": "../../node_modules/.pnpm/shiki@0.14.3/node_modules/shiki", + "link": true + }, + "node_modules/tsx": { + "resolved": "../../node_modules/.pnpm/tsx@3.12.7/node_modules/tsx", + "link": true + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/yaml": { + "resolved": "../../node_modules/.pnpm/yaml@2.2.1/node_modules/yaml", + "link": true + } + } +} diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index fee6ce1fee..7a86642934 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -22,6 +22,7 @@ "dependencies": { "fs-extra": "11.1.0", "prettier": "2.8.4", + "react": "^18.2.0", "shiki": "0.14.3", "tsx": "3.12.7", "yaml": "2.2.1" @@ -32,5 +33,9 @@ "cursorless:bundler": "./src/index.ts", "default": "./out/index.js" } + }, + "devDependencies": { + "@types/fs-extra": "^11.0.4", + "@types/react": "18.0.28" } } From d92b2aa02fe6a36b68d25d02432a1f4da47bf7f3 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 9 Apr 2024 02:29:26 -0700 Subject: [PATCH 031/211] wip: Add test-case-component path referecnce Attempting to resolve import error: Server Error Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports. --- packages/cursorless-org/tsconfig.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/cursorless-org/tsconfig.json b/packages/cursorless-org/tsconfig.json index 2ce4454b4f..d31f1aa8f0 100644 --- a/packages/cursorless-org/tsconfig.json +++ b/packages/cursorless-org/tsconfig.json @@ -23,6 +23,9 @@ "references": [ { "path": "../cheatsheet" + }, + { + "path": "../test-case-component" } ], "exclude": ["node_modules"] From 9927b774b0e1aa823b96e803381c4786f02b8266 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 9 Apr 2024 02:51:03 -0700 Subject: [PATCH 032/211] feat: Match tsconfig to cheatsheet/tsconfig as example --- packages/test-case-component/tsconfig.json | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/test-case-component/tsconfig.json b/packages/test-case-component/tsconfig.json index 8cbf5e33fe..dc4841a639 100644 --- a/packages/test-case-component/tsconfig.json +++ b/packages/test-case-component/tsconfig.json @@ -1,9 +1,18 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { + "rootDir": "src", "outDir": "out", - "rootDir": "src" + "jsx": "react-jsx", + "esModuleInterop": true, + "skipLibCheck": true, + "lib": ["es5", "es6", "dom"] }, "references": [], - "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.json", + "../../typings/**/*.d.ts" + ] } From 2c83f612d502aaa58b157c8d844f4c063d3bb92b Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 9 Apr 2024 02:53:13 -0700 Subject: [PATCH 033/211] fix: Remove /lib/ from export in index.ts --- packages/test-case-component/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/index.ts b/packages/test-case-component/src/index.ts index 60e8541ad4..5c0b188589 100644 --- a/packages/test-case-component/src/index.ts +++ b/packages/test-case-component/src/index.ts @@ -1 +1 @@ -export * from "./lib/generate-examples"; +export * from "./generate-examples"; From be7519a6920dcb99c820f6cfdf60ca227601bc32 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 9 Apr 2024 02:56:44 -0700 Subject: [PATCH 034/211] wip: Basic scaffold for TestCaseComponentPage --- .../src/pages/component-sheet.tsx | 26 +++++++++++++++++++ packages/test-case-component/src/index.ts | 1 + .../src/test-case-component.tsx | 19 ++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 packages/cursorless-org/src/pages/component-sheet.tsx create mode 100644 packages/test-case-component/src/test-case-component.tsx diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx new file mode 100644 index 0000000000..bdeb355017 --- /dev/null +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -0,0 +1,26 @@ +import { + TestCaseComponentPage +} from "@cursorless/test-case-component"; +import { + cheatsheetBodyClasses, +} from "@cursorless/cheatsheet"; + +import Head from "next/head"; + +// See https://github.com/vercel/next.js/discussions/12325#discussioncomment-1116108 +export async function getStaticProps() { + return { props: { bodyClasses: cheatsheetBodyClasses } }; +} + +export function App() { + return ( + <> + + Cursorless cheatsheet + + + + ); +} + +export default App; diff --git a/packages/test-case-component/src/index.ts b/packages/test-case-component/src/index.ts index 5c0b188589..a297aafa76 100644 --- a/packages/test-case-component/src/index.ts +++ b/packages/test-case-component/src/index.ts @@ -1 +1,2 @@ export * from "./generate-examples"; +export * from "./test-case-component"; \ No newline at end of file diff --git a/packages/test-case-component/src/test-case-component.tsx b/packages/test-case-component/src/test-case-component.tsx new file mode 100644 index 0000000000..2e2480880b --- /dev/null +++ b/packages/test-case-component/src/test-case-component.tsx @@ -0,0 +1,19 @@ +import * as React from "react"; + +export const TestCaseComponentPage: React.FC = () => { + return ( +
+

+ Test Component Sheet{" "} + + See the{" "} + {/* */} + full documentation + {/* {" "} */} + to learn more. + +

+

This is just to get the page working with an initial render before adding any more functionality

+
+ ); +}; From a9b8e5e28e66bf77a7e4388fcdaab4d27f3c926b Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 9 Apr 2024 09:33:21 -0700 Subject: [PATCH 035/211] chore: Remove buildSpokenForm as it is no longer needed --- .../src/buildSpokenForm.ts | 206 ------------------ 1 file changed, 206 deletions(-) delete mode 100644 packages/test-case-component/src/buildSpokenForm.ts diff --git a/packages/test-case-component/src/buildSpokenForm.ts b/packages/test-case-component/src/buildSpokenForm.ts deleted file mode 100644 index 586ef3a0b6..0000000000 --- a/packages/test-case-component/src/buildSpokenForm.ts +++ /dev/null @@ -1,206 +0,0 @@ -import path from "path"; -import fs from "fs-extra"; -const cursorlessRoot = path.resolve("../../../src"); - -const commandDictionaryJson = fs.readJSONSync( - path.join( - cursorlessRoot, - "../cursorless-nx/libs/cheatsheet/src/lib/data/sampleSpokenFormInfos/defaults.json", - ), -) as typeof import("../../../cheatsheet/src/lib/data/sampleSpokenFormInfos/defaults.json"); - -const letters = "abcdefghijklmnopqrstuvwxyz".split(""); -const defaultAlphabet = - "air bat cap drum each fine gust harp sit jury crunch look made near odd pit quench red sun trap urge vest whale plex yank zip" - .split(" ") - .map((word, index) => [letters[index], word] as const); - -const defaultDigits = "zero one two three four five six seven eight nine" - .split(" ") - .map((word, index) => [`${index}`, word] as const); - -const letterDictionary = defaultAlphabet - .concat(defaultDigits) - .reduce((r, [key, value]) => ({ ...r, [key]: value }), {}); - -const commandDictionary = commandDictionaryJson.sections.reduce( - (topResult, section) => { - return { - ...topResult, - [section.id]: section.items.reduce( - (r, { id, variations }) => ({ - ...r, - [id]: variations[0].spokenForm, - }), - {}, - ), - }; - }, - {} as Record< - (typeof commandDictionaryJson)["sections"][number]["id"], - Record< - (typeof commandDictionaryJson)["sections"][number]["items"][number]["id"], - (typeof commandDictionaryJson)["sections"][number]["items"][number]["variations"][0]["spokenForm"] - > - >, -); - -type CommandDictionary = typeof commandDictionary; - -interface Modifier { - type: "position" | "containingScope"; - position: keyof CommandDictionary["positions"]; - scopeType: { - type: keyof CommandDictionary["scopes"]; - }; -} -type PrimitiveTarget = { - type: "primitive"; - modifiers?: Modifier[]; - position?: keyof CommandDictionary["positions"]; - mark?: { - type: "decoratedSymbol"; - character: keyof typeof letterDictionary; - }; -}; - -type RangeTarget = { - type: "range"; - excludeAnchor?: boolean; - excludeActive?: boolean; - anchor: Target; - active: Target; -}; - -type ListTarget = { - type: "list"; - elements: Target[]; -}; - -type Target = PrimitiveTarget | RangeTarget | ListTarget; -type Command = { action: { name: string }; targets: Target[] }; - -function interpolate( - template: string, - handleAction: (counter: number) => string, -) { - let counter = -1; - return template.replace(/<[a-z0-9]+>/gi, () => handleAction(++counter)); -} - -class SpokenForm { - private command: Command; - - constructor(command: Command) { - this.command = command; - } - - public build() { - return interpolate(this.getTemplate(), (counter) => - this.parseTarget(this.command.targets[counter]), - ); - } - - private getTemplate() { - return commandDictionary["actions"][this.command.action.name]; - } - - private parseTarget(target: Target): string { - if (!target) { - throw new Error(`Excess mark`); - } - switch (target.type) { - case "primitive": - return this.parsePrimitiveTarget(target); - case "range": - return this.parseRangeTarget(target); - case "list": - return this.parseListTarget(target); - default: { - // @ts-expect-error - if this is hit we need to add new cases and types - throw new Error(`Unknown target type ${target.type}`); - } - } - } - parsePrimitiveTarget(target: PrimitiveTarget) { - let prefix = - target.modifiers - ?.filter((v): v is Modifier => !!v) - ?.map((mod) => { - switch (mod.type) { - case "position": - return commandDictionary["positions"][mod.position]; - case "containingScope": - return commandDictionary["scopes"][mod.scopeType.type]; - } - throw new Error(`Unknown modifier type ${mod.type}`); - }) - .join(" ") || ""; - if (target.position) { - prefix = `${commandDictionary["positions"][target.position]} ${prefix}`; - } - if (target.mark) { - if (target.mark.type !== "decoratedSymbol") { - throw new Error(`Unknown target type ${target.mark.type}`); - } - return ( - (prefix ? prefix + " " : "") + letterDictionary[target.mark.character] - ); - } - if (!prefix) { - throw new Error(`Unknown mark`); - } - return prefix; - } - - parseRangeTarget(target: RangeTarget) { - let compoundTargetKey; - if (target.excludeAnchor && target.excludeActive) { - compoundTargetKey = "rangeExclusive"; - } else if (!target.excludeAnchor && !target.excludeActive) { - compoundTargetKey = "rangeInclusive"; - } else if (!target.excludeAnchor && target.excludeActive) { - compoundTargetKey = "rangeExcludingEnd"; - } else { - throw new Error(`Bad inclusion range`); - } - return interpolate( - commandDictionary["compoundTargets"][compoundTargetKey], - (index) => { - if (index === 0) { - return this.parseTarget(target.anchor); - } - if (index === 1) { - return this.parseTarget(target.active); - } - return ""; - }, - ); - } - parseListTarget(target: ListTarget) { - return target.elements.reduce((result, element) => { - if (!result) { - return this.parseTarget(element); - } - return interpolate( - commandDictionary["compoundTargets"]["listConnective"], - (index) => { - if (index === 0) { - return result; - } - if (index === 1) { - return this.parseTarget(element); - } - throw Error(`Invalid List`); - }, - ); - }, ""); - } -} - -export function buildSpokenForm(command: { - action: { name: string }; - targets: Target[]; -}) { - return new SpokenForm(command).build(); -} From 2d2d9b2fe33c3694bb5887f1061bf95c78ae2cf1 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 9 Apr 2024 10:20:21 -0700 Subject: [PATCH 036/211] chore: Remove package-lock, holdover from previous file structure --- .../test-case-component/package-lock.json | 172 ------------------ 1 file changed, 172 deletions(-) delete mode 100644 packages/test-case-component/package-lock.json diff --git a/packages/test-case-component/package-lock.json b/packages/test-case-component/package-lock.json deleted file mode 100644 index 15e993d681..0000000000 --- a/packages/test-case-component/package-lock.json +++ /dev/null @@ -1,172 +0,0 @@ -{ - "name": "@cursorless/test-case-component", - "version": "0.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@cursorless/test-case-component", - "version": "0.0.1", - "license": "MIT", - "dependencies": { - "fs-extra": "11.1.0", - "prettier": "2.8.4", - "shiki": "0.14.3", - "tsx": "3.12.7", - "yaml": "2.2.1" - }, - "devDependencies": { - "@types/fs-extra": "^11.0.4" - } - }, - "../../node_modules/.pnpm/fs-extra@11.1.0/node_modules/fs-extra": { - "version": "11.1.0", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "devDependencies": { - "klaw": "^2.1.1", - "klaw-sync": "^3.0.2", - "minimist": "^1.1.1", - "mocha": "^10.1.0", - "nyc": "^15.0.0", - "proxyquire": "^2.0.1", - "read-dir-files": "^0.1.1", - "standard": "^17.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "../../node_modules/.pnpm/prettier@2.8.4/node_modules/prettier": { - "version": "2.8.4", - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "../../node_modules/.pnpm/shiki@0.14.3/node_modules/shiki": { - "version": "0.14.3", - "license": "MIT", - "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - }, - "devDependencies": { - "@types/node": "^18.11.17" - } - }, - "../../node_modules/.pnpm/tsx@3.12.7/node_modules/tsx": { - "version": "3.12.7", - "license": "MIT", - "dependencies": { - "@esbuild-kit/cjs-loader": "^2.4.2", - "@esbuild-kit/core-utils": "^3.0.0", - "@esbuild-kit/esm-loader": "^2.5.5" - }, - "bin": { - "tsx": "dist/cli.js" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "../../node_modules/.pnpm/yaml@2.2.1/node_modules/yaml": { - "version": "2.2.1", - "license": "ISC", - "devDependencies": { - "@babel/core": "^7.12.10", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-transform-typescript": "^7.12.17", - "@babel/preset-env": "^7.12.11", - "@rollup/plugin-babel": "^6.0.3", - "@rollup/plugin-replace": "^5.0.2", - "@rollup/plugin-typescript": "^10.0.1", - "@types/jest": "^29.2.4", - "@types/node": "^14.18.35", - "@typescript-eslint/eslint-plugin": "^5.3.1", - "@typescript-eslint/parser": "^5.3.1", - "babel-jest": "^29.0.1", - "cross-env": "^7.0.3", - "eslint": "^8.2.0", - "eslint-config-prettier": "^8.1.0", - "fast-check": "^2.12.0", - "jest": "^29.0.1", - "jest-ts-webcompat-resolver": "^1.0.0", - "prettier": "^2.2.1", - "rollup": "^3.7.5", - "tslib": "^2.1.0", - "typescript": "^4.3.5" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@types/fs-extra": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", - "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", - "dev": true, - "dependencies": { - "@types/jsonfile": "*", - "@types/node": "*" - } - }, - "node_modules/@types/jsonfile": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", - "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "20.11.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", - "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/fs-extra": { - "resolved": "../../node_modules/.pnpm/fs-extra@11.1.0/node_modules/fs-extra", - "link": true - }, - "node_modules/prettier": { - "resolved": "../../node_modules/.pnpm/prettier@2.8.4/node_modules/prettier", - "link": true - }, - "node_modules/shiki": { - "resolved": "../../node_modules/.pnpm/shiki@0.14.3/node_modules/shiki", - "link": true - }, - "node_modules/tsx": { - "resolved": "../../node_modules/.pnpm/tsx@3.12.7/node_modules/tsx", - "link": true - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/yaml": { - "resolved": "../../node_modules/.pnpm/yaml@2.2.1/node_modules/yaml", - "link": true - } - } -} From 63fc000ed6d92219216e931b990733e9ce1b54ef Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 9 Apr 2024 11:12:37 -0700 Subject: [PATCH 037/211] chore: Update build script to be compliant with monorepo --- packages/test-case-component/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index 7a86642934..fd4c8dbad8 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -5,7 +5,7 @@ "description": "Component for displaying results of test cases in cursorless-vscode-e2e", "main": "./out/index.js", "scripts": { - "build": "tsx src/buildDictionary", + "build": "my-ts-node src/buildDictionary.ts", "test": "jest", "test:watch": "jest --watch", "compile:tsc": "tsc --build", From f89c6cec5db72a3a28b8fc6fb343ceb040685c60 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 9 Apr 2024 11:13:15 -0700 Subject: [PATCH 038/211] chore: Update dependencies, add js-yaml --- packages/test-case-component/package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index fd4c8dbad8..70a1dff003 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -20,8 +20,9 @@ "author": "", "license": "MIT", "dependencies": { - "fs-extra": "11.1.0", - "prettier": "2.8.4", + "fs-extra": "11.2.0", + "js-yaml": "^4.1.0", + "prettier": "3.2.5", "react": "^18.2.0", "shiki": "0.14.3", "tsx": "3.12.7", @@ -36,6 +37,6 @@ }, "devDependencies": { "@types/fs-extra": "^11.0.4", - "@types/react": "18.0.28" + "@types/react": "18.2.71" } } From 7bccebe8f006d1c78fa10c0434b548231ebd8501 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 9 Apr 2024 11:25:02 -0700 Subject: [PATCH 039/211] chore: Add jest as dev dependency for package/test-case-component --- packages/test-case-component/package.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index 70a1dff003..873138c6d8 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -37,6 +37,10 @@ }, "devDependencies": { "@types/fs-extra": "^11.0.4", - "@types/react": "18.2.71" + "@types/react": "18.2.71", + "@types/jest": "29.5.12", + "jest": "29.7.0", + "jest-environment-jsdom": "29.7.0", + "ts-jest": "29.1.2" } } From 6819b262d43b5111d8ade057ebbb2ff332c90fba Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 9 Apr 2024 11:44:03 -0700 Subject: [PATCH 040/211] wip: Get yml to pass as props for selected files --- .../src/pages/component-sheet.tsx | 50 +++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index bdeb355017..ae3d03c1c1 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -1,24 +1,68 @@ import { TestCaseComponentPage } from "@cursorless/test-case-component"; + import { cheatsheetBodyClasses, } from "@cursorless/cheatsheet"; +import * as yaml from "js-yaml"; +import fs from 'fs'; +import path from 'path'; + import Head from "next/head"; +const fixturesDir = path.join( + "../", + "../", + "data", + "fixtures", + "recorded", +); + +async function loadYamlFiles(dir: string, selectedFiles?: string[]) { + + const directoryPath = path.join(process.cwd(), dir); + const files = fs.readdirSync(directoryPath); + const data: any[] = []; + + files.forEach(file => { + if(path.extname(file) === '.yml' && (!selectedFiles || selectedFiles.includes(file))) { + const filePath = path.join(directoryPath, file); + const fileContents = fs.readFileSync(filePath, 'utf8'); + const yamlData: any = yaml.load(fileContents); + data.push(yamlData); + } + }); + + console.log(dir, "files:", files) + console.log("data:", data); + + return data; +} + // See https://github.com/vercel/next.js/discussions/12325#discussioncomment-1116108 export async function getStaticProps() { - return { props: { bodyClasses: cheatsheetBodyClasses } }; + const itemsDir = (path.join(fixturesDir, 'actions')) + const testSelectedFiles = [ + "bringArgMadeAfterLook.yml", + "chuckBlockAirUntilBatt.yml", + "cutFine.yml", + "chuckLineFine.yml", + "bringAirAndBatAndCapToAfterItemEach.yml" + ] + const data = await loadYamlFiles(itemsDir, testSelectedFiles); + + return { props: { data: data, bodyClasses: cheatsheetBodyClasses } }; } -export function App() { +export function App({data} : { data:any }) { return ( <> Cursorless cheatsheet - + ); } From 147df367fc7f7f84328e248a5c61195f10ba2e07 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 9 Apr 2024 11:47:02 -0700 Subject: [PATCH 041/211] wip: Create inital component to render shiki code blocks --- .../src/components/component-shiki.tsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 packages/test-case-component/src/components/component-shiki.tsx diff --git a/packages/test-case-component/src/components/component-shiki.tsx b/packages/test-case-component/src/components/component-shiki.tsx new file mode 100644 index 0000000000..0cd0ace129 --- /dev/null +++ b/packages/test-case-component/src/components/component-shiki.tsx @@ -0,0 +1,12 @@ +import * as React from "react"; + + + +export const ShikiComponent: React.FC<{ data: any }> = ({ data }) => { + + return ( +
+        {JSON.stringify(data, null, 2)}
+    
+ ); +}; From f2a6d6341e082ba9965d323dce4a637473cf05c4 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 9 Apr 2024 11:48:09 -0700 Subject: [PATCH 042/211] wip: Update test-case-componet to import shiki - uses type: any for now --- packages/test-case-component/src/test-case-component.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/src/test-case-component.tsx b/packages/test-case-component/src/test-case-component.tsx index 2e2480880b..a6840a192a 100644 --- a/packages/test-case-component/src/test-case-component.tsx +++ b/packages/test-case-component/src/test-case-component.tsx @@ -1,6 +1,7 @@ import * as React from "react"; +import { ShikiComponent } from './components/component-shiki' -export const TestCaseComponentPage: React.FC = () => { +export const TestCaseComponentPage: React.FC<{ data: any }> = ({ data }) => { return (

@@ -13,6 +14,7 @@ export const TestCaseComponentPage: React.FC = () => { to learn more.

+ { data.map( (item:any) => ) }

This is just to get the page working with an initial render before adding any more functionality

); From db3e8270b1756fb2cc1f4bcc9da7ac3c1ab2e035 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 9 Apr 2024 02:53:13 -0700 Subject: [PATCH 043/211] fixup: lib redo --- packages/test-case-component/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/index.ts b/packages/test-case-component/src/index.ts index a297aafa76..dcaaa04fdd 100644 --- a/packages/test-case-component/src/index.ts +++ b/packages/test-case-component/src/index.ts @@ -1,2 +1,2 @@ export * from "./generate-examples"; -export * from "./test-case-component"; \ No newline at end of file +export * from "./test-case-component"; From dbd0f38358c2a93ff4b7143c0f6cb14a7d5d4100 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 8 May 2024 11:24:07 -0700 Subject: [PATCH 044/211] wip: Change title in /component-sheet --- packages/cursorless-org/src/pages/component-sheet.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index ae3d03c1c1..87cfa9eb97 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -60,7 +60,7 @@ export function App({data} : { data:any }) { return ( <> - Cursorless cheatsheet + Cursorless Test Case Component Page From 9e2990b3162cd42ceb8550fe38674935a903d436 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 8 May 2024 14:50:17 -0700 Subject: [PATCH 045/211] wip: Add key prop to data.map ShikiComponent --- packages/test-case-component/src/test-case-component.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/test-case-component.tsx b/packages/test-case-component/src/test-case-component.tsx index a6840a192a..553d48555d 100644 --- a/packages/test-case-component/src/test-case-component.tsx +++ b/packages/test-case-component/src/test-case-component.tsx @@ -14,7 +14,7 @@ export const TestCaseComponentPage: React.FC<{ data: any }> = ({ data }) => { to learn more. - { data.map( (item:any) => ) } + { data.map( (item:any) => ) }

This is just to get the page working with an initial render before adding any more functionality

); From 9b5bf93366803c691b5833e000a8a7e39c7feff3 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 8 May 2024 16:12:52 -0700 Subject: [PATCH 046/211] wip: Change css variable names to be in line with new shiki --- .../src/generateHtml.spec.ts | 84 ++++++++++--------- 1 file changed, 44 insertions(+), 40 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.spec.ts b/packages/test-case-component/src/generateHtml.spec.ts index 0b6d8f3705..a6bdaa1bea 100644 --- a/packages/test-case-component/src/generateHtml.spec.ts +++ b/packages/test-case-component/src/generateHtml.spec.ts @@ -9,6 +9,10 @@ async function generateHtml(...args: Parameters) { }); } +// uses mocha for most tests +// okay to stick with Jest if needed +// cheatsheet might use Jest? + describe("generateHtml", () => { it("should select whole line", async () => { expect( @@ -29,29 +33,29 @@ describe("generateHtml", () => { ).toMatchInlineSnapshot(` "
         
           
-             
+             
             const
-             
+             
             oneLine
-             
+             
             =
-             
+             
             1
-            ;
+            ;
           
           
             const
-             
+             
             line2
-             
+             
             =
-             
+             
             2
-            ;
+            ;
           
         
       
; @@ -77,34 +81,34 @@ describe("generateHtml", () => { ).toMatchInlineSnapshot(` "
         
           
-             
+             
             const
-             
+             
             
               oneLine
             
-             
+             
             =
-             
+             
             1
-            ;
+            ;
           
           
             const
-             
+             
             line2
-             
+             
             =
-             
+             
             2
-            ;
+            ;
           
         
       
; @@ -131,23 +135,23 @@ describe("generateHtml", () => { ).toMatchInlineSnapshot(` "
         
           
             const
-             
+             
             
               oneLine
-               
+               
               =
-               
+               
               1
             
-            ;
+            ;
           
         
       
; @@ -174,27 +178,27 @@ describe("generateHtml", () => { ).toMatchInlineSnapshot(` "
         
           
             const
-             
+             
             one
             
               Line
-               
+               
               =
-               
+               
               
                 "li
               
             
             ne"
-            ;
+            ;
           
         
       
; @@ -221,12 +225,12 @@ describe("generateHtml", () => { ).toMatchInlineSnapshot(` "
         
           
             const
-             
+             
             one
              {
               Li
             
             ne
-             
+             
             =
-             
+             
             1
-            ;
+            ;
           
         
       
; @@ -272,12 +276,12 @@ describe("generateHtml", () => { ).toMatchInlineSnapshot(` "
         
           
             const
-             
+             
              {
             >
               ne
             
-             
+             
             =
-             
+             
             1
-            ;
+            ;
           
         
       
; From 1f538151f4a5cbdb20134f6ab8f466292d00e798 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 8 May 2024 17:54:22 -0700 Subject: [PATCH 047/211] wip: Add loadFixture to export --- packages/test-case-component/src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/test-case-component/src/index.ts b/packages/test-case-component/src/index.ts index dcaaa04fdd..332b6e93e0 100644 --- a/packages/test-case-component/src/index.ts +++ b/packages/test-case-component/src/index.ts @@ -1,2 +1,3 @@ export * from "./generate-examples"; export * from "./test-case-component"; +export * from "./loadFixture" From 8d28d1244130c433307a3025bc01fc5643004118 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 8 May 2024 18:12:20 -0700 Subject: [PATCH 048/211] chore: Update shiki, move to dev dependencies --- packages/test-case-component/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index 873138c6d8..3dce822d09 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -24,7 +24,6 @@ "js-yaml": "^4.1.0", "prettier": "3.2.5", "react": "^18.2.0", - "shiki": "0.14.3", "tsx": "3.12.7", "yaml": "2.2.1" }, @@ -39,6 +38,7 @@ "@types/fs-extra": "^11.0.4", "@types/react": "18.2.71", "@types/jest": "29.5.12", + "shiki": "^1.4.0", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "ts-jest": "29.1.2" From 4fff1e0432ae4ee9edda68c30b6f4fa5cda776c4 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 8 May 2024 18:13:33 -0700 Subject: [PATCH 049/211] feat: Create css files for test-case-component --- packages/test-case-component/src/shiki.css | 48 ++++++++++ packages/test-case-component/src/styles.css | 100 ++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 packages/test-case-component/src/shiki.css create mode 100644 packages/test-case-component/src/styles.css diff --git a/packages/test-case-component/src/shiki.css b/packages/test-case-component/src/shiki.css new file mode 100644 index 0000000000..0b8b8c21cd --- /dev/null +++ b/packages/test-case-component/src/shiki.css @@ -0,0 +1,48 @@ +:root { + --shiki-foreground: #eeeeee; + --shiki-color-text: #eeeeee; + --shiki-background: #333333; + --shiki-token-constant: #ff6666; + --shiki-token-string: #c2ff6d; + --shiki-token-comment: #15bc28; + --shiki-token-keyword: #f3ff4c; + --shiki-token-parameter: #ff8741; + --shiki-token-function: #ff2828; + --shiki-token-string-expression: #cc0000; + --shiki-token-punctuation: #f958ff; + --shiki-token-link: #ee0000; + + /* Only required if using lang: 'ansi' */ + --shiki-ansi-black: #000000; + --shiki-ansi-black-dim: #00000080; + --shiki-ansi-red: #bb0000; + --shiki-ansi-red-dim: #bb000080; + --shiki-ansi-green: #00bb00; + --shiki-ansi-green-dim: #00bb0080; + --shiki-ansi-yellow: #bbbb00; + --shiki-ansi-yellow-dim: #bbbb0080; + --shiki-ansi-blue: #0000bb; + --shiki-ansi-blue-dim: #0000bb80; + --shiki-ansi-magenta: #ff00ff; + --shiki-ansi-magenta-dim: #ff00ff80; + --shiki-ansi-cyan: #00bbbb; + --shiki-ansi-cyan-dim: #00bbbb80; + --shiki-ansi-white: #eeeeee; + --shiki-ansi-white-dim: #eeeeee80; + --shiki-ansi-bright-black: #555555; + --shiki-ansi-bright-black-dim: #55555580; + --shiki-ansi-bright-red: #ff5555; + --shiki-ansi-bright-red-dim: #ff555580; + --shiki-ansi-bright-green: #00ff00; + --shiki-ansi-bright-green-dim: #00ff0080; + --shiki-ansi-bright-yellow: #ffff55; + --shiki-ansi-bright-yellow-dim: #ffff5580; + --shiki-ansi-bright-blue: #5555ff; + --shiki-ansi-bright-blue-dim: #5555ff80; + --shiki-ansi-bright-magenta: #ff55ff; + --shiki-ansi-bright-magenta-dim: #ff55ff80; + --shiki-ansi-bright-cyan: #55ffff; + --shiki-ansi-bright-cyan-dim: #55ffff80; + --shiki-ansi-bright-white: #ffffff; + --shiki-ansi-bright-white-dim: #ffffff80; +} \ No newline at end of file diff --git a/packages/test-case-component/src/styles.css b/packages/test-case-component/src/styles.css new file mode 100644 index 0000000000..82ca363c53 --- /dev/null +++ b/packages/test-case-component/src/styles.css @@ -0,0 +1,100 @@ +:root { + --line-height: 20px; + --color-border: #0003; +} + +body { + display: grid; + height: 100vh; + gap: 24px; + place-items: flex-start; + justify-items: stretch; + padding: 42px; + font-family: firacode, SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace; + /* background-image: radial-gradient(at 30% 89%, hsla(220,76%,68%,1) 0px, transparent 50%), radial-gradient(at 35% 0%, hsla(242,68%,61%,1) 0px, transparent 50%), radial-gradient(at 93% 46%, hsla(129,87%,73%,1) 0px, transparent 50%), radial-gradient(at 23% 49%, hsla(50,77%,67%,1) 0px, transparent 50%), radial-gradient(at 17% 27%, hsla(331,64%,60%,1) 0px, transparent 50%), radial-gradient(at 79% 30%, hsla(151,61%,77%,1) 0px, transparent 50%), radial-gradient(at 26% 40%, hsla(36,65%,63%,1) 0px, transparent 50%); */ +} + +body, pre.shiki, pre.shiki span { + line-height: var(--line-height); + min-height: var(--line-height); + font-size: 14px; +} + +.wrapper { + display: flex; + flex-direction: column; + gap: 16px; + padding: 16px; + border: 1px solid var(--color-border); + box-shadow: 0px 0px 6px #000A; + border-radius: 8px; + background: #ccc9; + & > div{ + background: #fff; + border: 1px solid var(--color-border); + border-radius: 8px}; +} + + +pre.shiki { + padding: 12px 16px; + display: flex; + flex-direction: column; + .line { + display: block} +} + +.command { + border-top: 1px solid var(--color-border); + padding: 8px; + font-weight: bold; + text-align: center} + +@keyframes blink { + 0%, 60%{ + border-color: #667F} + 61%, 100%{ + border-color: #6670}} + +.selection { + display: inline-block; + border-right: 2px solid #00B; + animation: blink 1400ms infinite; + padding: 0px 0.5px 0px 0; + margin: 0 0px 0 -1px; + height: var(--line-height)} + +.selection:not(:empty){ + background: #55F2; + padding-left: 0.5px} +.decoration{ + display: inline-block; + padding: 0px 0.5px 0px 0.5px; + margin: 0 0px 0 -1px; + height: var(--line-height); + background: green} +.decoration.pendingDeleteBackground{ + background: #ffaeae} + +.hat{ + position: relative; + display: inline-block; + &::after { + content: ''; + display: inline; + top: 0px; + left: 50%; + position: absolute; + transform: translate(-50%, -25%); + background-color: grey; + mask-repeat: no-repeat; + width: 10px; + height: 10px} + } +.hat.default::after{ + mask-image: url('data:image/svg+xml;utf8,'); + top: -0.4px; + width: 6px; + height: 6px} +.hat.wing::after{ + mask-image: url('data:image/svg+xml;utf8,')}; \ No newline at end of file From 8fdf129d0c640b8d8d1f5e03292da5ffb6fa2176 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 8 May 2024 18:15:47 -0700 Subject: [PATCH 050/211] feat: Create css vars theme - Add javascript and typescript languages for now - Update var names as per Shiki docs --- .../test-case-component/src/generateHtml.ts | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index f36b8a018c..b64d0a26ca 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,4 +1,5 @@ -import { getHighlighter, Lang } from "shiki"; +import { getHighlighter, createCssVariablesTheme } from "shiki" + import { renderToHtml, HatType, SelectionType, Token } from "./renderToHtml"; export interface SelectionAnchor { @@ -24,11 +25,21 @@ interface CursorlessFixtureState { sourceMark?: [CursorlessFixtureSelection]; } +const myTheme = createCssVariablesTheme({ + name: 'css-variables', + variablePrefix: '--shiki-', + variableDefaults: {}, + fontStyle: true +}) + export async function generateHtml(state: CursorlessFixtureState, lang: Lang) { return new HTMLGenerator(state, lang).generate(); } -const highlighter = getHighlighter({ theme: "css-variables" }); +const highlighter = getHighlighter({ + themes: [myTheme], + langs: ['javascript', 'typescript'], +}); class HTMLGenerator { private state: CursorlessFixtureState; @@ -48,15 +59,19 @@ class HTMLGenerator { this.applyMarks(); this.applyAllSelections(); return renderToHtml(this.tokens, { - bg: "var(--shiki-color-background)", - fg: "var(--shiki-color-text)", + bg: "var(--shiki-background)", + fg: "var(--shiki-foreground)", lineOptions: this.lineOptions, }); } async getTokens() { + const options = { + theme: 'css-variables', + lang: this.lang, + } this.tokens = (await highlighter) - .codeToThemedTokens(this.state.documentContents, this.lang) + .codeToTokens(this.state.documentContents, options).tokens .map((line) => line.map( (token) => From 52126702fd09edfc1e843f53d4ef1bf6672136f3 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 8 May 2024 18:18:18 -0700 Subject: [PATCH 051/211] feat: Remove fs parts of loadFixture --- .../test-case-component/src/loadFixture.ts | 26 ++++--------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index 38cbecb351..0f8b3b7b24 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -1,18 +1,5 @@ -import path from "path"; -import fs from "fs-extra"; -import * as yaml from "yaml"; - import { generateHtml, SelectionAnchor } from "./generateHtml"; -const fixturesDir = path.join( - "../", - "cursorless-vscode-e2e", - "src", - "suite", - "fixtures", - "recorded", -); - async function safeGenerateHtml( ...args: [stateName: string, ...rest: Parameters] ) { @@ -26,12 +13,10 @@ async function safeGenerateHtml( } } -export async function loadFixture(folder: string, name: string) { - const filepath = path.join(fixturesDir, folder, `${name}.yml`); - const data = yaml.parse(await fs.readFile(filepath, "utf-8")); - if (data.command.version !== 2) { - return; - } +export async function loadFixture( + data: any +) { + console.log("loadFixture", data) try { const during = data.decorations ? await safeGenerateHtml( @@ -59,7 +44,7 @@ export async function loadFixture(folder: string, name: string) { }, data.languageId, ) - : undefined; + : null; const before = await safeGenerateHtml( "initialState", data.initialState, @@ -73,7 +58,6 @@ export async function loadFixture(folder: string, name: string) { return { language: data.languageId, command: data.command.spokenForm, - originalData: data, during, before, after, From cdbfa4365b4c37ea751c71a1ab2835fc838c1883 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 8 May 2024 18:21:12 -0700 Subject: [PATCH 052/211] chore: Switch from IThemedToken to ThemedToken as per upgrade to Shiki v1 --- packages/test-case-component/src/renderToHtml.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/test-case-component/src/renderToHtml.ts b/packages/test-case-component/src/renderToHtml.ts index c3f7b4ded2..428ee4c356 100644 --- a/packages/test-case-component/src/renderToHtml.ts +++ b/packages/test-case-component/src/renderToHtml.ts @@ -1,6 +1,6 @@ -// forked from https://github.com/SimeonC/shiki/blob/main/packages/shiki/src/renderer.ts + // forked from https://github.com/SimeonC/shiki/blob/main/packages/shiki/src/renderer.ts -import { IThemedToken } from "shiki"; +import { ThemedToken } from "shiki"; // MIT License const FontStyle = { @@ -68,7 +68,7 @@ export type SelectionType = export type Token = | ({ type: "token"; - } & IThemedToken) + } & ThemedToken) | { type: "selection"; className: string; @@ -144,8 +144,10 @@ export function renderToHtml( ); } - return h("pre", { className: "shiki", style: `background-color: ${bg}` }, [ - options.langId ? `
${options.langId}
` : "", + return h( + "pre", + { className: "shiki", style: `background-color: ${bg}` }, + [ options.langId ? `
${options.langId}
` : "", h( "code", {}, @@ -164,7 +166,8 @@ export function renderToHtml( ); }), ), - ]); + ] +); } const htmlEscapes = { From 63fb887f300ed70dcab80553fc1f834378241de3 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 8 May 2024 18:29:02 -0700 Subject: [PATCH 053/211] wip: Remove filepath from error state in loadFixtures --- packages/test-case-component/src/loadFixture.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index 0f8b3b7b24..6db7aab4e4 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -63,7 +63,7 @@ export async function loadFixture( after, }; } catch (e) { - console.log("error", filepath, e); + console.log("error", e); console.log(JSON.stringify(data, null, 2)); throw e; } From bf4413bd059673d1bace35ca6f4ebea30fd09f8a Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 8 May 2024 18:36:30 -0700 Subject: [PATCH 054/211] feat: Update component sheet to import yaml files - Add additional test files --- .../src/pages/component-sheet.tsx | 77 +++++++++++-------- 1 file changed, 45 insertions(+), 32 deletions(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 87cfa9eb97..63020b65ff 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -1,68 +1,81 @@ import { - TestCaseComponentPage + TestCaseComponentPage, + loadFixture, } from "@cursorless/test-case-component"; -import { - cheatsheetBodyClasses, -} from "@cursorless/cheatsheet"; +import { cheatsheetBodyClasses } from "@cursorless/cheatsheet"; import * as yaml from "js-yaml"; -import fs from 'fs'; -import path from 'path'; +import fs from "fs"; +import path from "path"; import Head from "next/head"; -const fixturesDir = path.join( - "../", - "../", - "data", - "fixtures", - "recorded", -); +const fixturesDir = path.join("../", "../", "data", "fixtures", "recorded"); async function loadYamlFiles(dir: string, selectedFiles?: string[]) { - const directoryPath = path.join(process.cwd(), dir); const files = fs.readdirSync(directoryPath); const data: any[] = []; - files.forEach(file => { - if(path.extname(file) === '.yml' && (!selectedFiles || selectedFiles.includes(file))) { + files.forEach((file) => { + if ( + path.extname(file) === ".yml" && + (!selectedFiles || selectedFiles.includes(file)) + ) { const filePath = path.join(directoryPath, file); - const fileContents = fs.readFileSync(filePath, 'utf8'); + const fileContents = fs.readFileSync(filePath, "utf8"); const yamlData: any = yaml.load(fileContents); data.push(yamlData); } }); - console.log(dir, "files:", files) - console.log("data:", data); - return data; } // See https://github.com/vercel/next.js/discussions/12325#discussioncomment-1116108 export async function getStaticProps() { - const itemsDir = (path.join(fixturesDir, 'actions')) + const itemsDirActions = path.join(fixturesDir, "actions"); + const itemsDirDecorations = path.join(fixturesDir, "decorations"); const testSelectedFiles = [ - "bringArgMadeAfterLook.yml", - "chuckBlockAirUntilBatt.yml", - "cutFine.yml", - "chuckLineFine.yml", - "bringAirAndBatAndCapToAfterItemEach.yml" - ] - const data = await loadYamlFiles(itemsDir, testSelectedFiles); - - return { props: { data: data, bodyClasses: cheatsheetBodyClasses } }; + "bringArgMadeAfterLook.yml", + "chuckBlockAirUntilBatt.yml", + "cutFine.yml", + "chuckLineFine.yml", + "bringAirAndBatAndCapToAfterItemEach.yml", + "carveLineHarp.yml", + "chuckBlockAir.yml", + "chuckBlockAirUntilBatt.yml", + "chuckBlockBatt.yml", + "chuckBlockBatt2.yml", + "chuckBlockBattUntilAir.yml", + "chuckFine.yml", + "chuckLineFine.yml", + "chuckLineFineBetweenRisk.yml", + "clearBlockFine.yml", + "clearFine.yml", + "clearLineFine.ym", + ]; + const dataActions = await loadYamlFiles(itemsDirActions, testSelectedFiles); + const dataDecorations = await loadYamlFiles( + itemsDirDecorations, + testSelectedFiles, + ); + const data = [...dataActions, ...dataDecorations]; + const loaded = ( + await Promise.all(data.map((val) => loadFixture(val))) + ).filter((val) => val !== undefined); + + return { props: { data, loaded, bodyClasses: cheatsheetBodyClasses } }; } -export function App({data} : { data:any }) { +export function App({ data, loaded }: { data: any; loaded: any }) { return ( <> Cursorless Test Case Component Page - + ); } From 3b11db85887fb5be97be34a14802193f26fb9ed8 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 8 May 2024 18:37:29 -0700 Subject: [PATCH 055/211] feat: Create ShikiComponent -Displays before/after states -wip: During state needs work --- .../src/components/component-shiki.tsx | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/packages/test-case-component/src/components/component-shiki.tsx b/packages/test-case-component/src/components/component-shiki.tsx index 0cd0ace129..fb4b6ca431 100644 --- a/packages/test-case-component/src/components/component-shiki.tsx +++ b/packages/test-case-component/src/components/component-shiki.tsx @@ -1,12 +1,33 @@ import * as React from "react"; - - export const ShikiComponent: React.FC<{ data: any }> = ({ data }) => { return ( -
-        {JSON.stringify(data, null, 2)}
-    
+
+
+

{data.command}

+
+ {data.before && ( +
+ )} + {data.during && ( +
+ )} + {data.after && ( +
+ )} +
+
+
{JSON.stringify(data, null, 2)}
+
); }; From add08aedba052d27a4633f5db225345b6d0c2721 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 8 May 2024 18:39:18 -0700 Subject: [PATCH 056/211] feat: Create test-case-componet page scaffolding --- .../src/test-case-component.tsx | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/test-case-component/src/test-case-component.tsx b/packages/test-case-component/src/test-case-component.tsx index 553d48555d..f3e066c91b 100644 --- a/packages/test-case-component/src/test-case-component.tsx +++ b/packages/test-case-component/src/test-case-component.tsx @@ -1,21 +1,27 @@ import * as React from "react"; -import { ShikiComponent } from './components/component-shiki' +import { ShikiComponent } from "./components/component-shiki"; +import "./shiki.css"; +import "./styles.css"; -export const TestCaseComponentPage: React.FC<{ data: any }> = ({ data }) => { +export const TestCaseComponentPage: React.FC<{ data: any; loaded: any }> = ({ + data, + loaded, +}) => { return (

Test Component Sheet{" "} - See the{" "} - {/* */} - full documentation + See the {/* */} + full documentation {/* {" "} */} to learn more.

- { data.map( (item:any) => ) } -

This is just to get the page working with an initial render before adding any more functionality

+ + {loaded.map((item: any) => ( + + ))}
); }; From 6f819c9de3ee77bc9ab3f671b9afaaf582b70ca6 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 9 May 2024 22:24:20 -0700 Subject: [PATCH 057/211] wip: Drop console log in loadFixture --- packages/test-case-component/src/loadFixture.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index 6db7aab4e4..d5b812dfbd 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -16,7 +16,7 @@ async function safeGenerateHtml( export async function loadFixture( data: any ) { - console.log("loadFixture", data) + // console.log("loadFixture", data) try { const during = data.decorations ? await safeGenerateHtml( From a5fb51d478334d87283f62ad4b11643ef1aacbd3 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 9 May 2024 22:24:59 -0700 Subject: [PATCH 058/211] feat: Add ternary logic for data.decorations --- .../src/components/component-shiki.tsx | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/test-case-component/src/components/component-shiki.tsx b/packages/test-case-component/src/components/component-shiki.tsx index fb4b6ca431..a1107a977e 100644 --- a/packages/test-case-component/src/components/component-shiki.tsx +++ b/packages/test-case-component/src/components/component-shiki.tsx @@ -1,23 +1,25 @@ import * as React from "react"; export const ShikiComponent: React.FC<{ data: any }> = ({ data }) => { - return ( -
+

{data.command}

-
+
{data.before && (
)} - {data.during && ( -
+ {(data.during || data.before) && ( + <> +
+
{data.command}
+ )} {data.after && (
Date: Thu, 9 May 2024 22:28:56 -0700 Subject: [PATCH 059/211] wip: Pull in Lang type from old Shiki --- packages/test-case-component/src/generateHtml.ts | 1 + packages/test-case-component/src/types.ts | 1 + 2 files changed, 2 insertions(+) create mode 100644 packages/test-case-component/src/types.ts diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index b64d0a26ca..042059e63f 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,4 +1,5 @@ import { getHighlighter, createCssVariablesTheme } from "shiki" +import { Lang } from "./types"; import { renderToHtml, HatType, SelectionType, Token } from "./renderToHtml"; diff --git a/packages/test-case-component/src/types.ts b/packages/test-case-component/src/types.ts new file mode 100644 index 0000000000..8b98b15c95 --- /dev/null +++ b/packages/test-case-component/src/types.ts @@ -0,0 +1 @@ +type Lang = 'abap' | 'actionscript-3' | 'ada' | 'apache' | 'apex' | 'apl' | 'applescript' | 'ara' | 'asm' | 'astro' | 'awk' | 'ballerina' | 'bat' | 'batch' | 'beancount' | 'berry' | 'be' | 'bibtex' | 'bicep' | 'blade' | 'c' | 'cadence' | 'cdc' | 'clarity' | 'clojure' | 'clj' | 'cmake' | 'cobol' | 'codeql' | 'ql' | 'coffee' | 'cpp' | 'crystal' | 'csharp' | 'c#' | 'cs' | 'css' | 'cue' | 'cypher' | 'cql' | 'd' | 'dart' | 'dax' | 'diff' | 'docker' | 'dockerfile' | 'dream-maker' | 'elixir' | 'elm' | 'erb' | 'erlang' | 'erl' | 'fish' | 'fsharp' | 'f#' | 'fs' | 'gdresource' | 'gdscript' | 'gdshader' | 'gherkin' | 'git-commit' | 'git-rebase' | 'glimmer-js' | 'gjs' | 'glimmer-ts' | 'gts' | 'glsl' | 'gnuplot' | 'go' | 'graphql' | 'groovy' | 'hack' | 'haml' | 'handlebars' | 'hbs' | 'haskell' | 'hs' | 'hcl' | 'hjson' | 'hlsl' | 'html' | 'http' | 'imba' | 'ini' | 'properties' | 'java' | 'javascript' | 'js' | 'jinja-html' | 'jison' | 'json' | 'json5' | 'jsonc' | 'jsonl' | 'jsonnet' | 'jssm' | 'fsl' | 'jsx' | 'julia' | 'kotlin' | 'kusto' | 'kql' | 'latex' | 'less' | 'liquid' | 'lisp' | 'logo' | 'lua' | 'make' | 'makefile' | 'markdown' | 'md' | 'marko' | 'matlab' | 'mdx' | 'mermaid' | 'narrat' | 'nar' | 'nextflow' | 'nf' | 'nginx' | 'nim' | 'nix' | 'objective-c' | 'objc' | 'objective-cpp' | 'ocaml' | 'pascal' | 'perl' | 'php' | 'plsql' | 'postcss' | 'powerquery' | 'powershell' | 'ps' | 'ps1' | 'prisma' | 'prolog' | 'proto' | 'pug' | 'jade' | 'puppet' | 'purescript' | 'python' | 'py' | 'r' | 'raku' | 'perl6' | 'razor' | 'reg' | 'rel' | 'riscv' | 'rst' | 'ruby' | 'rb' | 'rust' | 'rs' | 'sas' | 'sass' | 'scala' | 'scheme' | 'scss' | 'shaderlab' | 'shader' | 'shellscript' | 'bash' | 'console' | 'sh' | 'shell' | 'zsh' | 'smalltalk' | 'solidity' | 'sparql' | 'sql' | 'ssh-config' | 'stata' | 'stylus' | 'styl' | 'svelte' | 'swift' | 'system-verilog' | 'tasl' | 'tcl' | 'tex' | 'toml' | 'tsx' | 'turtle' | 'twig' | 'typescript' | 'ts' | 'v' | 'vb' | 'cmd' | 'verilog' | 'vhdl' | 'viml' | 'vim' | 'vimscript' | 'vue-html' | 'vue' | 'vyper' | 'vy' | 'wasm' | 'wenyan' | '文言' | 'wgsl' | 'wolfram' | 'xml' | 'xsl' | 'yaml' | 'yml' | 'zenscript'; \ No newline at end of file From 40bccebf670911402a977f4a14972d504eaebf3e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 06:41:56 +0000 Subject: [PATCH 060/211] [pre-commit.ci lite] apply automatic fixes --- .../src/pages/component-sheet.tsx | 2 +- .../src/components/component-shiki.tsx | 8 +- .../test-case-component/src/generateHtml.ts | 22 +- packages/test-case-component/src/index.ts | 2 +- .../test-case-component/src/loadFixture.ts | 4 +- .../test-case-component/src/renderToHtml.ts | 11 +- packages/test-case-component/src/shiki.css | 2 +- packages/test-case-component/src/styles.css | 85 ++++--- packages/test-case-component/src/types.ts | 214 +++++++++++++++++- packages/test-case-component/tsconfig.json | 2 +- 10 files changed, 288 insertions(+), 64 deletions(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 63020b65ff..360c6e236a 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -65,7 +65,7 @@ export async function getStaticProps() { const loaded = ( await Promise.all(data.map((val) => loadFixture(val))) ).filter((val) => val !== undefined); - + return { props: { data, loaded, bodyClasses: cheatsheetBodyClasses } }; } diff --git a/packages/test-case-component/src/components/component-shiki.tsx b/packages/test-case-component/src/components/component-shiki.tsx index a1107a977e..467f3168e8 100644 --- a/packages/test-case-component/src/components/component-shiki.tsx +++ b/packages/test-case-component/src/components/component-shiki.tsx @@ -2,13 +2,13 @@ import * as React from "react"; export const ShikiComponent: React.FC<{ data: any }> = ({ data }) => { return ( -
+

{data.command}

-
+
{data.before && (
)} @@ -16,7 +16,7 @@ export const ShikiComponent: React.FC<{ data: any }> = ({ data }) => { <>
{data.command}
diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index 042059e63f..41d98ce33a 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,4 +1,4 @@ -import { getHighlighter, createCssVariablesTheme } from "shiki" +import { getHighlighter, createCssVariablesTheme } from "shiki"; import { Lang } from "./types"; import { renderToHtml, HatType, SelectionType, Token } from "./renderToHtml"; @@ -26,12 +26,12 @@ interface CursorlessFixtureState { sourceMark?: [CursorlessFixtureSelection]; } -const myTheme = createCssVariablesTheme({ - name: 'css-variables', - variablePrefix: '--shiki-', +const myTheme = createCssVariablesTheme({ + name: "css-variables", + variablePrefix: "--shiki-", variableDefaults: {}, - fontStyle: true -}) + fontStyle: true, +}); export async function generateHtml(state: CursorlessFixtureState, lang: Lang) { return new HTMLGenerator(state, lang).generate(); @@ -39,7 +39,7 @@ export async function generateHtml(state: CursorlessFixtureState, lang: Lang) { const highlighter = getHighlighter({ themes: [myTheme], - langs: ['javascript', 'typescript'], + langs: ["javascript", "typescript"], }); class HTMLGenerator { @@ -68,12 +68,12 @@ class HTMLGenerator { async getTokens() { const options = { - theme: 'css-variables', + theme: "css-variables", lang: this.lang, - } + }; this.tokens = (await highlighter) - .codeToTokens(this.state.documentContents, options).tokens - .map((line) => + .codeToTokens(this.state.documentContents, options) + .tokens.map((line) => line.map( (token) => ({ diff --git a/packages/test-case-component/src/index.ts b/packages/test-case-component/src/index.ts index 332b6e93e0..5670b3915e 100644 --- a/packages/test-case-component/src/index.ts +++ b/packages/test-case-component/src/index.ts @@ -1,3 +1,3 @@ export * from "./generate-examples"; export * from "./test-case-component"; -export * from "./loadFixture" +export * from "./loadFixture"; \ No newline at end of file diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index d5b812dfbd..c6ec5ea348 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -13,9 +13,7 @@ async function safeGenerateHtml( } } -export async function loadFixture( - data: any -) { +export async function loadFixture(data: any) { // console.log("loadFixture", data) try { const during = data.decorations diff --git a/packages/test-case-component/src/renderToHtml.ts b/packages/test-case-component/src/renderToHtml.ts index 428ee4c356..942f1312ef 100644 --- a/packages/test-case-component/src/renderToHtml.ts +++ b/packages/test-case-component/src/renderToHtml.ts @@ -1,4 +1,4 @@ - // forked from https://github.com/SimeonC/shiki/blob/main/packages/shiki/src/renderer.ts +// forked from https://github.com/SimeonC/shiki/blob/main/packages/shiki/src/renderer.ts import { ThemedToken } from "shiki"; @@ -144,10 +144,8 @@ export function renderToHtml( ); } - return h( - "pre", - { className: "shiki", style: `background-color: ${bg}` }, - [ options.langId ? `
${options.langId}
` : "", + return h("pre", { className: "shiki", style: `background-color: ${bg}` }, [ + options.langId ? `
${options.langId}
` : "", h( "code", {}, @@ -166,8 +164,7 @@ export function renderToHtml( ); }), ), - ] -); + ]); } const htmlEscapes = { diff --git a/packages/test-case-component/src/shiki.css b/packages/test-case-component/src/shiki.css index 0b8b8c21cd..7fd4c03d81 100644 --- a/packages/test-case-component/src/shiki.css +++ b/packages/test-case-component/src/shiki.css @@ -45,4 +45,4 @@ --shiki-ansi-bright-cyan-dim: #55ffff80; --shiki-ansi-bright-white: #ffffff; --shiki-ansi-bright-white-dim: #ffffff80; -} \ No newline at end of file +} diff --git a/packages/test-case-component/src/styles.css b/packages/test-case-component/src/styles.css index 82ca363c53..58a23abe72 100644 --- a/packages/test-case-component/src/styles.css +++ b/packages/test-case-component/src/styles.css @@ -10,11 +10,14 @@ body { place-items: flex-start; justify-items: stretch; padding: 42px; - font-family: firacode, SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace; + font-family: firacode, SFMono-Regular, Consolas, "Liberation Mono", Menlo, + monospace; /* background-image: radial-gradient(at 30% 89%, hsla(220,76%,68%,1) 0px, transparent 50%), radial-gradient(at 35% 0%, hsla(242,68%,61%,1) 0px, transparent 50%), radial-gradient(at 93% 46%, hsla(129,87%,73%,1) 0px, transparent 50%), radial-gradient(at 23% 49%, hsla(50,77%,67%,1) 0px, transparent 50%), radial-gradient(at 17% 27%, hsla(331,64%,60%,1) 0px, transparent 50%), radial-gradient(at 79% 30%, hsla(151,61%,77%,1) 0px, transparent 50%), radial-gradient(at 26% 40%, hsla(36,65%,63%,1) 0px, transparent 50%); */ } -body, pre.shiki, pre.shiki span { +body, +pre.shiki, +pre.shiki span { line-height: var(--line-height); min-height: var(--line-height); font-size: 14px; @@ -26,61 +29,72 @@ body, pre.shiki, pre.shiki span { gap: 16px; padding: 16px; border: 1px solid var(--color-border); - box-shadow: 0px 0px 6px #000A; + box-shadow: 0px 0px 6px #000a; border-radius: 8px; background: #ccc9; - & > div{ + & > div { background: #fff; border: 1px solid var(--color-border); - border-radius: 8px}; + border-radius: 8px; + } } - - + pre.shiki { padding: 12px 16px; display: flex; flex-direction: column; .line { - display: block} + display: block; + } } .command { border-top: 1px solid var(--color-border); padding: 8px; font-weight: bold; - text-align: center} + text-align: center; +} @keyframes blink { - 0%, 60%{ - border-color: #667F} - 61%, 100%{ - border-color: #6670}} + 0%, + 60% { + border-color: #667f; + } + 61%, + 100% { + border-color: #6670; + } +} .selection { display: inline-block; - border-right: 2px solid #00B; + border-right: 2px solid #00b; animation: blink 1400ms infinite; padding: 0px 0.5px 0px 0; margin: 0 0px 0 -1px; - height: var(--line-height)} - -.selection:not(:empty){ - background: #55F2; - padding-left: 0.5px} -.decoration{ + height: var(--line-height); +} + +.selection:not(:empty) { + background: #55f2; + padding-left: 0.5px; +} +.decoration { display: inline-block; padding: 0px 0.5px 0px 0.5px; margin: 0 0px 0 -1px; height: var(--line-height); - background: green} -.decoration.pendingDeleteBackground{ - background: #ffaeae} - -.hat{ + background: green; +} +.decoration.pendingDeleteBackground { + background: #ffaeae; +} + +.hat { position: relative; display: inline-block; &::after { - content: ''; + content: ""; display: inline; top: 0px; left: 50%; @@ -89,12 +103,15 @@ pre.shiki { background-color: grey; mask-repeat: no-repeat; width: 10px; - height: 10px} + height: 10px; } -.hat.default::after{ - mask-image: url('data:image/svg+xml;utf8,'); - top: -0.4px; - width: 6px; - height: 6px} -.hat.wing::after{ - mask-image: url('data:image/svg+xml;utf8,')}; \ No newline at end of file +} +.hat.default::after { + mask-image: url('data:image/svg+xml;utf8,'); + top: -0.4px; + width: 6px; + height: 6px; +} +.hat.wing::after { + mask-image: url('data:image/svg+xml;utf8,'); +} diff --git a/packages/test-case-component/src/types.ts b/packages/test-case-component/src/types.ts index 8b98b15c95..c86a4f46eb 100644 --- a/packages/test-case-component/src/types.ts +++ b/packages/test-case-component/src/types.ts @@ -1 +1,213 @@ -type Lang = 'abap' | 'actionscript-3' | 'ada' | 'apache' | 'apex' | 'apl' | 'applescript' | 'ara' | 'asm' | 'astro' | 'awk' | 'ballerina' | 'bat' | 'batch' | 'beancount' | 'berry' | 'be' | 'bibtex' | 'bicep' | 'blade' | 'c' | 'cadence' | 'cdc' | 'clarity' | 'clojure' | 'clj' | 'cmake' | 'cobol' | 'codeql' | 'ql' | 'coffee' | 'cpp' | 'crystal' | 'csharp' | 'c#' | 'cs' | 'css' | 'cue' | 'cypher' | 'cql' | 'd' | 'dart' | 'dax' | 'diff' | 'docker' | 'dockerfile' | 'dream-maker' | 'elixir' | 'elm' | 'erb' | 'erlang' | 'erl' | 'fish' | 'fsharp' | 'f#' | 'fs' | 'gdresource' | 'gdscript' | 'gdshader' | 'gherkin' | 'git-commit' | 'git-rebase' | 'glimmer-js' | 'gjs' | 'glimmer-ts' | 'gts' | 'glsl' | 'gnuplot' | 'go' | 'graphql' | 'groovy' | 'hack' | 'haml' | 'handlebars' | 'hbs' | 'haskell' | 'hs' | 'hcl' | 'hjson' | 'hlsl' | 'html' | 'http' | 'imba' | 'ini' | 'properties' | 'java' | 'javascript' | 'js' | 'jinja-html' | 'jison' | 'json' | 'json5' | 'jsonc' | 'jsonl' | 'jsonnet' | 'jssm' | 'fsl' | 'jsx' | 'julia' | 'kotlin' | 'kusto' | 'kql' | 'latex' | 'less' | 'liquid' | 'lisp' | 'logo' | 'lua' | 'make' | 'makefile' | 'markdown' | 'md' | 'marko' | 'matlab' | 'mdx' | 'mermaid' | 'narrat' | 'nar' | 'nextflow' | 'nf' | 'nginx' | 'nim' | 'nix' | 'objective-c' | 'objc' | 'objective-cpp' | 'ocaml' | 'pascal' | 'perl' | 'php' | 'plsql' | 'postcss' | 'powerquery' | 'powershell' | 'ps' | 'ps1' | 'prisma' | 'prolog' | 'proto' | 'pug' | 'jade' | 'puppet' | 'purescript' | 'python' | 'py' | 'r' | 'raku' | 'perl6' | 'razor' | 'reg' | 'rel' | 'riscv' | 'rst' | 'ruby' | 'rb' | 'rust' | 'rs' | 'sas' | 'sass' | 'scala' | 'scheme' | 'scss' | 'shaderlab' | 'shader' | 'shellscript' | 'bash' | 'console' | 'sh' | 'shell' | 'zsh' | 'smalltalk' | 'solidity' | 'sparql' | 'sql' | 'ssh-config' | 'stata' | 'stylus' | 'styl' | 'svelte' | 'swift' | 'system-verilog' | 'tasl' | 'tcl' | 'tex' | 'toml' | 'tsx' | 'turtle' | 'twig' | 'typescript' | 'ts' | 'v' | 'vb' | 'cmd' | 'verilog' | 'vhdl' | 'viml' | 'vim' | 'vimscript' | 'vue-html' | 'vue' | 'vyper' | 'vy' | 'wasm' | 'wenyan' | '文言' | 'wgsl' | 'wolfram' | 'xml' | 'xsl' | 'yaml' | 'yml' | 'zenscript'; \ No newline at end of file +type Lang = + | "abap" + | "actionscript-3" + | "ada" + | "apache" + | "apex" + | "apl" + | "applescript" + | "ara" + | "asm" + | "astro" + | "awk" + | "ballerina" + | "bat" + | "batch" + | "beancount" + | "berry" + | "be" + | "bibtex" + | "bicep" + | "blade" + | "c" + | "cadence" + | "cdc" + | "clarity" + | "clojure" + | "clj" + | "cmake" + | "cobol" + | "codeql" + | "ql" + | "coffee" + | "cpp" + | "crystal" + | "csharp" + | "c#" + | "cs" + | "css" + | "cue" + | "cypher" + | "cql" + | "d" + | "dart" + | "dax" + | "diff" + | "docker" + | "dockerfile" + | "dream-maker" + | "elixir" + | "elm" + | "erb" + | "erlang" + | "erl" + | "fish" + | "fsharp" + | "f#" + | "fs" + | "gdresource" + | "gdscript" + | "gdshader" + | "gherkin" + | "git-commit" + | "git-rebase" + | "glimmer-js" + | "gjs" + | "glimmer-ts" + | "gts" + | "glsl" + | "gnuplot" + | "go" + | "graphql" + | "groovy" + | "hack" + | "haml" + | "handlebars" + | "hbs" + | "haskell" + | "hs" + | "hcl" + | "hjson" + | "hlsl" + | "html" + | "http" + | "imba" + | "ini" + | "properties" + | "java" + | "javascript" + | "js" + | "jinja-html" + | "jison" + | "json" + | "json5" + | "jsonc" + | "jsonl" + | "jsonnet" + | "jssm" + | "fsl" + | "jsx" + | "julia" + | "kotlin" + | "kusto" + | "kql" + | "latex" + | "less" + | "liquid" + | "lisp" + | "logo" + | "lua" + | "make" + | "makefile" + | "markdown" + | "md" + | "marko" + | "matlab" + | "mdx" + | "mermaid" + | "narrat" + | "nar" + | "nextflow" + | "nf" + | "nginx" + | "nim" + | "nix" + | "objective-c" + | "objc" + | "objective-cpp" + | "ocaml" + | "pascal" + | "perl" + | "php" + | "plsql" + | "postcss" + | "powerquery" + | "powershell" + | "ps" + | "ps1" + | "prisma" + | "prolog" + | "proto" + | "pug" + | "jade" + | "puppet" + | "purescript" + | "python" + | "py" + | "r" + | "raku" + | "perl6" + | "razor" + | "reg" + | "rel" + | "riscv" + | "rst" + | "ruby" + | "rb" + | "rust" + | "rs" + | "sas" + | "sass" + | "scala" + | "scheme" + | "scss" + | "shaderlab" + | "shader" + | "shellscript" + | "bash" + | "console" + | "sh" + | "shell" + | "zsh" + | "smalltalk" + | "solidity" + | "sparql" + | "sql" + | "ssh-config" + | "stata" + | "stylus" + | "styl" + | "svelte" + | "swift" + | "system-verilog" + | "tasl" + | "tcl" + | "tex" + | "toml" + | "tsx" + | "turtle" + | "twig" + | "typescript" + | "ts" + | "v" + | "vb" + | "cmd" + | "verilog" + | "vhdl" + | "viml" + | "vim" + | "vimscript" + | "vue-html" + | "vue" + | "vyper" + | "vy" + | "wasm" + | "wenyan" + | "文言" + | "wgsl" + | "wolfram" + | "xml" + | "xsl" + | "yaml" + | "yml" + | "zenscript"; diff --git a/packages/test-case-component/tsconfig.json b/packages/test-case-component/tsconfig.json index dc4841a639..a9ee64473b 100644 --- a/packages/test-case-component/tsconfig.json +++ b/packages/test-case-component/tsconfig.json @@ -14,5 +14,5 @@ "src/**/*.tsx", "src/**/*.json", "../../typings/**/*.d.ts" - ] + ] } From 55ee6eff6f81d1fb9c45004860546ffdd2d92eb7 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Fri, 10 May 2024 16:46:58 -0700 Subject: [PATCH 061/211] fix: Add export statement to types file --- packages/test-case-component/src/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/types.ts b/packages/test-case-component/src/types.ts index c86a4f46eb..16a03c7680 100644 --- a/packages/test-case-component/src/types.ts +++ b/packages/test-case-component/src/types.ts @@ -1,4 +1,4 @@ -type Lang = +export type Lang = | "abap" | "actionscript-3" | "ada" From d7815702e16494d9de13a40df2930a7706b0f32f Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Fri, 10 May 2024 17:52:13 -0700 Subject: [PATCH 062/211] feat: Add filename property to yaml object, use as key --- packages/cursorless-org/src/pages/component-sheet.tsx | 1 + packages/test-case-component/src/loadFixture.ts | 1 + packages/test-case-component/src/test-case-component.tsx | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 360c6e236a..65218e9fd4 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -26,6 +26,7 @@ async function loadYamlFiles(dir: string, selectedFiles?: string[]) { const filePath = path.join(directoryPath, file); const fileContents = fs.readFileSync(filePath, "utf8"); const yamlData: any = yaml.load(fileContents); + yamlData.filename = file data.push(yamlData); } }); diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index c6ec5ea348..50bc62b8eb 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -59,6 +59,7 @@ export async function loadFixture(data: any) { during, before, after, + filename: data.filename }; } catch (e) { console.log("error", e); diff --git a/packages/test-case-component/src/test-case-component.tsx b/packages/test-case-component/src/test-case-component.tsx index f3e066c91b..43f5a8659f 100644 --- a/packages/test-case-component/src/test-case-component.tsx +++ b/packages/test-case-component/src/test-case-component.tsx @@ -20,7 +20,7 @@ export const TestCaseComponentPage: React.FC<{ data: any; loaded: any }> = ({ {loaded.map((item: any) => ( - + ))} ); From 58f46a1198d53564b84c0189cfc89c6fc51ccf1c Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Fri, 10 May 2024 18:09:30 -0700 Subject: [PATCH 063/211] feat: Remove `loaded` step in yaml file data acquisition --- .../cursorless-org/src/pages/component-sheet.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 65218e9fd4..c2582ee3ae 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -62,21 +62,22 @@ export async function getStaticProps() { itemsDirDecorations, testSelectedFiles, ); - const data = [...dataActions, ...dataDecorations]; - const loaded = ( - await Promise.all(data.map((val) => loadFixture(val))) + + const data = ( + await Promise.all([...dataActions, ...dataDecorations].map((val) => loadFixture(val))) ).filter((val) => val !== undefined); - return { props: { data, loaded, bodyClasses: cheatsheetBodyClasses } }; + return { props: { data, + bodyClasses: cheatsheetBodyClasses } }; } -export function App({ data, loaded }: { data: any; loaded: any }) { +export function App({ data }: { data: any; loaded: any }) { return ( <> Cursorless Test Case Component Page - + ); } From 8831e28e787ae5a22573159a4c7a48794213b19a Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 12 May 2024 13:00:52 -0700 Subject: [PATCH 064/211] fix: Remove duplicate file reference --- packages/cursorless-org/src/pages/component-sheet.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index c2582ee3ae..1f3d2e6840 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -51,7 +51,6 @@ export async function getStaticProps() { "chuckBlockBatt2.yml", "chuckBlockBattUntilAir.yml", "chuckFine.yml", - "chuckLineFine.yml", "chuckLineFineBetweenRisk.yml", "clearBlockFine.yml", "clearFine.yml", From 5de6d12b31e4ded4fc4aa086a0dfb8bfb6667b01 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 12 May 2024 13:21:34 -0700 Subject: [PATCH 065/211] fix: Use BundledLanguage type from Shiki --- packages/test-case-component/src/generateHtml.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index 41d98ce33a..03a9fcd397 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,5 +1,5 @@ import { getHighlighter, createCssVariablesTheme } from "shiki"; -import { Lang } from "./types"; +import { BundledLanguage } from "shiki"; import { renderToHtml, HatType, SelectionType, Token } from "./renderToHtml"; From e9b9a81dde11efdc5d8419a746bbda5d719d41df Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Sun, 12 May 2024 20:24:08 +0000 Subject: [PATCH 066/211] [pre-commit.ci lite] apply automatic fixes --- packages/cursorless-org/src/pages/component-sheet.tsx | 9 +++++---- packages/test-case-component/src/generateHtml.ts | 1 - packages/test-case-component/src/loadFixture.ts | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 1f3d2e6840..7dc63be561 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -26,7 +26,7 @@ async function loadYamlFiles(dir: string, selectedFiles?: string[]) { const filePath = path.join(directoryPath, file); const fileContents = fs.readFileSync(filePath, "utf8"); const yamlData: any = yaml.load(fileContents); - yamlData.filename = file + yamlData.filename = file; data.push(yamlData); } }); @@ -63,11 +63,12 @@ export async function getStaticProps() { ); const data = ( - await Promise.all([...dataActions, ...dataDecorations].map((val) => loadFixture(val))) + await Promise.all( + [...dataActions, ...dataDecorations].map((val) => loadFixture(val)), + ) ).filter((val) => val !== undefined); - return { props: { data, - bodyClasses: cheatsheetBodyClasses } }; + return { props: { data, bodyClasses: cheatsheetBodyClasses } }; } export function App({ data }: { data: any; loaded: any }) { diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index 03a9fcd397..d679a35f4c 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,5 +1,4 @@ import { getHighlighter, createCssVariablesTheme } from "shiki"; -import { BundledLanguage } from "shiki"; import { renderToHtml, HatType, SelectionType, Token } from "./renderToHtml"; diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index 50bc62b8eb..dd11217d0a 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -59,7 +59,7 @@ export async function loadFixture(data: any) { during, before, after, - filename: data.filename + filename: data.filename, }; } catch (e) { console.log("error", e); From 896436c1fe3dd14939f9e88c8089c447ef6ce785 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 12 May 2024 13:44:17 -0700 Subject: [PATCH 067/211] fix: Define Lang from BundledLanguage --- packages/test-case-component/src/generateHtml.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index d679a35f4c..e77ffcccf6 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,7 +1,9 @@ -import { getHighlighter, createCssVariablesTheme } from "shiki"; +import { getHighlighter, createCssVariablesTheme, BundledLanguage } from "shiki"; import { renderToHtml, HatType, SelectionType, Token } from "./renderToHtml"; +type Lang = BundledLanguage; + export interface SelectionAnchor { line: number; character: number; From d8be0a1bd041dc545520c67f9080605857dfdcc0 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 12 May 2024 13:58:18 -0700 Subject: [PATCH 068/211] feat: Add `upgrade` to exports from cursorless-engine --- packages/cursorless-engine/src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/cursorless-engine/src/index.ts b/packages/cursorless-engine/src/index.ts index e00aaf5fce..f762351b0c 100644 --- a/packages/cursorless-engine/src/index.ts +++ b/packages/cursorless-engine/src/index.ts @@ -16,3 +16,4 @@ export * from "./testUtil/plainObjectToTarget"; export * from "./util/getPartialTargetDescriptors"; export * from "./util/getPrimitiveTargets"; export * from "./util/grammarHelpers"; +export * from "./scripts/transformRecordedTests/transformations/upgrade"; \ No newline at end of file From 68d9364b12c607bc628b38d37470eb9491a5ef36 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Sun, 12 May 2024 20:46:06 +0000 Subject: [PATCH 069/211] [pre-commit.ci lite] apply automatic fixes --- packages/test-case-component/src/generateHtml.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index e77ffcccf6..b1f7548f6b 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,4 +1,8 @@ -import { getHighlighter, createCssVariablesTheme, BundledLanguage } from "shiki"; +import { + getHighlighter, + createCssVariablesTheme, + BundledLanguage, +} from "shiki"; import { renderToHtml, HatType, SelectionType, Token } from "./renderToHtml"; From 8a916348d2afbfdda36ab9aae137b44b201a6d98 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 12 May 2024 14:01:10 -0700 Subject: [PATCH 070/211] feat: Add cursorless-engine dependency to cursorless-org --- packages/cursorless-org/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/cursorless-org/package.json b/packages/cursorless-org/package.json index c13866fd53..074ef384bf 100644 --- a/packages/cursorless-org/package.json +++ b/packages/cursorless-org/package.json @@ -30,6 +30,7 @@ }, "dependencies": { "@cursorless/cheatsheet": "workspace:*", + "@cursorless/cursorless-engine": "workspace:*", "@cursorless/test-case-component": "workspace:*", "@mdx-js/loader": "3.1.0", "@mdx-js/react": "3.1.0", From 632cd5e582b063de9c3a50aa98a57c28981c273c Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 12 May 2024 14:17:47 -0700 Subject: [PATCH 071/211] chore: Move non-local imports to top of file --- .../cursorless-org/src/pages/component-sheet.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 7dc63be561..42d8854bd7 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -1,15 +1,15 @@ +import * as yaml from "js-yaml"; +import fs from "fs"; +import path from "path"; +import Head from "next/head"; + import { TestCaseComponentPage, loadFixture, } from "@cursorless/test-case-component"; -import { cheatsheetBodyClasses } from "@cursorless/cheatsheet"; - -import * as yaml from "js-yaml"; -import fs from "fs"; -import path from "path"; -import Head from "next/head"; +import { cheatsheetBodyClasses } from "@cursorless/cheatsheet"; const fixturesDir = path.join("../", "../", "data", "fixtures", "recorded"); From 192cdc01c7579e64f0840682df9a488093cd3d27 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 12 May 2024 14:19:46 -0700 Subject: [PATCH 072/211] feat: Import upgrade, add upgrade to data loading step --- packages/cursorless-org/src/pages/component-sheet.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 42d8854bd7..59379e851c 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -7,6 +7,7 @@ import { TestCaseComponentPage, loadFixture, } from "@cursorless/test-case-component"; +import { upgrade } from "@cursorless/cursorless-engine" import { cheatsheetBodyClasses } from "@cursorless/cheatsheet"; @@ -64,7 +65,10 @@ export async function getStaticProps() { const data = ( await Promise.all( - [...dataActions, ...dataDecorations].map((val) => loadFixture(val)), + [...dataActions, ...dataDecorations].map((val) => { + const upgraded = upgrade(val) + return loadFixture(upgraded); + }), ) ).filter((val) => val !== undefined); From dfd27c255fdff0fc09365effb84015de36bff92a Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 12 May 2024 18:49:48 -0700 Subject: [PATCH 073/211] feat: Drop loaded prop, add TestCaseFixture[] type in test-case-component --- packages/test-case-component/src/test-case-component.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/test-case-component/src/test-case-component.tsx b/packages/test-case-component/src/test-case-component.tsx index 43f5a8659f..c15c03fe18 100644 --- a/packages/test-case-component/src/test-case-component.tsx +++ b/packages/test-case-component/src/test-case-component.tsx @@ -2,10 +2,10 @@ import * as React from "react"; import { ShikiComponent } from "./components/component-shiki"; import "./shiki.css"; import "./styles.css"; +import { TestCaseFixture } from "@cursorless/common"; -export const TestCaseComponentPage: React.FC<{ data: any; loaded: any }> = ({ +export const TestCaseComponentPage: React.FC<{ data: TestCaseFixture[];}> = ({ data, - loaded, }) => { return (
@@ -19,7 +19,7 @@ export const TestCaseComponentPage: React.FC<{ data: any; loaded: any }> = ({ - {loaded.map((item: any) => ( + {data.map((item: any) => ( ))}
From 664fec44ded4a5c4a2b582275db472bafad78682 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 22:05:15 -0700 Subject: [PATCH 074/211] chore: Refresh pnpm-lock.yaml during rebase --- pnpm-lock.yaml | 7459 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 5298 insertions(+), 2161 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c8ff9c8729..6599c74311 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -118,7 +118,7 @@ importers: version: 30.0.0-beta.3 ts-jest: specifier: 29.3.4 - version: 29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.5)(jest@29.7.0(@types/node@20.17.50)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)))(typescript@5.8.3) + version: 29.3.4(@babel/core@7.24.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.3))(esbuild@0.25.5)(jest@29.7.0(@types/node@20.17.50)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)))(typescript@5.8.3) typescript: specifier: 5.8.3 version: 5.8.3 @@ -460,6 +460,12 @@ importers: '@cursorless/cheatsheet': specifier: workspace:* version: link:../cheatsheet + '@cursorless/cursorless-engine': + specifier: workspace:* + version: link:../cursorless-engine + '@cursorless/test-case-component': + specifier: workspace:* + version: link:../test-case-component '@mdx-js/loader': specifier: 3.1.0 version: 3.1.0(webpack@5.99.9(esbuild@0.25.5)) @@ -471,7 +477,7 @@ importers: version: 15.3.3(@mdx-js/loader@3.1.0(webpack@5.99.9(esbuild@0.25.5)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0)) next: specifier: 15.3.3 - version: 15.3.3(@babel/core@7.27.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 15.3.3(@babel/core@7.24.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: specifier: 19.1.0 version: 19.1.0 @@ -529,13 +535,13 @@ importers: version: link:../common '@docsearch/react': specifier: 3.9.0 - version: 3.9.0(@algolia/client-search@5.25.0)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.2) + version: 3.9.0(@algolia/client-search@5.25.0)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.13.0) '@docusaurus/core': specifier: 3.8.0 version: 3.8.0(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@docusaurus/preset-classic': specifier: 3.8.0 - version: 3.8.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.2)(typescript@5.8.3) + version: 3.8.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.13.0)(typescript@5.8.3) '@docusaurus/theme-classic': specifier: 3.8.0 version: 3.8.0(@types/react@19.1.6)(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) @@ -544,7 +550,7 @@ importers: version: 3.8.0(@docusaurus/plugin-content-docs@3.8.0(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/theme-search-algolia': specifier: 3.8.0 - version: 3.8.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.2)(typescript@5.8.3) + version: 3.8.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.13.0)(typescript@5.8.3) '@mdx-js/react': specifier: 3.1.0 version: 3.1.0(@types/react@19.1.6)(react@19.1.0) @@ -905,6 +911,49 @@ importers: specifier: 11.5.0 version: 11.5.0 + packages/test-case-component: + dependencies: + fs-extra: + specifier: 11.2.0 + version: 11.2.0 + js-yaml: + specifier: ^4.1.0 + version: 4.1.0 + prettier: + specifier: 3.2.5 + version: 3.2.5 + react: + specifier: ^18.2.0 + version: 18.2.0 + tsx: + specifier: 3.12.7 + version: 3.12.7 + yaml: + specifier: 2.2.1 + version: 2.2.1 + devDependencies: + '@types/fs-extra': + specifier: ^11.0.4 + version: 11.0.4 + '@types/jest': + specifier: 29.5.12 + version: 29.5.12 + '@types/react': + specifier: 18.2.71 + version: 18.2.71 + jest: + specifier: 29.7.0 + version: 29.7.0(@types/node@20.17.50)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)) + jest-environment-jsdom: + specifier: 29.7.0 + version: 29.7.0 + shiki: + specifier: ^1.4.0 + version: 1.4.0 + ts-jest: + specifier: 29.1.2 + version: 29.1.2(@babel/core@7.27.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.5)(jest@29.7.0(@types/node@20.17.50)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)))(typescript@5.8.3) + packages/test-case-recorder: dependencies: '@cursorless/common': @@ -985,6 +1034,10 @@ importers: packages: + '@aashutoshrathi/word-wrap@1.2.6': + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + '@algolia/autocomplete-core@1.17.9': resolution: {integrity: sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==} @@ -1005,81 +1058,81 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.24.0': - resolution: {integrity: sha512-pNTIB5YqVVwu6UogvdX8TqsRZENaflqMMjdY7/XIPMNGrBoNH9tewINLI7+qc9tIaOLcAp3ZldqoEwAihZZ3ig==} + '@algolia/client-abtesting@5.27.0': + resolution: {integrity: sha512-SITU5umoknxETtw67TxJu9njyMkWiH8pM+Bvw4dzfuIrIAT6Y1rmwV4y0A0didWoT+6xVuammIykbtBMolBcmg==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.24.0': - resolution: {integrity: sha512-IF+r9RRQsIf0ylIBNFxo7c6hDxxuhIfIbffhBXEF1HD13rjhP5AVfiaea9RzbsAZoySkm318plDpH/nlGIjbRA==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-common@5.24.0': - resolution: {integrity: sha512-p8K6tiXQTebRBxbrzWIfGCvfkT+Umml+2lzI92acZjHsvl6KYH6igOfVstKqXJRei9pvRzEEvVDNDLXDVleGTA==} + '@algolia/client-analytics@5.27.0': + resolution: {integrity: sha512-go1b9qIZK5vYEQ7jD2bsfhhhVsoh9cFxQ5xF8TzTsg2WOCZR3O92oXCkq15SOK0ngJfqDU6a/k0oZ4KuEnih1Q==} engines: {node: '>= 14.0.0'} '@algolia/client-common@5.25.0': resolution: {integrity: sha512-il1zS/+Rc6la6RaCdSZ2YbJnkQC6W1wiBO8+SH+DE6CPMWBU6iDVzH0sCKSAtMWl9WBxoN6MhNjGBnCv9Yy2bA==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.24.0': - resolution: {integrity: sha512-jOHF0+tixR3IZJMhZPquFNdCVPzwzzXoiqVsbTvfKojeaY6ZXybgUiTSB8JNX+YpsUT8Ebhu3UvRy4mw2PbEzw==} + '@algolia/client-common@5.27.0': + resolution: {integrity: sha512-tnFOzdNuMzsz93kOClj3fKfuYoF3oYaEB5bggULSj075GJ7HUNedBEm7a6ScrjtnOaOtipbnT7veUpHA4o4wEQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.24.0': - resolution: {integrity: sha512-Fx/Fp6d8UmDBHecTt0XYF8C9TAaA3qeCQortfGSZzWp4gVmtrUCFNZ1SUwb8ULREnO9DanVrM5hGE8R8C4zZTQ==} + '@algolia/client-insights@5.27.0': + resolution: {integrity: sha512-y1qgw39qZijjQBXrqZTiwK1cWgWGRiLpJNWBv9w36nVMKfl9kInrfsYmdBAfmlhVgF/+Woe0y1jQ7pa4HyShAw==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.24.0': - resolution: {integrity: sha512-F8ypOedSMhz6W7zuT5O1SXXsdXSOVhY2U6GkRbYk/mzrhs3jWFR3uQIfeQVWmsJjUwIGZmPoAr9E+T/Zm2M4wA==} + '@algolia/client-personalization@5.27.0': + resolution: {integrity: sha512-XluG9qPZKEbiLoIfXTKbABsWDNOMPx0t6T2ImJTTeuX+U/zBdmfcqqgcgkqXp+vbXof/XX/4of9Eqo1JaqEmKw==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.24.0': - resolution: {integrity: sha512-k+nuciQuq7WERNNE+hsx3DX636zIy+9R4xdtvW3PANT2a2BDGOv3fv2mta8+QUMcVTVcGe/Mo3QCb4pc1HNoxA==} + '@algolia/client-query-suggestions@5.27.0': + resolution: {integrity: sha512-V8/To+SsAl2sdw2AAjeLJuCW1L+xpz+LAGerJK7HKqHzE5yQhWmIWZTzqYQcojkii4iBMYn0y3+uReWqT8XVSQ==} engines: {node: '>= 14.0.0'} '@algolia/client-search@5.25.0': resolution: {integrity: sha512-9rUYcMIBOrCtYiLX49djyzxqdK9Dya/6Z/8sebPn94BekT+KLOpaZCuc6s0Fpfq7nx5J6YY5LIVFQrtioK9u0g==} engines: {node: '>= 14.0.0'} + '@algolia/client-search@5.27.0': + resolution: {integrity: sha512-EJJ7WmvmUXZdchueKFCK8UZFyLqy4Hz64snNp0cTc7c0MKaSeDGYEDxVsIJKp15r7ORaoGxSyS4y6BGZMXYuCg==} + engines: {node: '>= 14.0.0'} + '@algolia/events@4.0.1': resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} - '@algolia/ingestion@1.24.0': - resolution: {integrity: sha512-/lqVxmrvwoA+OyVK4XLMdz/PJaCTW4qYchX1AZ+98fdnH3K6XM/kMydQLfP0bUNGBQbmVrF88MqhqZRnZEn/MA==} + '@algolia/ingestion@1.27.0': + resolution: {integrity: sha512-xNCyWeqpmEo4EdmpG57Fs1fJIQcPwt5NnJ6MBdXnUdMVXF4f5PHgza+HQWQQcYpCsune96jfmR0v7us6gRIlCw==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.24.0': - resolution: {integrity: sha512-cRisDXQJhvfZCXL4hD22qca2CmW52TniOx6L7pvkaBDx0oQk1k9o+3w11fgfcCG+47OndMeNx5CMpu+K+COMzg==} + '@algolia/monitoring@1.27.0': + resolution: {integrity: sha512-P0NDiEFyt9UYQLBI0IQocIT7xHpjMpoFN3UDeerbztlkH9HdqT0GGh1SHYmNWpbMWIGWhSJTtz6kSIWvFu4+pw==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.24.0': - resolution: {integrity: sha512-JTMz0JqN2gidvKa2QCF/rMe8LNtdHaght03px2cluZaZfBRYy8TgHgkCeBspKKvV/abWJwl7J0FzWThCshqT3w==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-browser-xhr@5.24.0': - resolution: {integrity: sha512-B2Gc+iSxct1WSza5CF6AgfNgmLvVb61d5bqmIWUZixtJIhyAC6lSQZuF+nvt+lmKhQwuY2gYjGGClil8onQvKQ==} + '@algolia/recommend@5.27.0': + resolution: {integrity: sha512-cqfTMF1d1cc7hg0vITNAFxJZas7MJ4Obc36WwkKpY23NOtGb+4tH9X7UKlQa2PmTgbXIANoJ/DAQTeiVlD2I4Q==} engines: {node: '>= 14.0.0'} '@algolia/requester-browser-xhr@5.25.0': resolution: {integrity: sha512-JLaF23p1SOPBmfEqozUAgKHQrGl3z/Z5RHbggBu6s07QqXXcazEsub5VLonCxGVqTv6a61AAPr8J1G5HgGGjEw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.24.0': - resolution: {integrity: sha512-6E5+hliqGc5w8ZbyTAQ+C3IGLZ/GiX623Jl2bgHA974RPyFWzVSj4rKqkboUAxQmrFY7Z02ybJWVZS5OhPQocA==} + '@algolia/requester-browser-xhr@5.27.0': + resolution: {integrity: sha512-ErenYTcXl16wYXtf0pxLl9KLVxIztuehqXHfW9nNsD8mz9OX42HbXuPzT7y6JcPiWJpc/UU/LY5wBTB65vsEUg==} engines: {node: '>= 14.0.0'} '@algolia/requester-fetch@5.25.0': resolution: {integrity: sha512-rtzXwqzFi1edkOF6sXxq+HhmRKDy7tz84u0o5t1fXwz0cwx+cjpmxu/6OQKTdOJFS92JUYHsG51Iunie7xbqfQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.24.0': - resolution: {integrity: sha512-zM+nnqZpiQj20PyAh6uvgdSz+hD7Rj7UfAZwizqNP+bLvcbGXZwABERobuilkCQqyDBBH4uv0yqIcPRl8dSBEg==} + '@algolia/requester-fetch@5.27.0': + resolution: {integrity: sha512-CNOvmXsVi+IvT7z1d+6X7FveVkgEQwTNgipjQCHTIbF9KSMfZR7tUsJC+NpELrm10ALdOMauah84ybs9rw1cKQ==} engines: {node: '>= 14.0.0'} '@algolia/requester-node-http@5.25.0': resolution: {integrity: sha512-ZO0UKvDyEFvyeJQX0gmZDQEvhLZ2X10K+ps6hViMo1HgE2V8em00SwNsQ+7E/52a+YiBkVWX61pJJJE44juDMQ==} engines: {node: '>= 14.0.0'} + '@algolia/requester-node-http@5.27.0': + resolution: {integrity: sha512-Nx9EdLYZDsaYFTthqmc0XcVvsx6jqeEX8fNiYOB5i2HboQwl8pJPj1jFhGqoGd0KG7KFR+sdPO5/e0EDDAru2Q==} + engines: {node: '>= 14.0.0'} + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -1091,29 +1144,63 @@ packages: '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@babel/code-frame@7.24.2': + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + engines: {node: '>=6.9.0'} + '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.27.1': - resolution: {integrity: sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==} + '@babel/compat-data@7.24.1': + resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.27.5': + resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.24.3': + resolution: {integrity: sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.27.4': + resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.24.1': + resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.5': + resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.22.5': + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} - '@babel/core@7.27.1': - resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.1': - resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} + '@babel/helper-compilation-targets@7.23.6': + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.27.1': - resolution: {integrity: sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==} + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.1': - resolution: {integrity: sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==} + '@babel/helper-create-class-features-plugin@7.24.1': + resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 '@babel/helper-create-class-features-plugin@7.27.1': resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} @@ -1121,77 +1208,175 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.22.15': + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.27.1': resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-define-polyfill-provider@0.6.1': + resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-define-polyfill-provider@0.6.4': resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-environment-visitor@7.22.20': + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.23.0': + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.22.5': + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.23.0': + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.27.1': resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.3': + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.27.1': - resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==} + '@babel/helper-module-transforms@7.23.3': + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-module-transforms@7.27.3': + resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.22.5': + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + '@babel/helper-optimise-call-expression@7.27.1': resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.24.0': + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.27.1': resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} + '@babel/helper-remap-async-to-generator@7.22.20': + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-remap-async-to-generator@7.27.1': resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.24.1': + resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.27.1': resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-simple-access@7.22.5': + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.22.6': + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.1': + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.22.20': + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.27.1': resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.23.5': + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.22.20': + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.27.1': resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.1': - resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} + '@babel/helpers@7.24.1': + resolution: {integrity: sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.6': + resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.2': + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.1': - resolution: {integrity: sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==} + '@babel/parser@7.24.1': + resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.27.5': + resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} engines: {node: '>=6.0.0'} hasBin: true @@ -1207,18 +1392,36 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1': + resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1': + resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1': + resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1': resolution: {integrity: sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==} engines: {node: '>=6.9.0'} @@ -1257,12 +1460,29 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-export-namespace-from@7.8.3': + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.24.1': + resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-assertions@7.27.1': resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.24.1': + resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.27.1': resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} engines: {node: '>=6.9.0'} @@ -1279,6 +1499,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.24.1': + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.27.1': resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} @@ -1327,6 +1553,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.24.1': + resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.27.1': resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} engines: {node: '>=6.9.0'} @@ -1339,32 +1571,68 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-transform-arrow-functions@7.24.1': + resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-arrow-functions@7.27.1': resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-generator-functions@7.24.3': + resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-generator-functions@7.27.1': resolution: {integrity: sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-to-generator@7.24.1': + resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-to-generator@7.27.1': resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoped-functions@7.24.1': + resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoped-functions@7.27.1': resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.27.1': - resolution: {integrity: sha512-QEcFlMl9nGTgh1rn2nIeU5bkfb9BAjaQcWbiP4LvKxUot52ABcTkpcyJ7f2Q2U2RuQ84BNLgts3jRme2dTx6Fw==} + '@babel/plugin-transform-block-scoping@7.24.1': + resolution: {integrity: sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.27.5': + resolution: {integrity: sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.24.1': + resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1375,26 +1643,56 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-static-block@7.24.1': + resolution: {integrity: sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + '@babel/plugin-transform-class-static-block@7.27.1': resolution: {integrity: sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 + '@babel/plugin-transform-classes@7.24.1': + resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-classes@7.27.1': resolution: {integrity: sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-computed-properties@7.24.1': + resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-computed-properties@7.27.1': resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.27.1': - resolution: {integrity: sha512-ttDCqhfvpE9emVkXbPD8vyxxh4TWYACVybGkDj+oReOGwnp066ITEivDlLwe0b1R0+evJ13IXQuLNB5w1fhC5Q==} + '@babel/plugin-transform-destructuring@7.24.1': + resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.27.3': + resolution: {integrity: sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.24.1': + resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1405,6 +1703,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-duplicate-keys@7.24.1': + resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-duplicate-keys@7.27.1': resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} engines: {node: '>=6.9.0'} @@ -1417,158 +1721,314 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-transform-dynamic-import@7.24.1': + resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dynamic-import@7.27.1': resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-exponentiation-operator@7.24.1': + resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-exponentiation-operator@7.27.1': resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-export-namespace-from@7.24.1': + resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-export-namespace-from@7.27.1': resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-for-of@7.24.1': + resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-for-of@7.27.1': resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-function-name@7.24.1': + resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-function-name@7.27.1': resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-json-strings@7.24.1': + resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-json-strings@7.27.1': resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-literals@7.24.1': + resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-literals@7.27.1': resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-logical-assignment-operators@7.24.1': + resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-logical-assignment-operators@7.27.1': resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-member-expression-literals@7.24.1': + resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-member-expression-literals@7.27.1': resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-amd@7.24.1': + resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-amd@7.27.1': resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.24.1': + resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.27.1': resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-systemjs@7.24.1': + resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-systemjs@7.27.1': resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-umd@7.24.1': + resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-umd@7.27.1': resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-transform-new-target@7.24.1': + resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-new-target@7.27.1': resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1': + resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-numeric-separator@7.24.1': + resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-numeric-separator@7.27.1': resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.27.1': - resolution: {integrity: sha512-/sSliVc9gHE20/7D5qsdGlq7RG5NCDTWsAhyqzGuq174EtWJoGzIu1BQ7G56eDsTcy1jseBZwv50olSdXOlGuA==} + '@babel/plugin-transform-object-rest-spread@7.24.1': + resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-super@7.27.1': - resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} + '@babel/plugin-transform-object-rest-spread@7.27.3': + resolution: {integrity: sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.27.1': - resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} + '@babel/plugin-transform-object-super@7.24.1': + resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.27.1': + '@babel/plugin-transform-object-super@7.27.1': + resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.24.1': + resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.27.1': + resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.24.1': + resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.27.1': resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-parameters@7.24.1': + resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-parameters@7.27.1': resolution: {integrity: sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-methods@7.24.1': + resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-methods@7.27.1': resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-property-in-object@7.24.1': + resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-property-in-object@7.27.1': resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-property-literals@7.24.1': + resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-property-literals@7.27.1': resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-constant-elements@7.25.7': - resolution: {integrity: sha512-/qXt69Em8HgsjCLu7G3zdIQn7A2QwmYND7Wa0LTp09Na+Zn8L5d0A7wSXrKi18TJRc/Q5S1i1De/SU1LzVkSvA==} + '@babel/plugin-transform-react-constant-elements@7.24.1': + resolution: {integrity: sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.24.1': + resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1579,26 +2039,50 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-development@7.22.5': + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-development@7.27.1': resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx@7.23.4': + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx@7.27.1': resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-pure-annotations@7.24.1': + resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-pure-annotations@7.27.1': resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.27.1': - resolution: {integrity: sha512-B19lbbL7PMrKr52BNPjCqg1IyNUIjTcxKj8uX9zHO+PmWN93s19NDr/f69mIkEp2x9nmDJ08a7lgHaTTzvW7mw==} + '@babel/plugin-transform-regenerator@7.24.1': + resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.27.5': + resolution: {integrity: sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1609,14 +2093,26 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-transform-reserved-words@7.24.1': + resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-reserved-words@7.27.1': resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.27.1': - resolution: {integrity: sha512-TqGF3desVsTcp3WrJGj4HfKokfCXCLcHpt4PJF0D8/iT6LPd9RS82Upw3KPeyr6B22Lfd3DO8MVrmp0oRkUDdw==} + '@babel/plugin-transform-runtime@7.27.4': + resolution: {integrity: sha512-D68nR5zxU64EUzV8i7T3R5XP0Xhrou/amNnddsRQssx6GrTLdZl1rLxyjtVZBd+v/NVX4AbTPOB5aU8thAZV1A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.24.1': + resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1627,62 +2123,122 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-spread@7.24.1': + resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-spread@7.27.1': resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-sticky-regex@7.24.1': + resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-sticky-regex@7.27.1': resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-template-literals@7.24.1': + resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-template-literals@7.27.1': resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typeof-symbol@7.24.1': + resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typeof-symbol@7.27.1': resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.24.1': + resolution: {integrity: sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.27.1': resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-escapes@7.24.1': + resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-escapes@7.27.1': resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-property-regex@7.24.1': + resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-property-regex@7.27.1': resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-regex@7.24.1': + resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-regex@7.27.1': resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-sets-regex@7.24.1': + resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-transform-unicode-sets-regex@7.27.1': resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.27.1': - resolution: {integrity: sha512-TZ5USxFpLgKDpdEt8YWBR7p6g+bZo6sHaXLqP2BY/U0acaoI8FTVflcYCr/v94twM1C5IWFdZ/hscq9WjUeLXA==} + '@babel/preset-env@7.24.3': + resolution: {integrity: sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-env@7.27.2': + resolution: {integrity: sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1692,40 +2248,67 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + '@babel/preset-react@7.24.1': + resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/preset-react@7.27.1': resolution: {integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/preset-typescript@7.24.1': + resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/preset-typescript@7.27.1': resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime-corejs3@7.27.1': - resolution: {integrity: sha512-909rVuj3phpjW6y0MCXAZ5iNeORePa6ldJvp2baWGcTjwqbBDDz6xoS5JHJ7lS88NlwLYj07ImL/8IUMtDZzTA==} + '@babel/regjsgen@0.8.0': + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + + '@babel/runtime-corejs3@7.27.6': + resolution: {integrity: sha512-vDVrlmRAY8z9Ul/HxT+8ceAru95LQgkSKiXkSYZvqtbkPSfhZJgpRp45Cldbh1GJ1kxzQkI70AqyrTI58KpaWQ==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.27.1': - resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} + '@babel/runtime@7.24.1': + resolution: {integrity: sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==} engines: {node: '>=6.9.0'} '@babel/runtime@7.27.6': resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.1': - resolution: {integrity: sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==} + '@babel/template@7.24.0': + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.24.1': + resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.4': + resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.1': - resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} + '@babel/types@7.24.0': + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.1': - resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} + '@babel/types@7.27.6': + resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -1743,47 +2326,47 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@csstools/cascade-layer-name-parser@2.0.4': - resolution: {integrity: sha512-7DFHlPuIxviKYZrOiwVU/PiHLm3lLUR23OMuEEtfEOQTOp9hzQ2JjdY6X5H18RVuUPJqSCI+qNnD5iOLMVE0bA==} + '@csstools/cascade-layer-name-parser@2.0.5': + resolution: {integrity: sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 '@csstools/color-helpers@5.0.2': resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} engines: {node: '>=18'} - '@csstools/css-calc@2.1.3': - resolution: {integrity: sha512-XBG3talrhid44BY1x3MHzUx/aTG8+x/Zi57M4aTKK9RFB4aLlF3TTSzfzn8nWVHWL3FgAXAxmupmDd6VWww+pw==} + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-color-parser@3.0.9': - resolution: {integrity: sha512-wILs5Zk7BU86UArYBJTPy/FMPPKVKHMj1ycCEyf3VUptol0JNRLFU/BZsJ4aiIHJEbSLiizzRrw8Pc1uAEDrXw==} + '@csstools/css-color-parser@3.0.10': + resolution: {integrity: sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-parser-algorithms@3.0.4': - resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-tokenizer@3.0.3': - resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@csstools/media-query-list-parser@4.0.2': - resolution: {integrity: sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==} + '@csstools/media-query-list-parser@4.0.3': + resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 '@csstools/postcss-cascade-layers@5.0.1': resolution: {integrity: sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ==} @@ -1791,26 +2374,32 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-color-function@4.0.9': - resolution: {integrity: sha512-2UeQCGMO5+EeQsPQK2DqXp0dad+P6nIz6G2dI06APpBuYBKxZEq7CTH+UiztFQ8cB1f89dnO9+D/Kfr+JfI2hw==} + '@csstools/postcss-color-function@4.0.10': + resolution: {integrity: sha512-4dY0NBu7NVIpzxZRgh/Q/0GPSz/jLSw0i/u3LTUor0BkQcz/fNhN10mSWBDsL0p9nDb0Ky1PD6/dcGbhACuFTQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-color-mix-function@3.0.9': - resolution: {integrity: sha512-Enj7ZIIkLD7zkGCN31SZFx4H1gKiCs2Y4taBo/v/cqaHN7p1qGrf5UTMNSjQFZ7MgClGufHx4pddwFTGL+ipug==} + '@csstools/postcss-color-mix-function@3.0.10': + resolution: {integrity: sha512-P0lIbQW9I4ShE7uBgZRib/lMTf9XMjJkFl/d6w4EMNHu2qvQ6zljJGEcBkw/NsBtq/6q3WrmgxSS8kHtPMkK4Q==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-content-alt-text@2.0.5': - resolution: {integrity: sha512-9BOS535v6YmyOYk32jAHXeddRV+iyd4vRcbrEekpwxmueAXX5J8WgbceFnE4E4Pmw/ysnB9v+n/vSWoFmcLMcA==} + '@csstools/postcss-color-mix-variadic-function-arguments@1.0.0': + resolution: {integrity: sha512-Z5WhouTyD74dPFPrVE7KydgNS9VvnjB8qcdes9ARpCOItb4jTnm7cHp4FhxCRUoyhabD0WVv43wbkJ4p8hLAlQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-exponential-functions@2.0.8': - resolution: {integrity: sha512-vHgDXtGIBPpFQnFNDftMQg4MOuXcWnK91L/7REjBNYzQ/p2Fa/6RcnehTqCRrNtQ46PNIolbRsiDdDuxiHolwQ==} + '@csstools/postcss-content-alt-text@2.0.6': + resolution: {integrity: sha512-eRjLbOjblXq+byyaedQRSrAejKGNAFued+LcbzT+LCL78fabxHkxYjBbxkroONxHHYu2qxhFK2dBStTLPG3jpQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-exponential-functions@2.0.9': + resolution: {integrity: sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -1821,26 +2410,26 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-gamut-mapping@2.0.9': - resolution: {integrity: sha512-quksIsFm3DGsf8Qbr9KiSGBF2w3RwxSfOfma5wbORDB1AFF15r4EVW7sUuWw3s5IAEGMqzel/dE2rQsI7Yb8mA==} + '@csstools/postcss-gamut-mapping@2.0.10': + resolution: {integrity: sha512-QDGqhJlvFnDlaPAfCYPsnwVA6ze+8hhrwevYWlnUeSjkkZfBpcCO42SaUD8jiLlq7niouyLgvup5lh+f1qessg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-gradients-interpolation-method@5.0.9': - resolution: {integrity: sha512-duqTeUHF4ambUybAmhX9KonkicLM/WNp2JjMUbegRD4O8A/tb6fdZ7jUNdp/UUiO1FIdDkMwmNw6856bT0XF8Q==} + '@csstools/postcss-gradients-interpolation-method@5.0.10': + resolution: {integrity: sha512-HHPauB2k7Oits02tKFUeVFEU2ox/H3OQVrP3fSOKDxvloOikSal+3dzlyTZmYsb9FlY9p5EUpBtz0//XBmy+aw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-hwb-function@4.0.9': - resolution: {integrity: sha512-sDpdPsoGAhYl/PMSYfu5Ez82wXb2bVkg1Cb8vsRLhpXhAk4OSlsJN+GodAql6tqc1B2G/WToxsFU6G74vkhPvA==} + '@csstools/postcss-hwb-function@4.0.10': + resolution: {integrity: sha512-nOKKfp14SWcdEQ++S9/4TgRKchooLZL0TUFdun3nI4KPwCjETmhjta1QT4ICQcGVWQTvrsgMM/aLB5We+kMHhQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-ic-unit@4.0.1': - resolution: {integrity: sha512-lECc38i1w3qU9nhrUhP6F8y4BfcQJkR1cb8N6tZNf2llM6zPkxnqt04jRCwsUgNcB3UGKDy+zLenhOYGHqCV+Q==} + '@csstools/postcss-ic-unit@4.0.2': + resolution: {integrity: sha512-lrK2jjyZwh7DbxaNnIUjkeDmU8Y6KyzRBk91ZkI5h8nb1ykEfZrtIVArdIjX4DHMIBGpdHrgP0n4qXDr7OHaKA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -1857,8 +2446,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-light-dark-function@2.0.8': - resolution: {integrity: sha512-v8VU5WtrZIyEtk88WB4fkG22TGd8HyAfSFfZZQ1uNN0+arMJdZc++H3KYTfbYDpJRGy8GwADYH8ySXiILn+OyA==} + '@csstools/postcss-light-dark-function@2.0.9': + resolution: {integrity: sha512-1tCZH5bla0EAkFAI2r0H33CDnIBeLUaJh1p+hvvsylJ4svsv2wOmJjJn+OXwUZLXef37GYbRIVKX+X+g6m+3CQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -1887,20 +2476,20 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-logical-viewport-units@3.0.3': - resolution: {integrity: sha512-OC1IlG/yoGJdi0Y+7duz/kU/beCwO+Gua01sD6GtOtLi7ByQUpcIqs7UE/xuRPay4cHgOMatWdnDdsIDjnWpPw==} + '@csstools/postcss-logical-viewport-units@3.0.4': + resolution: {integrity: sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-media-minmax@2.0.8': - resolution: {integrity: sha512-Skum5wIXw2+NyCQWUyfstN3c1mfSh39DRAo+Uh2zzXOglBG8xB9hnArhYFScuMZkzeM+THVa//mrByKAfumc7w==} + '@csstools/postcss-media-minmax@2.0.9': + resolution: {integrity: sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4': - resolution: {integrity: sha512-AnGjVslHMm5xw9keusQYvjVWvuS7KWK+OJagaG0+m9QnIjZsrysD2kJP/tr/UJIyYtMCtu8OkUd+Rajb4DqtIQ==} + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5': + resolution: {integrity: sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -1917,26 +2506,26 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-oklab-function@4.0.9': - resolution: {integrity: sha512-UHrnujimwtdDw8BYDcWJtBXuJ13uc/BjAddPdfMc/RsWxhg8gG8UbvTF0tnMtHrZ4i7lwy85fPEzK1AiykMyRA==} + '@csstools/postcss-oklab-function@4.0.10': + resolution: {integrity: sha512-ZzZUTDd0fgNdhv8UUjGCtObPD8LYxMH+MJsW9xlZaWTV8Ppr4PtxlHYNMmF4vVWGl0T6f8tyWAKjoI6vePSgAg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-progressive-custom-properties@4.0.1': - resolution: {integrity: sha512-Ofz81HaY8mmbP8/Qr3PZlUzjsyV5WuxWmvtYn+jhYGvvjFazTmN9R2io5W5znY1tyk2CA9uM0IPWyY4ygDytCw==} + '@csstools/postcss-progressive-custom-properties@4.1.0': + resolution: {integrity: sha512-YrkI9dx8U4R8Sz2EJaoeD9fI7s7kmeEBfmO+UURNeL6lQI7VxF6sBE+rSqdCBn4onwqmxFdBU3lTwyYb/lCmxA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-random-function@2.0.0': - resolution: {integrity: sha512-MYZKxSr4AKfjECL8vg49BbfNNzK+t3p2OWX+Xf7rXgMaTP44oy/e8VGWu4MLnJ3NUd9tFVkisLO/sg+5wMTNsg==} + '@csstools/postcss-random-function@2.0.1': + resolution: {integrity: sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-relative-color-syntax@3.0.9': - resolution: {integrity: sha512-+AGOcLF5PmMnTRPnOdCvY7AwvD5veIOhTWbJV6vC3hB1tt0ii/k6QOwhWfsGGg1ZPQ0JY15u+wqLR4ZTtB0luA==} + '@csstools/postcss-relative-color-syntax@3.0.10': + resolution: {integrity: sha512-8+0kQbQGg9yYG8hv0dtEpOMLwB9M+P7PhacgIzVzJpixxV4Eq9AUQtQw8adMmAJU1RBBmIlpmtmm3XTRd/T00g==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -1947,14 +2536,14 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-sign-functions@1.1.3': - resolution: {integrity: sha512-4F4GRhj8xNkBtLZ+3ycIhReaDfKJByXI+cQGIps3AzCO8/CJOeoDPxpMnL5vqZrWKOceSATHEQJUO/Q/r2y7OQ==} + '@csstools/postcss-sign-functions@1.1.4': + resolution: {integrity: sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-stepped-value-functions@4.0.8': - resolution: {integrity: sha512-6Y4yhL4fNhgzbZ/wUMQ4EjFUfoNNMpEXZnDw1JrlcEBHUT15gplchtFsZGk7FNi8PhLHJfCUwVKrEHzhfhKK+g==} + '@csstools/postcss-stepped-value-functions@4.0.9': + resolution: {integrity: sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -1965,8 +2554,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-trigonometric-functions@4.0.8': - resolution: {integrity: sha512-YcDvYTRu7f78/91B6bX+mE1WoAO91Su7/8KSRpuWbIGUB8hmaNSRu9wziaWSLJ1lOB1aQe+bvo9BIaLKqPOo/g==} + '@csstools/postcss-trigonometric-functions@4.0.9': + resolution: {integrity: sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -1977,8 +2566,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/selector-resolve-nested@3.0.0': - resolution: {integrity: sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==} + '@csstools/selector-resolve-nested@3.1.0': + resolution: {integrity: sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==} engines: {node: '>=18'} peerDependencies: postcss-selector-parser: ^7.0.0 @@ -2209,102 +2798,207 @@ packages: '@emnapi/wasi-threads@1.0.2': resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} + '@esbuild-kit/cjs-loader@2.4.4': + resolution: {integrity: sha512-NfsJX4PdzhwSkfJukczyUiZGc7zNNWZcEAyqeISpDnn0PTfzMJR1aR8xAIPskBejIxBJbIgCCMzbaYa9SXepIg==} + + '@esbuild-kit/core-utils@3.3.2': + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} + + '@esbuild-kit/esm-loader@2.6.5': + resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} + '@esbuild/aix-ppc64@0.25.5': resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.25.5': resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.25.5': resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.25.5': resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.25.5': resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.25.5': resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-arm64@0.25.5': resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.5': resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.25.5': resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.25.5': resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.25.5': resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.25.5': resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-mips64el@0.18.20': + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.25.5': resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-ppc64@0.18.20': + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.25.5': resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-riscv64@0.18.20': + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.25.5': resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-s390x@0.18.20': + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.25.5': resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-x64@0.18.20': + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.25.5': resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} engines: {node: '>=18'} @@ -2317,6 +3011,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-x64@0.18.20': + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.5': resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} engines: {node: '>=18'} @@ -2329,30 +3029,60 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-x64@0.18.20': + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.5': resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/sunos-x64@0.18.20': + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.25.5': resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/win32-arm64@0.18.20': + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.25.5': resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-ia32@0.18.20': + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.25.5': resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-x64@0.18.20': + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.25.5': resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} engines: {node: '>=18'} @@ -2365,6 +3095,10 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/regexpp@4.10.0': + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-community/regexpp@4.12.1': resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -2694,6 +3428,9 @@ packages: '@jridgewell/source-map@0.3.6': resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} @@ -2703,26 +3440,8 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@jsonjoy.com/base64@1.1.2': - resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/json-pack@1.2.0': - resolution: {integrity: sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/util@1.6.0': - resolution: {integrity: sha512-sw/RMbehRhN68WRtcKCpQOPfnH6lLP4GJfqzi3iYej8tnzpZUDr6UkZYJjcjjC0FWEJOJbyM3PTIwxucUmDG2A==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@leichtgewicht/ip-codec@2.0.5': - resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + '@leichtgewicht/ip-codec@2.0.4': + resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} '@mdx-js/loader@3.1.0': resolution: {integrity: sha512-xU/lwKdOyfXtQGqn3VnJjlDrmKXEvMi1mgYxVmukEUtVycIz1nh7oQ40bKTd4cA7rLStqu0740pnhGYxGoqsCg==} @@ -2745,8 +3464,8 @@ packages: resolution: {integrity: sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==} engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@0.2.10': - resolution: {integrity: sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==} + '@napi-rs/wasm-runtime@0.2.11': + resolution: {integrity: sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==} '@next/env@15.3.3': resolution: {integrity: sha512-OdiMrzCl2Xi0VTjiQQUK0Xh7bJHnOuET2s+3V+Y40WJBAXrJeGA3f+I8MZJ/YQ3mVGi5XGR1L66oFlgqXhQ4Vw==} @@ -2841,8 +3560,8 @@ packages: resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - '@npmcli/fs@3.1.1': - resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} + '@npmcli/fs@3.1.0': + resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} '@npmcli/git@2.1.0': @@ -2857,8 +3576,8 @@ packages: engines: {node: '>= 10'} hasBin: true - '@npmcli/installed-package-contents@2.1.0': - resolution: {integrity: sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==} + '@npmcli/installed-package-contents@2.0.2': + resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true @@ -3137,9 +3856,9 @@ packages: resolution: {integrity: sha512-nj80XtTHHt7T+b5stLWszzd166MbGx4eTOu9+6h6RdelKMlSWhrb7KUb0j90tYk+yoGx8TeMVdJCaoBnkLp8xw==} engines: {node: '>=18.12'} - '@pnpm/logger@5.2.0': - resolution: {integrity: sha512-dCdSs2wPCweMkRLdISAKBOKSWeq/9iS9aanWgjoUkFs06KN2o5XGFg53oCXg/KbZhF9AXS3vMHPwTebzCeAEsA==} - engines: {node: '>=18.12'} + '@pnpm/logger@5.0.0': + resolution: {integrity: sha512-YfcB2QrX+Wx1o6LD1G2Y2fhDhOix/bAY/oAnMpHoNLsKkWIRbt1oKLkIFvxBMzLwAEPqnYWguJrYC+J6i4ywbw==} + engines: {node: '>=12.17'} '@pnpm/manifest-utils@6.0.9': resolution: {integrity: sha512-UVWhZezZs5as/IHdX79b4j/e7rECuiazdigiutZw9O2OVLAaoKmNb4ThWxV1m45vRo41c5XS4Tannmns5IRRXQ==} @@ -3178,6 +3897,10 @@ packages: resolution: {integrity: sha512-eYwrzhKUBGFdq78rJStGjaHTUHA2VH+Avr//CVx/T+EJkI7hnFmOy6YghvcB2clj8HpO4V8tXRNuFNfRX08ayw==} engines: {node: ^10.17 || >=12.3} + '@pnpm/npm-conf@2.2.2': + resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} + engines: {node: '>=12'} + '@pnpm/npm-conf@2.3.1': resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} engines: {node: '>=12'} @@ -3276,14 +3999,17 @@ packages: resolution: {integrity: sha512-UbY9aXp39wVffFX4FZ35NwF9pnl+ccq5i1yaBKamNB1kC8dU7oB/FgFrCva5cC6ox1y5ynze2SB8fj7uF7+kCw==} engines: {node: '>=18.12'} - '@polka/url@1.0.0-next.28': - resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + '@polka/url@1.0.0-next.25': + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@rushstack/eslint-patch@1.10.4': - resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} + '@rushstack/eslint-patch@1.11.0': + resolution: {integrity: sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==} + + '@shikijs/core@1.4.0': + resolution: {integrity: sha512-CxpKLntAi64h3j+TwWqVIQObPTED0FyXLHTTh3MKXtqiQNn2JGcMQQ362LftDbc9kYbDtrksNMNoVmVXzKFYUQ==} '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -3562,8 +4288,8 @@ packages: '@tsconfig/docusaurus@2.0.3': resolution: {integrity: sha512-3l1L5PzWVa7l0691TjnsZ0yOIEwG9DziSqu5IPZPlI5Dowi7z42cEym8Y35GHbgHvPcBfNxfrbxm7Cncn4nByQ==} - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + '@tsconfig/node10@1.0.10': + resolution: {integrity: sha512-PiaIWIoPvO6qm6t114ropMCagj6YAF24j9OkCA2mJDXFnlionEwhsBCJ8yek4aib575BI3OkART/90WsgHgLWw==} '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -3600,8 +4326,8 @@ packages: '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + '@types/babel__traverse@7.20.5': + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} @@ -3630,23 +4356,26 @@ packages: '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@types/eslint@8.56.6': + resolution: {integrity: sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==} '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/expect@1.20.4': resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==} - '@types/express-serve-static-core@4.19.6': - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + '@types/express-serve-static-core@4.17.43': + resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} - '@types/express@4.17.22': - resolution: {integrity: sha512-eZUmSnhRX9YRSkplpz0N+k6NljUUn5l3EWZIKZvYzhvMphEuNiyyy1viH/ejgt66JWgALwC/gtSUAeQKtSwW/w==} + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} '@types/fs-extra@11.0.4': resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} @@ -3672,8 +4401,8 @@ packages: '@types/http-errors@2.0.4': resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - '@types/http-proxy@1.17.16': - resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} + '@types/http-proxy@1.17.14': + resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} '@types/istanbul-lib-coverage@2.0.6': resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} @@ -3684,6 +4413,9 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/jest@29.5.12': + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + '@types/jest@29.5.14': resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} @@ -3693,6 +4425,9 @@ packages: '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + '@types/jsdom@20.0.1': + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + '@types/jsdom@21.1.7': resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==} @@ -3720,6 +4455,9 @@ packages: '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + '@types/mime@3.0.4': + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + '@types/minimatch@3.0.5': resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} @@ -3756,11 +4494,14 @@ packages: '@types/normalize-path@3.0.2': resolution: {integrity: sha512-DO++toKYPaFn0Z8hQ7Tx+3iT9t77IJo/nDiqTXilgEP+kPNIYdpS9kh3fXuc53ugqwp9pxC1PVjCpV1tQDyqMA==} - '@types/prismjs@1.26.4': - resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==} + '@types/prismjs@1.26.3': + resolution: {integrity: sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==} + + '@types/prop-types@15.7.12': + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - '@types/qs@6.14.0': - resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + '@types/qs@6.9.14': + resolution: {integrity: sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} @@ -3782,6 +4523,9 @@ packages: '@types/react-router@5.1.20': resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} + '@types/react@18.2.71': + resolution: {integrity: sha512-PxEsB9OjmQeYGffoWnYAd/r5FiJuUw2niFQHPc2v2idwh8wGPkkYzOHuinNJJY6NZqfoTCiOIizDOz38gYNsyw==} + '@types/react@19.1.6': resolution: {integrity: sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==} @@ -3794,6 +4538,9 @@ packages: '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + '@types/scheduler@0.23.0': + resolution: {integrity: sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==} + '@types/semver@7.7.0': resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} @@ -3803,8 +4550,8 @@ packages: '@types/serve-index@1.9.4': resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - '@types/serve-static@1.15.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + '@types/serve-static@1.15.5': + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} '@types/sinon@17.0.4': resolution: {integrity: sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==} @@ -3833,17 +4580,17 @@ packages: '@types/triple-beam@1.3.5': resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} - '@types/unist@2.0.11': - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + '@types/unist@2.0.10': + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/unist@3.0.2': + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} '@types/uuid@10.0.0': resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} - '@types/vinyl@2.0.12': - resolution: {integrity: sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==} + '@types/vinyl@2.0.11': + resolution: {integrity: sha512-vPXzCLmRp74e9LsP8oltnWKTH+jBwt86WgRUb4Pc9Lf3pkMVGyvIo2gm9bODeGfCay2DBB/hAWDuvf07JcK4rw==} '@types/vscode-webview@1.57.5': resolution: {integrity: sha512-iBAUYNYkz+uk1kdsq05fEcoh8gJmwT3lqqFPN7MGyjQ3HVloViMdo7ZJ8DFIP8WOK74PjOEilosqAyxV2iUFUw==} @@ -3854,14 +4601,14 @@ packages: '@types/webpack@5.28.5': resolution: {integrity: sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==} - '@types/ws@8.18.1': - resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@types/ws@8.5.10': + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@types/yargs@17.0.32': + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} '@typescript-eslint/eslint-plugin@8.33.1': resolution: {integrity: sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==} @@ -3925,88 +4672,88 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@unrs/resolver-binding-darwin-arm64@1.7.2': - resolution: {integrity: sha512-vxtBno4xvowwNmO/ASL0Y45TpHqmNkAaDtz4Jqb+clmcVSSl8XCG/PNFFkGsXXXS6AMjP+ja/TtNCFFa1QwLRg==} + '@unrs/resolver-binding-darwin-arm64@1.7.11': + resolution: {integrity: sha512-i3/wlWjQJXMh1uiGtiv7k1EYvrrS3L1hdwmWJJiz1D8jWy726YFYPIxQWbEIVPVAgrfRR0XNlLrTQwq17cuCGw==} cpu: [arm64] os: [darwin] - '@unrs/resolver-binding-darwin-x64@1.7.2': - resolution: {integrity: sha512-qhVa8ozu92C23Hsmv0BF4+5Dyyd5STT1FolV4whNgbY6mj3kA0qsrGPe35zNR3wAN7eFict3s4Rc2dDTPBTuFQ==} + '@unrs/resolver-binding-darwin-x64@1.7.11': + resolution: {integrity: sha512-8XXyFvc6w6kmMmi6VYchZhjd5CDcp+Lv6Cn1YmUme0ypsZ/0Kzd+9ESrWtDrWibKPTgSteDTxp75cvBOY64FQQ==} cpu: [x64] os: [darwin] - '@unrs/resolver-binding-freebsd-x64@1.7.2': - resolution: {integrity: sha512-zKKdm2uMXqLFX6Ac7K5ElnnG5VIXbDlFWzg4WJ8CGUedJryM5A3cTgHuGMw1+P5ziV8CRhnSEgOnurTI4vpHpg==} + '@unrs/resolver-binding-freebsd-x64@1.7.11': + resolution: {integrity: sha512-0qJBYzP8Qk24CZ05RSWDQUjdiQUeIJGfqMMzbtXgCKl/a5xa6thfC0MQkGIr55LCLd6YmMyO640ifYUa53lybQ==} cpu: [x64] os: [freebsd] - '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2': - resolution: {integrity: sha512-8N1z1TbPnHH+iDS/42GJ0bMPLiGK+cUqOhNbMKtWJ4oFGzqSJk/zoXFzcQkgtI63qMcUI7wW1tq2usZQSb2jxw==} + '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.11': + resolution: {integrity: sha512-1sGwpgvx+WZf0GFT6vkkOm6UJ+mlsVnjw+Yv9esK71idWeRAG3bbpkf3AoY8KIqKqmnzJExi0uKxXpakQ5Pcbg==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2': - resolution: {integrity: sha512-tjYzI9LcAXR9MYd9rO45m1s0B/6bJNuZ6jeOxo1pq1K6OBuRMMmfyvJYval3s9FPPGmrldYA3mi4gWDlWuTFGA==} + '@unrs/resolver-binding-linux-arm-musleabihf@1.7.11': + resolution: {integrity: sha512-D/1F/2lTe+XAl3ohkYj51NjniVly8sIqkA/n1aOND3ZMO418nl2JNU95iVa1/RtpzaKcWEsNTtHRogykrUflJg==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm64-gnu@1.7.2': - resolution: {integrity: sha512-jon9M7DKRLGZ9VYSkFMflvNqu9hDtOCEnO2QAryFWgT6o6AXU8du56V7YqnaLKr6rAbZBWYsYpikF226v423QA==} + '@unrs/resolver-binding-linux-arm64-gnu@1.7.11': + resolution: {integrity: sha512-7vFWHLCCNFLEQlmwKQfVy066ohLLArZl+AV/AdmrD1/pD1FlmqM+FKbtnONnIwbHtgetFUCV/SRi1q4D49aTlw==} cpu: [arm64] os: [linux] - '@unrs/resolver-binding-linux-arm64-musl@1.7.2': - resolution: {integrity: sha512-c8Cg4/h+kQ63pL43wBNaVMmOjXI/X62wQmru51qjfTvI7kmCy5uHTJvK/9LrF0G8Jdx8r34d019P1DVJmhXQpA==} + '@unrs/resolver-binding-linux-arm64-musl@1.7.11': + resolution: {integrity: sha512-tYkGIx8hjWPh4zcn17jLEHU8YMmdP2obRTGkdaB3BguGHh31VCS3ywqC4QjTODjmhhNyZYkj/1Dz/+0kKvg9YA==} cpu: [arm64] os: [linux] - '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2': - resolution: {integrity: sha512-A+lcwRFyrjeJmv3JJvhz5NbcCkLQL6Mk16kHTNm6/aGNc4FwPHPE4DR9DwuCvCnVHvF5IAd9U4VIs/VvVir5lg==} + '@unrs/resolver-binding-linux-ppc64-gnu@1.7.11': + resolution: {integrity: sha512-6F328QIUev29vcZeRX6v6oqKxfUoGwIIAhWGD8wSysnBYFY0nivp25jdWmAb1GildbCCaQvOKEhCok7YfWkj4Q==} cpu: [ppc64] os: [linux] - '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2': - resolution: {integrity: sha512-hQQ4TJQrSQW8JlPm7tRpXN8OCNP9ez7PajJNjRD1ZTHQAy685OYqPrKjfaMw/8LiHCt8AZ74rfUVHP9vn0N69Q==} + '@unrs/resolver-binding-linux-riscv64-gnu@1.7.11': + resolution: {integrity: sha512-NqhWmiGJGdzbZbeucPZIG9Iav4lyYLCarEnxAceguMx9qlpeEF7ENqYKOwB8Zqk7/CeuYMEcLYMaW2li6HyDzQ==} cpu: [riscv64] os: [linux] - '@unrs/resolver-binding-linux-riscv64-musl@1.7.2': - resolution: {integrity: sha512-NoAGbiqrxtY8kVooZ24i70CjLDlUFI7nDj3I9y54U94p+3kPxwd2L692YsdLa+cqQ0VoqMWoehDFp21PKRUoIQ==} + '@unrs/resolver-binding-linux-riscv64-musl@1.7.11': + resolution: {integrity: sha512-J2RPIFKMdTrLtBdfR1cUMKl8Gcy05nlQ+bEs/6al7EdWLk9cs3tnDREHZ7mV9uGbeghpjo4i8neNZNx3PYUY9w==} cpu: [riscv64] os: [linux] - '@unrs/resolver-binding-linux-s390x-gnu@1.7.2': - resolution: {integrity: sha512-KaZByo8xuQZbUhhreBTW+yUnOIHUsv04P8lKjQ5otiGoSJ17ISGYArc+4vKdLEpGaLbemGzr4ZeUbYQQsLWFjA==} + '@unrs/resolver-binding-linux-s390x-gnu@1.7.11': + resolution: {integrity: sha512-bDpGRerHvvHdhun7MmFUNDpMiYcJSqWckwAVVRTJf8F+RyqYJOp/mx04PDc7DhpNPeWdnTMu91oZRMV+gGaVcQ==} cpu: [s390x] os: [linux] - '@unrs/resolver-binding-linux-x64-gnu@1.7.2': - resolution: {integrity: sha512-dEidzJDubxxhUCBJ/SHSMJD/9q7JkyfBMT77Px1npl4xpg9t0POLvnWywSk66BgZS/b2Hy9Y1yFaoMTFJUe9yg==} + '@unrs/resolver-binding-linux-x64-gnu@1.7.11': + resolution: {integrity: sha512-G9U7bVmylzRLma3cK39RBm3guoD1HOvY4o0NS4JNm37AD0lS7/xyMt7kn0JejYyc0Im8J+rH69/dXGM9DAJcSQ==} cpu: [x64] os: [linux] - '@unrs/resolver-binding-linux-x64-musl@1.7.2': - resolution: {integrity: sha512-RvP+Ux3wDjmnZDT4XWFfNBRVG0fMsc+yVzNFUqOflnDfZ9OYujv6nkh+GOr+watwrW4wdp6ASfG/e7bkDradsw==} + '@unrs/resolver-binding-linux-x64-musl@1.7.11': + resolution: {integrity: sha512-7qL20SBKomekSunm7M9Fe5L93bFbn+FbHiGJbfTlp0RKhPVoJDP73vOxf1QrmJHyDPECsGWPFnKa/f8fO2FsHw==} cpu: [x64] os: [linux] - '@unrs/resolver-binding-wasm32-wasi@1.7.2': - resolution: {integrity: sha512-y797JBmO9IsvXVRCKDXOxjyAE4+CcZpla2GSoBQ33TVb3ILXuFnMrbR/QQZoauBYeOFuu4w3ifWLw52sdHGz6g==} + '@unrs/resolver-binding-wasm32-wasi@1.7.11': + resolution: {integrity: sha512-jisvIva8MidjI+B1lFRZZMfCPaCISePgTyR60wNT1MeQvIh5Ksa0G3gvI+Iqyj3jqYbvOHByenpa5eDGcSdoSg==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@unrs/resolver-binding-win32-arm64-msvc@1.7.2': - resolution: {integrity: sha512-gtYTh4/VREVSLA+gHrfbWxaMO/00y+34htY7XpioBTy56YN2eBjkPrY1ML1Zys89X3RJDKVaogzwxlM1qU7egg==} + '@unrs/resolver-binding-win32-arm64-msvc@1.7.11': + resolution: {integrity: sha512-G+H5nQZ8sRZ8ebMY6mRGBBvTEzMYEcgVauLsNHpvTUavZoCCRVP1zWkCZgOju2dW3O22+8seTHniTdl1/uLz3g==} cpu: [arm64] os: [win32] - '@unrs/resolver-binding-win32-ia32-msvc@1.7.2': - resolution: {integrity: sha512-Ywv20XHvHTDRQs12jd3MY8X5C8KLjDbg/jyaal/QLKx3fAShhJyD4blEANInsjxW3P7isHx1Blt56iUDDJO3jg==} + '@unrs/resolver-binding-win32-ia32-msvc@1.7.11': + resolution: {integrity: sha512-Hfy46DBfFzyv0wgR0MMOwFFib2W2+Btc8oE5h4XlPhpelnSyA6nFxkVIyTgIXYGTdFaLoZFNn62fmqx3rjEg3A==} cpu: [ia32] os: [win32] - '@unrs/resolver-binding-win32-x64-msvc@1.7.2': - resolution: {integrity: sha512-friS8NEQfHaDbkThxopGk+LuE5v3iY0StruifjQEt7SLbA46OnfgMO15sOTkbpJkol6RB+1l1TYPXh0sCddpvA==} + '@unrs/resolver-binding-win32-x64-msvc@1.7.11': + resolution: {integrity: sha512-7L8NdsQlCJ8T106Gbz/AjzM4QKWVsoQbKpB9bMBGcIZswUuAnJMHpvbqGW3RBqLHCIwX4XZ5fxSBHEFcK2h9wA==} cpu: [x64] os: [win32] @@ -4121,6 +4868,10 @@ packages: engines: {node: '>= 8'} hasBin: true + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} @@ -4132,17 +4883,25 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} + acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} + hasBin: true - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true @@ -4158,6 +4917,10 @@ packages: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} + agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + agentkeepalive@4.6.0: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} @@ -4187,16 +4950,16 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} algoliasearch-helper@3.25.0: resolution: {integrity: sha512-vQoK43U6HXA9/euCqLjvyNdM4G2Fiu/VFp4ae0Gau9sZeIKBPvUPnXfLYAe65Bg7PFuw03coeu5K6lTPSXRObw==} peerDependencies: algoliasearch: '>= 3.1 < 6' - algoliasearch@5.24.0: - resolution: {integrity: sha512-CkaUygzZ91Xbw11s0CsHMawrK3tl+Ue57725HGRgRzKgt2Z4wvXVXRCtQfvzh8K7Tp4Zp7f1pyHAtMROtTJHxg==} + algoliasearch@5.27.0: + resolution: {integrity: sha512-2PvAgvxxJzA3+dB+ERfS2JPdvUsxNf89Cc2GF5iCcFupTULOwmbfinvqrC4Qj9nHJJDNf494NqEN/1f9177ZTQ==} engines: {node: '>= 14.0.0'} ansi-align@3.0.1: @@ -4206,8 +4969,8 @@ packages: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} - ansi-diff@1.2.0: - resolution: {integrity: sha512-BIXwHKpjzghBjcwEV10Y4b17tjHfK4nhEqK3LqyQ3JgcMcjmi3DIevozNgrOpfvBMmrq9dfvrPJSu5/5vNUBQg==} + ansi-diff@1.1.1: + resolution: {integrity: sha512-XnTdFDQzbEewrDx8epWXdw7oqHMvv315vEtfqDiEhhWghIf4++h26c3/FMz7iTLhNrnj56DNIXpbxHZq+3s6qw==} ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} @@ -4226,13 +4989,17 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} ansi-split@1.0.1: resolution: {integrity: sha512-RRxQym4DFtDNmHIkW6aeFVvrXURb11lGAEPXNiryjCe8bK8RsANjzJ0M2aGOkvBYwP4Bl/xZ8ijtr6D3j1x/eg==} + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -4261,12 +5028,10 @@ packages: are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} - deprecated: This package is no longer supported. are-we-there-yet@3.0.1: resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -4290,6 +5055,10 @@ packages: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + array-differ@3.0.0: resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} engines: {node: '>=8'} @@ -4329,6 +5098,10 @@ packages: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} @@ -4354,15 +5127,18 @@ packages: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - astring@1.9.0: - resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + astring@1.8.6: + resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} hasBin: true async@2.6.4: resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} autoprefixer@10.4.21: resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} @@ -4375,8 +5151,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.10.0: - resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} + axe-core@4.10.3: + resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} engines: {node: '>=4'} axobject-query@4.1.0: @@ -4407,8 +5183,13 @@ packages: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - babel-plugin-polyfill-corejs2@0.4.11: - resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + babel-plugin-polyfill-corejs2@0.4.10: + resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.10.4: + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -4417,13 +5198,13 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-regenerator@0.6.2: - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + babel-plugin-polyfill-regenerator@0.6.1: + resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + babel-preset-current-node-syntax@1.0.1: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 @@ -4474,15 +5255,22 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@1.20.3: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + bole@5.0.11: + resolution: {integrity: sha512-KB0Ye0iMAW5BnNbnLfMSQcnI186hKUzE2fpkZWqcxsoTR7eqzlTidSOMYPHJOn/yR7VGH7uSZp37qH9q2Et0zQ==} + bole@5.0.19: resolution: {integrity: sha512-OgMuI8erST2t4K/Y+tSsn4SOxlKj4JR2wluQgLYadQFPIhj0r3jcmnp0OthgiyNO91CnxR8woKeLQmnMPgl1Ug==} - bonjour-service@1.3.0: - resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} + bonjour-service@1.2.1: + resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -4505,6 +5293,10 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -4512,8 +5304,13 @@ packages: browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - browserslist@4.24.5: - resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} + browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + browserslist@4.25.0: + resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -4540,8 +5337,8 @@ packages: builtins@1.0.3: resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} - builtins@5.1.0: - resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} bundle-name@4.1.0: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} @@ -4587,6 +5384,10 @@ packages: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + call-bound@1.0.4: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} @@ -4629,8 +5430,11 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001717: - resolution: {integrity: sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==} + caniuse-lite@1.0.30001600: + resolution: {integrity: sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==} + + caniuse-lite@1.0.30001721: + resolution: {integrity: sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -4643,10 +5447,18 @@ packages: resolution: {integrity: sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==} engines: {node: '>=14.16'} + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chalk@5.4.1: resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} @@ -4708,12 +5520,12 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - ci-info@4.2.0: - resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} + ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} - cjs-module-lexer@1.4.1: - resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} + cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} @@ -4751,8 +5563,8 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + cli-table3@0.6.4: + resolution: {integrity: sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==} engines: {node: 10.* || >= 12.*} cli-table@0.3.11: @@ -4858,6 +5670,10 @@ packages: resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==} engines: {node: '>=10'} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -4909,8 +5725,8 @@ packages: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} - compression@1.8.0: - resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} + compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} engines: {node: '>= 0.8.0'} comver-to-semver@1.0.0: @@ -4956,6 +5772,10 @@ packages: cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + cookie@0.7.1: resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} engines: {node: '>= 0.6'} @@ -4973,14 +5793,17 @@ packages: peerDependencies: webpack: ^5.1.0 + core-js-compat@3.36.1: + resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==} + core-js-compat@3.42.0: resolution: {integrity: sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==} - core-js-pure@3.38.1: - resolution: {integrity: sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==} + core-js-pure@3.36.1: + resolution: {integrity: sha512-NXCvHvSVYSrewP0L5OhltzXeWFJLo2AL2TYnj6iLV3Bw8mM62wAQMNgUCRI6EBu6hVVpbCxmOPlxh1Ikw2PfUA==} - core-js@3.38.1: - resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} + core-js@3.36.1: + resolution: {integrity: sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -5056,8 +5879,8 @@ packages: css-in-js-utils@3.1.0: resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} - css-loader@6.11.0: - resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} + css-loader@6.10.0: + resolution: {integrity: sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==} engines: {node: '>= 12.13.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -5133,8 +5956,8 @@ packages: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} - cssdb@8.2.5: - resolution: {integrity: sha512-leAt8/hdTCtzql9ZZi86uYAmCLzVKpJMMdjbvOGVnXFXz/BWFpBmM1MHEHU/RqtPyRYmabVmEW1DtX3YGLuuLA==} + cssdb@8.3.0: + resolution: {integrity: sha512-c7bmItIg38DgGjSwDPZOYF/2o0QU/sSgkWOMyl8votOfgFuyiFKWPesmCGEsrGLxEA9uL540cp8LdaGEjUGsZQ==} cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} @@ -5169,8 +5992,18 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - cssstyle@4.3.1: - resolution: {integrity: sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q==} + cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + + cssstyle@4.4.0: + resolution: {integrity: sha512-W0Y2HOXlPkb2yaKrCVRjinYKciu/qSLEmK0K9mcfDei3zwlnHFEHAs/Du3cIRwPqY+J4JsiBzUjoHyc8RsJ03A==} engines: {node: '>=18'} csstype@3.1.3: @@ -5190,6 +6023,10 @@ packages: resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} engines: {node: '>= 6'} + data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} @@ -5198,14 +6035,26 @@ packages: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} engines: {node: '>= 0.4'} + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + data-view-byte-length@1.0.1: resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} engines: {node: '>= 0.4'} + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + data-view-byte-offset@1.0.0: resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} engines: {node: '>= 0.4'} + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + dateformat@4.6.3: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} @@ -5228,6 +6077,15 @@ packages: supports-color: optional: true + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.4.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -5257,6 +6115,9 @@ packages: resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + decimal.js@10.5.0: resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} @@ -5267,16 +6128,16 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: babel-plugin-macros: optional: true - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + deep-eql@5.0.1: + resolution: {integrity: sha512-nwQCf6ne2gez3o1MxWifqkciwt0zhl0LO1/UwVu4uMBuPmflWM4oQ70XMqHqnBJA+nhzncaqL9HVL6KkHJ28lw==} engines: {node: '>=6'} deep-equal@2.2.3: @@ -5329,6 +6190,10 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} @@ -5355,6 +6220,10 @@ packages: resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} engines: {node: '>=12.20'} + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + detect-libc@2.0.4: resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} @@ -5366,9 +6235,8 @@ packages: detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - detect-port@1.6.1: - resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} - engines: {node: '>= 4.0.0'} + detect-port@1.5.1: + resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} hasBin: true devlop@1.1.0: @@ -5429,6 +6297,11 @@ packages: domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + domhandler@4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} @@ -5463,16 +6336,24 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - effect@3.15.2: - resolution: {integrity: sha512-0JNwvfs4Wwbo3f6IOydBFlp+zxuO8Iny2UAWNW3+FNn9x8FJf7q67QnQagUZgPl/BLl/xuPLVksrmNyIrJ8k/Q==} + effect@3.16.5: + resolution: {integrity: sha512-7nA+ZPMLoHItabNRV95RpMtwVw2k3BDNhILP4ffo8dG7zGR04XGjarP1JbO+jdBbTRET3eGx1Nz+hWB9kSOajw==} ejs@3.1.10: resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.150: - resolution: {integrity: sha512-rOOkP2ZUMx1yL4fCxXQKDHQ8ZXwisb2OycOQVKHgvB3ZI4CvehOd4y2tfnnLDieJ3Zs1RL1Dlp3cMkyIn7nnXA==} + ejs@3.1.9: + resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.4.717: + resolution: {integrity: sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A==} + + electron-to-chromium@1.5.165: + resolution: {integrity: sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -5494,8 +6375,8 @@ packages: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - emoticon@4.1.0: - resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==} + emoticon@4.0.1: + resolution: {integrity: sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==} enabled@2.0.0: resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} @@ -5511,10 +6392,6 @@ packages: encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} - engines: {node: '>=10.13.0'} - enhanced-resolve@5.18.1: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} @@ -5530,8 +6407,8 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - entities@6.0.0: - resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} env-paths@2.2.1: @@ -5555,8 +6432,12 @@ packages: error@10.4.0: resolution: {integrity: sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw==} - es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + es-abstract@1.23.2: + resolution: {integrity: sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==} + engines: {node: '>= 0.4'} + + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} engines: {node: '>= 0.4'} es-define-property@1.0.0: @@ -5574,12 +6455,12 @@ packages: es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - es-iterator-helpers@1.1.0: - resolution: {integrity: sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==} + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} engines: {node: '>= 0.4'} - es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + es-module-lexer@1.5.0: + resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==} es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} @@ -5593,6 +6474,10 @@ packages: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} @@ -5600,11 +6485,24 @@ packages: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + esbuild@0.25.5: resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} engines: {node: '>=18'} hasBin: true + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -5632,6 +6530,11 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + eslint-config-next@15.3.3: resolution: {integrity: sha512-QJLv/Ouk2vZnxL4b67njJwTLjTf7uZRltI0LL4GERYR4qMF5z08+gxkfODAeaK7TiC6o+cER91bDaEnwrTWV6Q==} peerDependencies: @@ -5647,8 +6550,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-import-context@0.1.6: - resolution: {integrity: sha512-/e2ZNPDLCrU8niIy0pddcvXuoO2YrKjf3NAIX+60mHJBT4yv7mqCqvVdyCW2E720e25e4S/1OSVef4U6efGLFg==} + eslint-import-context@0.1.8: + resolution: {integrity: sha512-bq+F7nyc65sKpZGT09dY0S0QrOnQtuDVIfyTGQ8uuvtMIF7oHp6CEP3mouN0rrnYF3Jqo6Ke0BfU/5wASZue1w==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} peerDependencies: unrs-resolver: ^1.0.0 @@ -5800,6 +6703,10 @@ packages: engines: {node: '>=4'} hasBin: true + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} @@ -5828,8 +6735,9 @@ packages: estree-util-to-js@2.0.0: resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - estree-util-value-to-estree@3.1.2: - resolution: {integrity: sha512-S0gW2+XZkmsx00tU2uJ4L9hUT7IFabbml9pHh2WQqFmAbxit++YGZne0sKJbNwkj9Wvg9E4uqWl4nCIFQMmfag==} + estree-util-value-to-estree@3.0.1: + resolution: {integrity: sha512-b2tdzTurEIbwRh+mKrEcaWfu1wgb8J1hVsgREg7FFiecWwK/PhO8X0kyc+0bIcKNtD4sqxIdNoRy6/p/TvECEA==} + engines: {node: '>=16.0.0'} estree-util-visit@2.0.0: resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} @@ -5879,6 +6787,10 @@ packages: exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + engines: {node: '>= 0.10.0'} + express@4.21.2: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} @@ -5909,6 +6821,10 @@ packages: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -5925,9 +6841,6 @@ packages: fast-shallow-equal@1.0.0: resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} - fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} - fast-xml-parser@5.2.3: resolution: {integrity: sha512-OdCYfRqfpuLUFonTNjvd30rCBZUneHpSQkCqfaeWQ9qrKcl6XlWeDBNVwGb+INAIxRshuN2jF+BE0L6gbBO2mw==} hasBin: true @@ -5952,8 +6865,8 @@ packages: fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - fdir@6.4.4: - resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + fdir@6.4.5: + resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -5993,10 +6906,18 @@ packages: filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + finalhandler@1.3.1: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} @@ -6032,14 +6953,14 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -6050,14 +6971,22 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} form-data-encoder@2.1.4: resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} engines: {node: '>= 14.17'} + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} @@ -6073,6 +7002,10 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + fs-extra@11.3.0: resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} engines: {node: '>=14.14'} @@ -6085,8 +7018,8 @@ packages: resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - fs-monkey@1.0.6: - resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} + fs-monkey@1.0.5: + resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -6103,18 +7036,20 @@ packages: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} gauge@3.0.2: resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} engines: {node: '>=10'} - deprecated: This package is no longer supported. gauge@4.0.4: resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} @@ -6128,6 +7063,9 @@ packages: resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} engines: {node: '>=18'} + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} @@ -6162,9 +7100,16 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + get-tsconfig@4.10.1: resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-tsconfig@4.7.3: + resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} + github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} @@ -6183,6 +7128,11 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true @@ -6221,6 +7171,10 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} + globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -6283,6 +7237,10 @@ packages: has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -6294,6 +7252,10 @@ packages: resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} @@ -6326,14 +7288,14 @@ packages: hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - hast-util-raw@9.0.4: - resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} + hast-util-raw@9.0.2: + resolution: {integrity: sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==} hast-util-to-estree@3.1.0: resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} - hast-util-to-jsx-runtime@2.3.2: - resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} + hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} hast-util-to-parse5@8.0.0: resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} @@ -6365,8 +7327,8 @@ packages: resolution: {integrity: sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hosted-git-info@6.1.3: - resolution: {integrity: sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==} + hosted-git-info@6.1.1: + resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hosted-git-info@8.1.0: @@ -6439,8 +7401,8 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} - http-parser-js@0.5.10: - resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} + http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} http-proxy-agent@4.0.1: resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} @@ -6454,6 +7416,15 @@ packages: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} + http-proxy-middleware@2.0.6: + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + http-proxy-middleware@2.0.9: resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} engines: {node: '>=12.0.0'} @@ -6491,12 +7462,8 @@ packages: humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - hyperdyperid@1.2.0: - resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} - engines: {node: '>=10.18'} - - hyphenate-style-name@1.1.0: - resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} + hyphenate-style-name@1.0.4: + resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} @@ -6519,16 +7486,16 @@ packages: resolution: {integrity: sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==} engines: {node: '>=10'} - ignore-walk@6.0.5: - resolution: {integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==} + ignore-walk@6.0.4: + resolution: {integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} - ignore@7.0.4: - resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} image-size@2.0.2: @@ -6545,16 +7512,16 @@ packages: immutability-helper@3.1.1: resolution: {integrity: sha512-Q0QaXjPjwIju/28TsugCHNEASwoCcJSyJV3uO1sOIQGI0jKgm9f41Lvz0DZj3n46cNCyAZTsEYoY4C2bVRUzyQ==} - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true @@ -6582,7 +7549,6 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} @@ -6604,8 +7570,8 @@ packages: inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - inline-style-parser@0.2.4: - resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + inline-style-parser@0.2.2: + resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} inline-style-prefixer@7.0.1: resolution: {integrity: sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==} @@ -6618,6 +7584,10 @@ packages: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + interpret@1.4.0: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} engines: {node: '>= 0.10'} @@ -6637,8 +7607,8 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + ipaddr.js@2.1.0: + resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} engines: {node: '>= 10'} is-alphabetical@2.0.1: @@ -6655,6 +7625,10 @@ packages: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -6668,6 +7642,10 @@ packages: is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -6676,6 +7654,10 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} @@ -6683,8 +7665,8 @@ packages: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} - is-bun-module@1.2.1: - resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} + is-bun-module@1.3.0: + resolution: {integrity: sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==} is-bun-module@2.0.0: resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} @@ -6697,18 +7679,29 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} is-data-view@1.0.1: resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} engines: {node: '>= 0.4'} + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} @@ -6733,6 +7726,10 @@ packages: is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -6792,6 +7789,10 @@ packages: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -6842,6 +7843,10 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + is-regexp@1.0.0: resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} engines: {node: '>=0.10.0'} @@ -6858,6 +7863,10 @@ packages: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} engines: {node: '>= 0.4'} + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -6866,6 +7875,10 @@ packages: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} @@ -6874,10 +7887,18 @@ packages: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + is-typed-array@1.1.13: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} @@ -6903,6 +7924,10 @@ packages: is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + is-weakset@2.0.3: resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} engines: {node: '>= 0.4'} @@ -6936,8 +7961,8 @@ packages: resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} engines: {node: '>= 8.0.0'} - isbinaryfile@5.0.3: - resolution: {integrity: sha512-VR4gNjFaDP8csJQvzInG20JvBj8MaHYLxNOMXysxRbGM7tcsHZwCjhch3FubFtZBkuDbN55i4dUukGeIrzF+6g==} + isbinaryfile@5.0.2: + resolution: {integrity: sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==} engines: {node: '>= 18.0.0'} isexe@2.0.0: @@ -6955,8 +7980,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} - istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + istanbul-lib-instrument@6.0.2: + resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==} engines: {node: '>=10'} istanbul-lib-report@3.0.1: @@ -6971,22 +7996,26 @@ packages: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} - iterator.prototype@1.1.3: - resolution: {integrity: sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==} + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} itertools@2.4.1: resolution: {integrity: sha512-dFTSYzmbfeNE3q/qxwAr/QdKsK6/rp+LTz8SJdTg1+lo9omXFYpDcOKw47/7TevlnC0LorR5pRSf68+yB3N0GA==} + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jackspeak@4.0.2: - resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} + jackspeak@4.1.1: + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} engines: {node: 20 || >=22} - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + jake@10.8.7: + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} engines: {node: '>=10'} hasBin: true @@ -7036,6 +8065,15 @@ packages: resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-environment-jsdom@29.7.0: + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + jest-environment-jsdom@30.0.0-beta.3: resolution: {integrity: sha512-YLBmv46sn5CYQR/iX+seZJ7FsuUAM4tf7Pm5ymP8XQKzrKEPdDv1f1V/z2b9XSTniR+OlIuGpnP3G3RbpbsceA==} engines: {node: ^18.14.0 || ^20.0.0 || >=22.0.0} @@ -7152,8 +8190,8 @@ packages: node-notifier: optional: true - jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true jiti@2.4.2: @@ -7180,6 +8218,15 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + jsdom@26.1.0: resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} engines: {node: '>=18'} @@ -7193,13 +8240,13 @@ packages: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} hasBin: true - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} hasBin: true @@ -7209,8 +8256,8 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-parse-even-better-errors@3.0.2: - resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} + json-parse-even-better-errors@3.0.1: + resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} json-schema-traverse@0.4.1: @@ -7274,8 +8321,8 @@ packages: kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} language-tags@1.0.9: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} @@ -7285,8 +8332,8 @@ packages: resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} engines: {node: '>=14.16'} - launch-editor@2.10.0: - resolution: {integrity: sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==} + launch-editor@2.6.1: + resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} @@ -7367,8 +8414,8 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + lilconfig@3.1.1: + resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} engines: {node: '>=14'} lines-and-columns@1.2.4: @@ -7442,8 +8489,8 @@ packages: resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} - logform@2.6.1: - resolution: {integrity: sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==} + logform@2.7.0: + resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} engines: {node: '>= 12.0.0'} longest-streak@3.1.0: @@ -7453,8 +8500,8 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.1.2: - resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + loupe@3.1.0: + resolution: {integrity: sha512-qKl+FrLXUhFuHUoDJG7f8P8gEMHq9NFS0c6ghXG1J0rldmZFQZoNVv/vyirE9qwCIhWZDsvEFd1sbFu3GvRQFg==} lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -7463,11 +8510,15 @@ packages: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.0.1: - resolution: {integrity: sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==} + lru-cache@11.1.0: + resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -7545,14 +8596,14 @@ packages: mdast-util-find-and-replace@3.0.2: resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} - mdast-util-from-markdown@2.0.1: - resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} + mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} mdast-util-frontmatter@2.0.1: resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} - mdast-util-gfm-autolink-literal@2.0.1: - resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} mdast-util-gfm-footnote@2.0.0: resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} @@ -7569,11 +8620,11 @@ packages: mdast-util-gfm@3.0.0: resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} - mdast-util-mdx-expression@2.0.1: - resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} - mdast-util-mdx-jsx@3.1.3: - resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} + mdast-util-mdx-jsx@3.1.2: + resolution: {integrity: sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==} mdast-util-mdx@3.0.0: resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} @@ -7584,8 +8635,8 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-hast@13.1.0: + resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} mdast-util-to-markdown@2.1.0: resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} @@ -7627,8 +8678,8 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} - memfs@4.17.2: - resolution: {integrity: sha512-NgYhCOWgovOXSzvYgUW0LQ7Qy72rWQMGGFJDoWg4G30RHd3z77VbYdtJ4fembJXBy8pMIUA31XNAupobOQlwdg==} + memfs@4.8.0: + resolution: {integrity: sha512-fcs7trFxZlOMadmTw5nyfOwS3il9pr3y+6xzLfXNwmuR/D0i4wz6rJURxArAbcJDGalbpbMvQ/IFI0NojRZgRg==} engines: {node: '>= 4.0.0'} memoize-one@5.2.1: @@ -7638,6 +8689,9 @@ packages: resolution: {integrity: sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==} engines: {node: '>=14.16'} + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -7652,32 +8706,32 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} - micromark-core-commonmark@2.0.1: - resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} + micromark-core-commonmark@2.0.0: + resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} - micromark-extension-directive@3.0.2: - resolution: {integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==} + micromark-extension-directive@3.0.0: + resolution: {integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==} micromark-extension-frontmatter@2.0.0: resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} - micromark-extension-gfm-autolink-literal@2.1.0: - resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} - micromark-extension-gfm-footnote@2.1.0: - resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} - micromark-extension-gfm-strikethrough@2.1.0: - resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} - micromark-extension-gfm-table@2.1.0: - resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} + micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} micromark-extension-gfm-tagfilter@2.0.0: resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - micromark-extension-gfm-task-list-item@2.1.0: - resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} micromark-extension-gfm@3.0.0: resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} @@ -7685,8 +8739,8 @@ packages: micromark-extension-mdx-expression@3.0.0: resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} - micromark-extension-mdx-jsx@3.0.1: - resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} + micromark-extension-mdx-jsx@3.0.0: + resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} micromark-extension-mdx-md@2.0.0: resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} @@ -7703,8 +8757,8 @@ packages: micromark-factory-label@2.0.0: resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} - micromark-factory-mdx-expression@2.0.2: - resolution: {integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==} + micromark-factory-mdx-expression@2.0.1: + resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} micromark-factory-space@1.1.0: resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} @@ -7757,8 +8811,8 @@ packages: micromark-util-sanitize-uri@2.0.0: resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - micromark-util-subtokenize@2.0.1: - resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + micromark-util-subtokenize@2.0.0: + resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} micromark-util-symbol@1.1.0: resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} @@ -7775,6 +8829,10 @@ packages: micromark@4.0.0: resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -7787,10 +8845,6 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - mime-db@1.54.0: - resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} - engines: {node: '>= 0.6'} - mime-types@2.1.18: resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} engines: {node: '>= 0.6'} @@ -7828,8 +8882,8 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - mini-css-extract-plugin@2.9.1: - resolution: {integrity: sha512-+Vyi+GCCOHnrJ2VPS+6aPoXN2k2jgUzDRhTFLjjTBn23qyXJXkjUWQgTL+mXpF5/A8ixLdCc6kWsoeOjKGejKQ==} + mini-css-extract-plugin@2.9.2: + resolution: {integrity: sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 @@ -7852,6 +8906,10 @@ packages: resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} engines: {node: '>=10'} + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -7875,16 +8933,16 @@ packages: resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - minipass-fetch@3.0.5: - resolution: {integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==} + minipass-fetch@3.0.4: + resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} minipass-flush@1.0.5: resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} engines: {node: '>= 8'} - minipass-json-stream@1.0.2: - resolution: {integrity: sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==} + minipass-json-stream@1.0.1: + resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} minipass-pipeline@1.2.4: resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} @@ -7902,6 +8960,10 @@ packages: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} + minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -7947,6 +9009,9 @@ packages: ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -7975,6 +9040,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + napi-postinstall@0.2.4: resolution: {integrity: sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -7996,10 +9066,6 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} - negotiator@0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} - engines: {node: '>= 0.6'} - neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -8065,6 +9131,9 @@ packages: node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} @@ -8111,8 +9180,8 @@ packages: npm-bundled@1.1.2: resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} - npm-bundled@3.0.1: - resolution: {integrity: sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==} + npm-bundled@3.0.0: + resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} npm-install-checks@4.0.0: @@ -8176,12 +9245,10 @@ packages: npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. npmlog@6.0.2: resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. nprogress@0.2.0: resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} @@ -8198,6 +9265,9 @@ packages: nwsapi@2.2.20: resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -8206,9 +9276,8 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} - engines: {node: '>= 0.4'} + object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} object-inspect@1.13.4: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} @@ -8226,6 +9295,10 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + object.entries@1.1.8: resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} engines: {node: '>= 0.4'} @@ -8267,8 +9340,8 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} - open@10.1.2: - resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==} + open@10.1.0: + resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} open@8.4.2: @@ -8279,8 +9352,8 @@ packages: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} ora@5.4.1: @@ -8295,6 +9368,10 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} @@ -8351,8 +9428,8 @@ packages: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} - p-retry@6.2.1: - resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} + p-retry@6.2.0: + resolution: {integrity: sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==} engines: {node: '>=16.17'} p-timeout@3.2.0: @@ -8412,8 +9489,11 @@ packages: parse-numeric-range@1.3.0: resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} - parse5-htmlparser2-tree-adapter@7.1.0: - resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} + parse5-htmlparser2-tree-adapter@7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} @@ -8454,6 +9534,10 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} @@ -8469,8 +9553,11 @@ packages: path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - path-to-regexp@1.9.0: - resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + path-to-regexp@1.8.0: + resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} path-to-regexp@3.3.0: resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} @@ -8490,6 +9577,9 @@ packages: periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -8551,8 +9641,8 @@ packages: peerDependencies: postcss: ^8.4.6 - postcss-color-functional-notation@7.0.9: - resolution: {integrity: sha512-WScwD3pSsIz+QP97sPkGCeJm7xUH0J18k6zV5o8O2a4cQJyv15vLUx/WFQajuJVgZhmJL5awDu8zHnqzAzm4lw==} + postcss-color-functional-notation@7.0.10: + resolution: {integrity: sha512-k9qX+aXHBiLTRrWoCJuUFI6F1iF6QJQUXNVWJVSbqZgj57jDhBlOvD8gNUGl35tgqDivbGLhZeW3Ongz4feuKA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -8581,20 +9671,20 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-custom-media@11.0.5: - resolution: {integrity: sha512-SQHhayVNgDvSAdX9NQ/ygcDQGEY+aSF4b/96z7QUX6mqL5yl/JgG/DywcF6fW9XbnCRE+aVYk+9/nqGuzOPWeQ==} + postcss-custom-media@11.0.6: + resolution: {integrity: sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - postcss-custom-properties@14.0.4: - resolution: {integrity: sha512-QnW8FCCK6q+4ierwjnmXF9Y9KF8q0JkbgVfvQEMa93x1GT8FvOiUevWCN2YLaOWyByeDX8S6VFbZEeWoAoXs2A==} + postcss-custom-properties@14.0.6: + resolution: {integrity: sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - postcss-custom-selectors@8.0.4: - resolution: {integrity: sha512-ASOXqNvDCE0dAJ/5qixxPeL1aOVGHGW2JwSy7HyjWNbnWTQCl+fDc968HY1jCmZI0+BaYT5CxsOiUhavpG/7eg==} + postcss-custom-selectors@8.0.5: + resolution: {integrity: sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -8635,8 +9725,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-double-position-gradients@6.0.1: - resolution: {integrity: sha512-ZitCwmvOR4JzXmKw6sZblTgwV1dcfLvClcyjADuqZ5hU0Uk4SVNpvSN9w8NcJ7XuxhRYxVA8m8AB3gy+HNBQOA==} + postcss-double-position-gradients@6.0.2: + resolution: {integrity: sha512-7qTqnL7nfLRyJK/AHSVrrXOuvDDzettC+wGoienURV8v2svNbu6zJC52ruZtHaO6mfcagFmuTGFdzRsJKB3k5Q==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -8682,8 +9772,8 @@ packages: peerDependencies: postcss: ^8.4.21 - postcss-lab-function@7.0.9: - resolution: {integrity: sha512-IGbsIXbqMDusymJAKYX+f9oakPo89wL9Pzd/qRBQOVf3EIQWT9hgvqC4Me6Dkzxp3KPuIBf6LPkjrLHe/6ZMIQ==} + postcss-lab-function@7.0.10: + resolution: {integrity: sha512-tqs6TCEv9tC1Riq6fOzHuHcZyhg4k3gIAMB8GGY/zA1ssGdm6puHMVE7t75aOSoFg7UD2wyrFFhbldiCMyyFTQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -8768,20 +9858,38 @@ packages: peerDependencies: postcss: ^8.4.31 + postcss-modules-extract-imports@3.0.0: + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + postcss-modules-extract-imports@3.1.0: resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 - postcss-modules-local-by-default@4.0.5: - resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} + postcss-modules-local-by-default@4.0.4: + resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.1.1: + resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 - postcss-modules-scope@3.2.0: - resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 @@ -8792,8 +9900,8 @@ packages: peerDependencies: postcss: ^8.1.0 - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + postcss-nested@6.0.1: + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 @@ -8887,8 +9995,8 @@ packages: peerDependencies: postcss: ^8.4 - postcss-preset-env@10.1.6: - resolution: {integrity: sha512-1jRD7vttKLJ7o0mcmmYWKRLm7W14rI8K1I7Y41OeXUPEVc/CAzfTssNUeJ0zKbR+zMk4boqct/gwS/poIFF5Lg==} + postcss-preset-env@10.2.1: + resolution: {integrity: sha512-mDInnlm4mYhmR0S79hNLzseW9nx4Ihd8s15K99iu6u6QhoSQgqWX9Oj6nTd/8Dz3b0T7v2JSrfnXsDfv9TFvDg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -8928,8 +10036,8 @@ packages: peerDependencies: postcss: ^8.4 - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} postcss-selector-parser@7.1.0: @@ -8975,8 +10083,8 @@ packages: resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} engines: {node: ^10 || ^12 || >=14} - preferred-pm@3.1.4: - resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} + preferred-pm@3.1.3: + resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} engines: {node: '>=10'} prelude-ls@1.2.1: @@ -9038,6 +10146,11 @@ packages: prettier-plugin-svelte: optional: true + prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + prettier@3.3.3: resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} @@ -9129,8 +10242,8 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + property-information@6.4.1: + resolution: {integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==} proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -9139,6 +10252,9 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -9153,10 +10269,21 @@ packages: pure-rand@7.0.1: resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + + qs@6.12.0: + resolution: {integrity: sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==} + engines: {node: '>=0.6'} + qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -9215,8 +10342,8 @@ packages: react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} react-json-view-lite@2.4.1: resolution: {integrity: sha512-fwFYknRIBxjbFm0kBDrzgBy1xa5tDg2LyXXBepC5f1b+MY3BUClMCsvanMPn089JbV1Eg3nZcrp0VCuH43aXnA==} @@ -9268,6 +10395,10 @@ packages: react: '*' react-dom: '*' + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + react@19.1.0: resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} engines: {node: '>=0.10.0'} @@ -9294,7 +10425,6 @@ packages: read-package-json@6.0.4: resolution: {integrity: sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - deprecated: This package is no longer supported. Please use @npmcli/package-json instead. read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} @@ -9355,10 +10485,18 @@ packages: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} engines: {node: '>=12'} + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + reflect.getprototypeof@1.0.6: resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} engines: {node: '>= 0.4'} + regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + regenerate-unicode-properties@10.2.0: resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} engines: {node: '>=4'} @@ -9366,14 +10504,28 @@ packages: regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true - regexp.prototype.flags@1.5.3: - resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} + regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + regexpu-core@6.2.0: resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} engines: {node: '>=4'} @@ -9397,6 +10549,10 @@ packages: resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true + regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + rehype-raw@7.0.0: resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} @@ -9423,8 +10579,8 @@ packages: remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - remark-rehype@11.1.1: - resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} + remark-rehype@11.1.0: + resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} @@ -9526,7 +10682,6 @@ packages: rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rrweb-cssom@0.8.0: @@ -9535,8 +10690,8 @@ packages: rtl-css-js@1.16.1: resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} - rtlcss@4.3.0: - resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==} + rtlcss@4.1.1: + resolution: {integrity: sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ==} engines: {node: '>=12.0.0'} hasBin: true @@ -9558,6 +10713,10 @@ packages: resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -9568,14 +10727,18 @@ packages: resolution: {integrity: sha512-vdTshSQ2JsRCgT8eKZWNJIL26C6bVqy1SOmuCMlKHegVeo8KYRobRrefOdUq9OozSPUUiSxrylteeRmLOMFfWg==} engines: {node: '>=12'} - safe-execa@0.1.4: - resolution: {integrity: sha512-GI3k4zl4aLC3lxZNEEXAxxcXE6E3TfOsJ5xxJPhcAv9MWwnH2O9I0HrDmZFsVnu/C8wzRYSsTHdoVRmL0VicDw==} - engines: {node: '>=12'} + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} safe-regex-test@1.0.3: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + safe-stable-stringify@2.5.0: resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} engines: {node: '>=10'} @@ -9583,8 +10746,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -9600,6 +10763,10 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} + schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + schema-utils@4.3.2: resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} engines: {node: '>= 10.13.0'} @@ -9612,8 +10779,8 @@ packages: resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} engines: {node: '>=0.10.0'} - search-insights@2.17.2: - resolution: {integrity: sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==} + search-insights@2.13.0: + resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} @@ -9641,11 +10808,20 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -9660,6 +10836,10 @@ packages: resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + serve-static@1.16.2: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} @@ -9679,6 +10859,10 @@ packages: resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} engines: {node: '>=6.9'} + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -9707,15 +10891,17 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.3: - resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} - engines: {node: '>= 0.4'} + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} shelljs@0.8.5: resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} engines: {node: '>=4'} hasBin: true + shiki@1.4.0: + resolution: {integrity: sha512-5WIn0OL8PWm7JhnTwRWXniy6eEDY234mRrERVlFa646V2ErQqwIFd2UML7e0Pq9eqSKLoMa3Ke+xbsF+DAuy+Q==} + side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -9761,8 +10947,8 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - sitemap@7.1.2: - resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==} + sitemap@7.1.1: + resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==} engines: {node: '>=12.0.0', npm: '>=5.6.0'} hasBin: true @@ -9808,8 +10994,12 @@ packages: resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} - socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + socks@2.8.1: + resolution: {integrity: sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + socks@2.8.4: + resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} sort-css-media-queries@2.2.0: @@ -9820,10 +11010,14 @@ packages: resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} engines: {node: '>=8'} - sort-keys@5.1.0: - resolution: {integrity: sha512-aSbHV0DaBcr7u0PVHXzM6NbZNAtrr9sF6+Qfs9UUVG7Ll3jQ6hHi8F/xqIIcn2rvIVbr0v/2zyjSdwSV47AgLQ==} + sort-keys@5.0.0: + resolution: {integrity: sha512-Pdz01AvCAottHTPQGzndktFNdbRA75BgOfeT1hH+AMnJFv8lynkPi42rfeEhpx1saTEI3YNMWxfqu0sFD1G8pw==} engines: {node: '>=12'} + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -9862,8 +11056,8 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.20: - resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + spdx-license-ids@3.0.17: + resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} @@ -9885,8 +11079,8 @@ packages: resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} engines: {node: '>=12'} - ssri@10.0.6: - resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} + ssri@10.0.5: + resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} ssri@8.0.1: @@ -9897,6 +11091,10 @@ packages: resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + stable-hash-x@0.1.1: + resolution: {integrity: sha512-l0x1D6vhnsNUGPFVDx45eif0y6eedVC8nm5uACTrVFJFtl2mLRW17aWtVyxFCpn5t94VUPkjU8vSLwIuwwqtJQ==} + engines: {node: '>=12.0.0'} + stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} @@ -9941,6 +11139,10 @@ packages: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -9972,6 +11174,10 @@ packages: string.prototype.repeat@1.0.0: resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + string.prototype.trim@1.2.9: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} @@ -9979,6 +11185,10 @@ packages: string.prototype.trimend@1.0.8: resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + string.prototype.trimstart@1.0.8: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} @@ -9989,8 +11199,8 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + stringify-entities@4.0.3: + resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} stringify-object@3.3.0: resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} @@ -10063,8 +11273,8 @@ packages: style-to-object@0.4.4: resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} - style-to-object@1.0.8: - resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} + style-to-object@1.0.5: + resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} @@ -10085,14 +11295,18 @@ packages: peerDependencies: postcss: ^8.4.31 - stylis@4.3.4: - resolution: {integrity: sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==} + stylis@4.3.1: + resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -10108,8 +11322,8 @@ packages: svg-parser@2.0.4: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - svgo@3.3.2: - resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + svgo@3.2.0: + resolution: {integrity: sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -10164,8 +11378,13 @@ packages: uglify-js: optional: true - terser@5.35.0: - resolution: {integrity: sha512-TmYbQnzVfrx3RQsPoItoPplymixIAtp2R2xlpyVBYmFmvI34IzLhCLj8SimRb/kZXlq4t1gA+vbcTqLQ3+5Q5g==} + terser@5.29.2: + resolution: {integrity: sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==} + engines: {node: '>=10'} + hasBin: true + + terser@5.41.0: + resolution: {integrity: sha512-H406eLPXpZbAX14+B8psIuvIr8+3c+2hkuYzpMkoE0ij+NdsVATbA78vb8neA/eqrj7rywa2pIkdmWRsXW6wmw==} engines: {node: '>=10'} hasBin: true @@ -10190,12 +11409,6 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - thingies@1.21.0: - resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} - engines: {node: '>=10.18'} - peerDependencies: - tslib: ^2 - throttle-debounce@3.0.1: resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} engines: {node: '>=10'} @@ -10244,7 +11457,11 @@ packages: tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - to-regex-range@5.0.1: + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -10259,6 +11476,10 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} + tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + tough-cookie@5.1.2: resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} engines: {node: '>=16'} @@ -10266,16 +11487,14 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + tr46@5.1.1: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} - tree-dump@1.0.3: - resolution: {integrity: sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - treeverse@1.0.4: resolution: {integrity: sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==} @@ -10308,6 +11527,27 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-jest@29.1.2: + resolution: {integrity: sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==} + engines: {node: ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + ts-jest@29.3.4: resolution: {integrity: sha512-Iqbrm8IXOmV+ggWHOTEbjwyCf2xZlUMv5npExksXohL+tk8va4Fjhb+X2+Rt9NBmgO7bJ8WpnMLOwih/DnMlFA==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} @@ -10359,9 +11599,16 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsx@3.12.7: + resolution: {integrity: sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==} + hasBin: true + tuf-js@1.1.7: resolution: {integrity: sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -10418,18 +11665,34 @@ packages: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.1: resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.2: resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + typed-array-length@1.0.6: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} @@ -10441,11 +11704,15 @@ packages: unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} unicode-emoji-modifier-base@1.0.0: @@ -10456,8 +11723,8 @@ packages: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} - unicode-match-property-value-ecmascript@2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} unicode-property-aliases-ecmascript@2.1.0: @@ -10514,6 +11781,9 @@ packages: unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} @@ -10526,6 +11796,10 @@ packages: universal-user-agent@6.0.1: resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -10534,13 +11808,19 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unrs-resolver@1.7.2: - resolution: {integrity: sha512-BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A==} + unrs-resolver@1.7.11: + resolution: {integrity: sha512-OhuAzBImFPjKNgZ2JwHMfGFUA6NSbRegd1+BPjC1Y0E6X9Y/vJ4zKeGmIMqmlYboj6cMNEwKI+xQisrg4J0HaQ==} untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} + update-browserslist-db@1.0.13: + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true @@ -10567,6 +11847,9 @@ packages: file-loader: optional: true + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -10592,8 +11875,8 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} engines: {node: '>=10.12.0'} validate-npm-package-license@3.0.4: @@ -10606,12 +11889,8 @@ packages: resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - validate-npm-package-name@5.0.1: - resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - validate-npm-package-name@6.0.0: - resolution: {integrity: sha512-d7KLgL1LD3U3fgnvWEY1cQXoO/q6EQ1BSz48Sa149V/5zVTAbgmZIpyI8TRi6U9/JNyeYLlTKsEMPtLC27RFUg==} + validate-npm-package-name@6.0.1: + resolution: {integrity: sha512-OaI//3H0J7ZkR1OqlhGA8cA+Cbk/2xFOQpJOt5+s27/ta9eZwpeervh4Mxh4w0im/kdgktowaqVNR7QOrUd7Yg==} engines: {node: ^18.17.0 || >=20.5.0} value-equal@1.0.1: @@ -10621,14 +11900,14 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vfile-location@5.0.3: - resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + vfile-location@5.0.2: + resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} vinyl-file@3.0.0: resolution: {integrity: sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg==} @@ -10641,6 +11920,10 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -10651,8 +11934,8 @@ packages: walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} engines: {node: '>=10.13.0'} wbuf@1.7.3: @@ -10775,10 +12058,18 @@ packages: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} + whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + whatwg-url@14.2.0: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} @@ -10789,22 +12080,34 @@ packages: which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - which-builtin-type@1.1.4: - resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} engines: {node: '>= 0.4'} which-collection@1.0.2: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} - which-pm@2.2.0: - resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==} + which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} engines: {node: '>=8.15'} which-typed-array@1.1.15: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -10829,18 +12132,14 @@ packages: wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - winston-transport@4.8.0: - resolution: {integrity: sha512-qxSTKswC6llEMZKgCQdaWgDuMJQnhuvF5f2Nk3SNXc4byfQ+voo2mX1Px9dkNOuR8p0KAjfPG29PuYUSIb+vSA==} + winston-transport@4.9.0: + resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} engines: {node: '>= 12.0.0'} winston@3.14.1: resolution: {integrity: sha512-CJi4Il/msz8HkdDfXOMu+r5Au/oyEjFiOZzbX2d23hRLY0narGjqfE5lFlrT5hfYJhPtM8b85/GNFsxIML/RVA==} engines: {node: '>= 12.0.0'} - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - workerpool@6.5.1: resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} @@ -10878,8 +12177,8 @@ packages: resolution: {integrity: sha512-FdNA4RyH1L43TlvGG8qOMIfcEczwA5ij+zLXUy3Z83CjxhLvcV7/Q/8pk22wnCgYw7PJhtK+7lhO+qqyT4NdvQ==} engines: {node: '>=16.14'} - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10890,8 +12189,8 @@ packages: utf-8-validate: optional: true - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10922,6 +12221,10 @@ packages: resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} hasBin: true + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} @@ -10943,6 +12246,10 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} + yaml@2.2.1: + resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} + engines: {node: '>= 14'} + yaml@2.6.0: resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} engines: {node: '>= 14'} @@ -10982,8 +12289,8 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} zod@3.25.50: @@ -10994,79 +12301,74 @@ packages: snapshots: - '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.24.0)(search-insights@2.17.2)': + '@aashutoshrathi/word-wrap@1.2.6': {} + + '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.27.0)(search-insights@2.13.0)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.24.0)(search-insights@2.17.2) - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.24.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.27.0)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.27.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.24.0)(search-insights@2.17.2)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.27.0)(search-insights@2.13.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.24.0) - search-insights: 2.17.2 + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.27.0) + search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.24.0)': + '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.27.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.24.0) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.27.0) '@algolia/client-search': 5.25.0 - algoliasearch: 5.24.0 + algoliasearch: 5.27.0 - '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.24.0)': + '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.27.0)': dependencies: '@algolia/client-search': 5.25.0 - algoliasearch: 5.24.0 + algoliasearch: 5.27.0 - '@algolia/client-abtesting@5.24.0': + '@algolia/client-abtesting@5.27.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 - '@algolia/client-analytics@5.24.0': + '@algolia/client-analytics@5.27.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 - - '@algolia/client-common@5.24.0': {} + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 '@algolia/client-common@5.25.0': {} - '@algolia/client-insights@5.24.0': - dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common@5.27.0': {} - '@algolia/client-personalization@5.24.0': + '@algolia/client-insights@5.27.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 - '@algolia/client-query-suggestions@5.24.0': + '@algolia/client-personalization@5.27.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 - '@algolia/client-search@5.24.0': + '@algolia/client-query-suggestions@5.27.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 '@algolia/client-search@5.25.0': dependencies: @@ -11075,53 +12377,60 @@ snapshots: '@algolia/requester-fetch': 5.25.0 '@algolia/requester-node-http': 5.25.0 - '@algolia/events@4.0.1': {} - - '@algolia/ingestion@1.24.0': + '@algolia/client-search@5.27.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 - '@algolia/monitoring@1.24.0': + '@algolia/events@4.0.1': {} + + '@algolia/ingestion@1.27.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 - '@algolia/recommend@5.24.0': + '@algolia/monitoring@1.27.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 - '@algolia/requester-browser-xhr@5.24.0': + '@algolia/recommend@5.27.0': dependencies: - '@algolia/client-common': 5.24.0 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 '@algolia/requester-browser-xhr@5.25.0': dependencies: '@algolia/client-common': 5.25.0 - '@algolia/requester-fetch@5.24.0': + '@algolia/requester-browser-xhr@5.27.0': dependencies: - '@algolia/client-common': 5.24.0 + '@algolia/client-common': 5.27.0 '@algolia/requester-fetch@5.25.0': dependencies: '@algolia/client-common': 5.25.0 - '@algolia/requester-node-http@5.24.0': + '@algolia/requester-fetch@5.27.0': dependencies: - '@algolia/client-common': 5.24.0 + '@algolia/client-common': 5.27.0 '@algolia/requester-node-http@5.25.0': dependencies: '@algolia/client-common': 5.25.0 + '@algolia/requester-node-http@5.27.0': + dependencies: + '@algolia/client-common': 5.27.0 + '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.3.0': @@ -11131,815 +12440,1603 @@ snapshots: '@asamuzakjp/css-color@3.2.0': dependencies: - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 + '@babel/code-frame@7.24.2': + dependencies: + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 + '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.27.1': {} + '@babel/compat-data@7.24.1': {} + + '@babel/compat-data@7.27.5': {} + + '@babel/core@7.24.3': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.1 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helpers': 7.24.1 + '@babel/parser': 7.24.1 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/core@7.27.1': + '@babel/core@7.27.4': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 - '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) - '@babel/helpers': 7.27.1 - '@babel/parser': 7.27.1 - '@babel/template': 7.27.1 - '@babel/traverse': 7.27.1 - '@babel/types': 7.27.1 + '@babel/generator': 7.27.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) + '@babel/helpers': 7.27.6 + '@babel/parser': 7.27.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 convert-source-map: 2.0.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.27.1': + '@babel/generator@7.24.1': dependencies: - '@babel/parser': 7.27.1 - '@babel/types': 7.27.1 + '@babel/types': 7.24.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 + jsesc: 2.5.2 - '@babel/helper-annotate-as-pure@7.27.1': + '@babel/generator@7.27.5': dependencies: - '@babel/types': 7.27.1 + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + + '@babel/helper-annotate-as-pure@7.22.5': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.27.6 - '@babel/helper-compilation-targets@7.27.1': + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': dependencies: - '@babel/compat-data': 7.27.1 + '@babel/types': 7.24.0 + + '@babel/helper-compilation-targets@7.23.6': + dependencies: + '@babel/compat-data': 7.24.1 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.27.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.24.5 + browserslist: 4.25.0 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.1)': + '@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.27.1 + '@babel/traverse': 7.27.4 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.1)': + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + + '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 regexpu-core: 6.2.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.1)': + '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.27.1 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: - supports-color + '@babel/helper-environment-visitor@7.22.20': {} + + '@babel/helper-function-name@7.23.0': + dependencies: + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + + '@babel/helper-hoist-variables@7.22.5': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-member-expression-to-functions@7.23.0': + dependencies: + '@babel/types': 7.24.0 + '@babel/helper-member-expression-to-functions@7.27.1': dependencies: - '@babel/traverse': 7.27.1 - '@babel/types': 7.27.1 + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.24.3': + dependencies: + '@babel/types': 7.24.0 + '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.27.1 - '@babel/types': 7.27.1 + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': + '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + + '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.1 + '@babel/traverse': 7.27.4 transitivePeerDependencies: - supports-color + '@babel/helper-optimise-call-expression@7.22.5': + dependencies: + '@babel/types': 7.24.0 + '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.27.1 + '@babel/types': 7.27.6 + + '@babel/helper-plugin-utils@7.24.0': {} '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.27.1)': + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-wrap-function': 7.27.1 - '@babel/traverse': 7.27.1 + '@babel/traverse': 7.27.4 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.1)': + '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + + '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.27.1 + '@babel/traverse': 7.27.4 transitivePeerDependencies: - supports-color + '@babel/helper-simple-access@7.22.5': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + dependencies: + '@babel/types': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.27.1 - '@babel/types': 7.27.1 + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 transitivePeerDependencies: - supports-color + '@babel/helper-split-export-declaration@7.22.6': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-string-parser@7.24.1': {} + '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-validator-identifier@7.22.20': {} + '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-option@7.23.5': {} + '@babel/helper-validator-option@7.27.1': {} + '@babel/helper-wrap-function@7.22.20': + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + '@babel/helper-wrap-function@7.27.1': dependencies: - '@babel/template': 7.27.1 - '@babel/traverse': 7.27.1 - '@babel/types': 7.27.1 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.24.1': + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 transitivePeerDependencies: - supports-color - '@babel/helpers@7.27.1': + '@babel/helpers@7.27.6': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.6 + + '@babel/highlight@7.24.2': + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + + '@babel/parser@7.24.1': dependencies: - '@babel/template': 7.27.1 - '@babel/types': 7.27.1 + '@babel/types': 7.24.0 - '@babel/parser@7.27.1': + '@babel/parser@7.27.5': dependencies: - '@babel/types': 7.27.1 + '@babel/types': 7.27.6 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.1 + '@babel/traverse': 7.27.4 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.3) + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.1 + '@babel/traverse': 7.27.4 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.1)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.1)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.24.0 + optional: true + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.24.0 + optional: true + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.24.0 + optional: true + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.1)': + '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.1)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.24.0 + optional: true + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.24.0 + optional: true + + '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.24.0 + optional: true + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.24.0 + optional: true + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.24.0 + optional: true + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.24.0 + optional: true + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.24.0 + optional: true + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.24.0 + optional: true + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.24.0 + optional: true + + '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) + + '@babel/plugin-transform-async-generator-functions@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.4) + '@babel/traverse': 7.27.4 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.3) + + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.4) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-block-scoping@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-block-scoping@7.27.5(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.3) + + '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + + '@babel/plugin-transform-classes@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) + '@babel/traverse': 7.27.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/template': 7.24.0 + + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.27.2 + + '@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-destructuring@7.27.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.27.1)': + '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.27.1)': + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.1)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.1)': + '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.1)': + '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.1)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.1)': + '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.1)': + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.1)': + '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.1)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.4 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.27.1)': + '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.1)': + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.1)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) - '@babel/plugin-transform-async-generator-functions@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1) - '@babel/traverse': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1) - transitivePeerDependencies: - - supports-color + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-block-scoping@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.27.4 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-simple-access': 7.22.5 - '@babel/plugin-transform-classes@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) - '@babel/traverse': 7.27.1 - globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-identifier': 7.22.20 - '@babel/plugin-transform-destructuring@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.4 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-object-rest-spread@7.27.3(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4) + '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.1 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-parameters@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-object-rest-spread@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.3) - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-react-constant-elements@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-react-constant-elements@7.25.7(@babel/core@7.27.1)': + '@babel/plugin-transform-react-display-name@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-display-name@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.24.3 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.3) - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.27.4 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) + '@babel/types': 7.24.0 + + '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) - '@babel/types': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) + '@babel/types': 7.27.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regenerator@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regenerator@7.27.5(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-runtime@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-runtime@7.27.4(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.27.1) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.1) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.27.1) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.27.4) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.4) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.27.4) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.3) + + '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/preset-env@7.27.1(@babel/core@7.27.1)': + '@babel/preset-env@7.24.3(@babel/core@7.24.3)': + dependencies: + '@babel/compat-data': 7.24.1 + '@babel/core': 7.24.3 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.3) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.3) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-class-static-block': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.3) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.3) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.3) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.3) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.3) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.3) + core-js-compat: 3.36.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-env@7.27.2(@babel/core@7.27.4)': dependencies: - '@babel/compat-data': 7.27.1 - '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/compat-data': 7.27.5 + '@babel/core': 7.27.4 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.1) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.27.1) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-async-generator-functions': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-block-scoping': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-destructuring': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-object-rest-spread': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-regenerator': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.27.1) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.27.1) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.27.1) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.1) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.27.1) + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.4) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.27.4) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-async-generator-functions': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-block-scoping': 7.27.5(@babel/core@7.27.4) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-object-rest-spread': 7.27.3(@babel/core@7.27.4) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-regenerator': 7.27.5(@babel/core@7.27.4) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.27.4) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.27.4) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.27.4) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.4) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.27.4) core-js-compat: 3.42.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.27.1)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.27.1 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/types': 7.24.0 esutils: 2.0.3 - '@babel/preset-react@7.27.1(@babel/core@7.27.1)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/types': 7.24.0 + esutils: 2.0.3 + + '@babel/preset-react@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.3) + '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.3) + + '@babel/preset-react@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-react-display-name': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-react-display-name': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.27.1(@babel/core@7.27.1)': + '@babel/preset-typescript@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.3) + + '@babel/preset-typescript@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - '@babel/runtime-corejs3@7.27.1': + '@babel/regjsgen@0.8.0': {} + + '@babel/runtime-corejs3@7.27.6': dependencies: - core-js-pure: 3.38.1 + core-js-pure: 3.36.1 - '@babel/runtime@7.27.1': {} + '@babel/runtime@7.24.1': + dependencies: + regenerator-runtime: 0.14.1 '@babel/runtime@7.27.6': {} - '@babel/template@7.27.1': + '@babel/template@7.24.0': + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 + + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.27.1 - '@babel/types': 7.27.1 + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 + + '@babel/traverse@7.24.1': + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.1 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color - '@babel/traverse@7.27.1': + '@babel/traverse@7.27.4': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.1 - '@babel/parser': 7.27.1 - '@babel/template': 7.27.1 - '@babel/types': 7.27.1 - debug: 4.4.1(supports-color@8.1.1) + '@babel/generator': 7.27.5 + '@babel/parser': 7.27.5 + '@babel/template': 7.27.2 + '@babel/types': 7.27.6 + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.27.1': + '@babel/types@7.24.0': + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + '@babel/types@7.27.6': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -11955,35 +14052,35 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@csstools/cascade-layer-name-parser@2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/cascade-layer-name-parser@2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 '@csstools/color-helpers@5.0.2': {} - '@csstools/css-calc@2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-color-parser@3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-color-parser@3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/color-helpers': 5.0.2 - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-tokenizer@3.0.3': {} + '@csstools/css-tokenizer@3.0.4': {} - '@csstools/media-query-list-parser@4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 '@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.4)': dependencies: @@ -11991,37 +14088,46 @@ snapshots: postcss: 8.5.4 postcss-selector-parser: 7.1.0 - '@csstools/postcss-color-function@4.0.9(postcss@8.5.4)': + '@csstools/postcss-color-function@4.0.10(postcss@8.5.4)': + dependencies: + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.4) + '@csstools/utilities': 2.0.0(postcss@8.5.4) + postcss: 8.5.4 + + '@csstools/postcss-color-mix-function@3.0.10(postcss@8.5.4)': dependencies: - '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.4) '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 - '@csstools/postcss-color-mix-function@3.0.9(postcss@8.5.4)': + '@csstools/postcss-color-mix-variadic-function-arguments@1.0.0(postcss@8.5.4)': dependencies: - '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.4) '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 - '@csstools/postcss-content-alt-text@2.0.5(postcss@8.5.4)': + '@csstools/postcss-content-alt-text@2.0.6(postcss@8.5.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.4) '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 - '@csstools/postcss-exponential-functions@2.0.8(postcss@8.5.4)': + '@csstools/postcss-exponential-functions@2.0.9(postcss@8.5.4)': dependencies: - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.4 '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.4)': @@ -12030,34 +14136,34 @@ snapshots: postcss: 8.5.4 postcss-value-parser: 4.2.0 - '@csstools/postcss-gamut-mapping@2.0.9(postcss@8.5.4)': + '@csstools/postcss-gamut-mapping@2.0.10(postcss@8.5.4)': dependencies: - '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.4 - '@csstools/postcss-gradients-interpolation-method@5.0.9(postcss@8.5.4)': + '@csstools/postcss-gradients-interpolation-method@5.0.10(postcss@8.5.4)': dependencies: - '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.4) '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 - '@csstools/postcss-hwb-function@4.0.9(postcss@8.5.4)': + '@csstools/postcss-hwb-function@4.0.10(postcss@8.5.4)': dependencies: - '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.4) '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 - '@csstools/postcss-ic-unit@4.0.1(postcss@8.5.4)': + '@csstools/postcss-ic-unit@4.0.2(postcss@8.5.4)': dependencies: - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.4) + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.4) '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 postcss-value-parser: 4.2.0 @@ -12072,11 +14178,11 @@ snapshots: postcss: 8.5.4 postcss-selector-parser: 7.1.0 - '@csstools/postcss-light-dark-function@2.0.8(postcss@8.5.4)': + '@csstools/postcss-light-dark-function@2.0.9(postcss@8.5.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.4) '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 @@ -12097,25 +14203,25 @@ snapshots: postcss: 8.5.4 postcss-value-parser: 4.2.0 - '@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.5.4)': + '@csstools/postcss-logical-viewport-units@3.0.4(postcss@8.5.4)': dependencies: - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-tokenizer': 3.0.4 '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 - '@csstools/postcss-media-minmax@2.0.8(postcss@8.5.4)': + '@csstools/postcss-media-minmax@2.0.9(postcss@8.5.4)': dependencies: - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) postcss: 8.5.4 - '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.5.4)': + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5(postcss@8.5.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) postcss: 8.5.4 '@csstools/postcss-nested-calc@4.0.0(postcss@8.5.4)': @@ -12129,33 +14235,33 @@ snapshots: postcss: 8.5.4 postcss-value-parser: 4.2.0 - '@csstools/postcss-oklab-function@4.0.9(postcss@8.5.4)': + '@csstools/postcss-oklab-function@4.0.10(postcss@8.5.4)': dependencies: - '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.4) '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 - '@csstools/postcss-progressive-custom-properties@4.0.1(postcss@8.5.4)': + '@csstools/postcss-progressive-custom-properties@4.1.0(postcss@8.5.4)': dependencies: postcss: 8.5.4 postcss-value-parser: 4.2.0 - '@csstools/postcss-random-function@2.0.0(postcss@8.5.4)': + '@csstools/postcss-random-function@2.0.1(postcss@8.5.4)': dependencies: - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.4 - '@csstools/postcss-relative-color-syntax@3.0.9(postcss@8.5.4)': + '@csstools/postcss-relative-color-syntax@3.0.10(postcss@8.5.4)': dependencies: - '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.4) '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 @@ -12164,18 +14270,18 @@ snapshots: postcss: 8.5.4 postcss-selector-parser: 7.1.0 - '@csstools/postcss-sign-functions@1.1.3(postcss@8.5.4)': + '@csstools/postcss-sign-functions@1.1.4(postcss@8.5.4)': dependencies: - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.4 - '@csstools/postcss-stepped-value-functions@4.0.8(postcss@8.5.4)': + '@csstools/postcss-stepped-value-functions@4.0.9(postcss@8.5.4)': dependencies: - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.4 '@csstools/postcss-text-decoration-shorthand@4.0.2(postcss@8.5.4)': @@ -12184,18 +14290,18 @@ snapshots: postcss: 8.5.4 postcss-value-parser: 4.2.0 - '@csstools/postcss-trigonometric-functions@4.0.8(postcss@8.5.4)': + '@csstools/postcss-trigonometric-functions@4.0.9(postcss@8.5.4)': dependencies: - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.4 '@csstools/postcss-unset-value@4.0.0(postcss@8.5.4)': dependencies: postcss: 8.5.4 - '@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.1.0)': + '@csstools/selector-resolve-nested@3.1.0(postcss-selector-parser@7.1.0)': dependencies: postcss-selector-parser: 7.1.0 @@ -12219,37 +14325,37 @@ snapshots: '@docsearch/css@3.9.0': {} - '@docsearch/react@3.9.0(@algolia/client-search@5.25.0)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.2)': + '@docsearch/react@3.9.0(@algolia/client-search@5.25.0)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.13.0)': dependencies: - '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.24.0)(search-insights@2.17.2) - '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.24.0) + '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.27.0)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.27.0) '@docsearch/css': 3.9.0 - algoliasearch: 5.24.0 + algoliasearch: 5.27.0 optionalDependencies: '@types/react': 19.1.6 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - search-insights: 2.17.2 + search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' '@docusaurus/babel@3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/core': 7.27.1 - '@babel/generator': 7.27.1 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.1) - '@babel/plugin-transform-runtime': 7.27.1(@babel/core@7.27.1) - '@babel/preset-env': 7.27.1(@babel/core@7.27.1) - '@babel/preset-react': 7.27.1(@babel/core@7.27.1) - '@babel/preset-typescript': 7.27.1(@babel/core@7.27.1) - '@babel/runtime': 7.27.1 - '@babel/runtime-corejs3': 7.27.1 - '@babel/traverse': 7.27.1 + '@babel/core': 7.27.4 + '@babel/generator': 7.27.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-transform-runtime': 7.27.4(@babel/core@7.27.4) + '@babel/preset-env': 7.27.2(@babel/core@7.27.4) + '@babel/preset-react': 7.27.1(@babel/core@7.27.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4) + '@babel/runtime': 7.27.6 + '@babel/runtime-corejs3': 7.27.6 + '@babel/traverse': 7.27.4 '@docusaurus/logger': 3.8.0 '@docusaurus/utils': 3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) babel-plugin-dynamic-import-node: 2.3.3 fs-extra: 11.3.0 - tslib: 2.8.1 + tslib: 2.6.2 transitivePeerDependencies: - '@swc/core' - esbuild @@ -12261,27 +14367,27 @@ snapshots: '@docusaurus/bundler@3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@docusaurus/babel': 3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/cssnano-preset': 3.8.0 '@docusaurus/logger': 3.8.0 '@docusaurus/types': 3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils': 3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - babel-loader: 9.2.1(@babel/core@7.27.1)(webpack@5.99.9(esbuild@0.25.5)) + babel-loader: 9.2.1(@babel/core@7.27.4)(webpack@5.99.9(esbuild@0.25.5)) clean-css: 5.3.3 copy-webpack-plugin: 11.0.0(webpack@5.99.9(esbuild@0.25.5)) - css-loader: 6.11.0(webpack@5.99.9(esbuild@0.25.5)) + css-loader: 6.10.0(webpack@5.99.9(esbuild@0.25.5)) css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(esbuild@0.25.5)(webpack@5.99.9(esbuild@0.25.5)) cssnano: 6.1.2(postcss@8.5.4) file-loader: 6.2.0(webpack@5.99.9(esbuild@0.25.5)) html-minifier-terser: 7.2.0 - mini-css-extract-plugin: 2.9.1(webpack@5.99.9(esbuild@0.25.5)) + mini-css-extract-plugin: 2.9.2(webpack@5.99.9(esbuild@0.25.5)) null-loader: 4.0.1(webpack@5.99.9(esbuild@0.25.5)) postcss: 8.5.4 postcss-loader: 7.3.4(postcss@8.5.4)(typescript@5.8.3)(webpack@5.99.9(esbuild@0.25.5)) - postcss-preset-env: 10.1.6(postcss@8.5.4) + postcss-preset-env: 10.2.1(postcss@8.5.4) terser-webpack-plugin: 5.3.14(esbuild@0.25.5)(webpack@5.99.9(esbuild@0.25.5)) - tslib: 2.8.1 + tslib: 2.6.2 url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9(esbuild@0.25.5)))(webpack@5.99.9(esbuild@0.25.5)) webpack: 5.99.9(esbuild@0.25.5) webpackbar: 6.0.1(webpack@5.99.9(esbuild@0.25.5)) @@ -12313,11 +14419,11 @@ snapshots: boxen: 6.2.1 chalk: 4.1.2 chokidar: 3.6.0 - cli-table3: 0.6.5 + cli-table3: 0.6.4 combine-promises: 1.2.0 commander: 5.1.0 - core-js: 3.38.1 - detect-port: 1.6.1 + core-js: 3.36.1 + detect-port: 1.5.1 escape-html: 1.0.3 eta: 2.2.0 eval: 0.1.8 @@ -12341,7 +14447,7 @@ snapshots: semver: 7.7.2 serve-handler: 6.1.6 tinypool: 1.1.0 - tslib: 2.8.1 + tslib: 2.6.2 update-notifier: 6.0.2 webpack: 5.99.9(esbuild@0.25.5) webpack-bundle-analyzer: 4.10.2 @@ -12369,12 +14475,12 @@ snapshots: cssnano-preset-advanced: 6.1.2(postcss@8.5.4) postcss: 8.5.4 postcss-sort-media-queries: 5.2.0(postcss@8.5.4) - tslib: 2.8.1 + tslib: 2.6.2 '@docusaurus/logger@3.8.0': dependencies: chalk: 4.1.2 - tslib: 2.8.1 + tslib: 2.6.2 '@docusaurus/mdx-loader@3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: @@ -12384,7 +14490,7 @@ snapshots: '@mdx-js/mdx': 3.0.1 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 - estree-util-value-to-estree: 3.1.2 + estree-util-value-to-estree: 3.0.1 file-loader: 6.2.0(webpack@5.99.9(esbuild@0.25.5)) fs-extra: 11.3.0 image-size: 2.0.2 @@ -12398,11 +14504,11 @@ snapshots: remark-frontmatter: 5.0.0 remark-gfm: 4.0.0 stringify-object: 3.3.0 - tslib: 2.8.1 + tslib: 2.6.2 unified: 11.0.5 unist-util-visit: 5.0.0 url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9(esbuild@0.25.5)))(webpack@5.99.9(esbuild@0.25.5)) - vfile: 6.0.3 + vfile: 6.0.1 webpack: 5.99.9(esbuild@0.25.5) transitivePeerDependencies: - '@swc/core' @@ -12448,7 +14554,7 @@ snapshots: react-dom: 19.1.0(react@19.1.0) schema-dts: 1.1.5 srcset: 4.0.0 - tslib: 2.8.1 + tslib: 2.6.2 unist-util-visit: 5.0.0 utility-types: 3.11.0 webpack: 5.99.9(esbuild@0.25.5) @@ -12489,7 +14595,7 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) schema-dts: 1.1.5 - tslib: 2.8.1 + tslib: 2.6.2 utility-types: 3.11.0 webpack: 5.99.9(esbuild@0.25.5) transitivePeerDependencies: @@ -12520,7 +14626,7 @@ snapshots: fs-extra: 11.3.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - tslib: 2.8.1 + tslib: 2.6.2 webpack: 5.99.9(esbuild@0.25.5) transitivePeerDependencies: - '@docusaurus/faster' @@ -12545,7 +14651,7 @@ snapshots: '@docusaurus/core': 3.8.0(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@docusaurus/types': 3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils-validation': 3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - tslib: 2.8.1 + tslib: 2.6.2 transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -12575,7 +14681,7 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) react-json-view-lite: 2.4.1(react@19.1.0) - tslib: 2.8.1 + tslib: 2.6.2 transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -12601,7 +14707,7 @@ snapshots: '@docusaurus/utils-validation': 3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - tslib: 2.8.1 + tslib: 2.6.2 transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -12628,7 +14734,7 @@ snapshots: '@types/gtag.js': 0.0.12 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - tslib: 2.8.1 + tslib: 2.6.2 transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -12654,7 +14760,7 @@ snapshots: '@docusaurus/utils-validation': 3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - tslib: 2.8.1 + tslib: 2.6.2 transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -12684,8 +14790,8 @@ snapshots: fs-extra: 11.3.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - sitemap: 7.1.2 - tslib: 2.8.1 + sitemap: 7.1.1 + tslib: 2.6.2 transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -12714,7 +14820,7 @@ snapshots: '@svgr/webpack': 8.1.0(typescript@5.8.3) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - tslib: 2.8.1 + tslib: 2.6.2 webpack: 5.99.9(esbuild@0.25.5) transitivePeerDependencies: - '@docusaurus/faster' @@ -12734,7 +14840,7 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/preset-classic@3.8.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.2)(typescript@5.8.3)': + '@docusaurus/preset-classic@3.8.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.13.0)(typescript@5.8.3)': dependencies: '@docusaurus/core': 3.8.0(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@docusaurus/plugin-content-blog': 3.8.0(@docusaurus/plugin-content-docs@3.8.0(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) @@ -12749,7 +14855,7 @@ snapshots: '@docusaurus/plugin-svgr': 3.8.0(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@docusaurus/theme-classic': 3.8.0(@types/react@19.1.6)(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@docusaurus/theme-common': 3.8.0(@docusaurus/plugin-content-docs@3.8.0(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@docusaurus/theme-search-algolia': 3.8.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.2)(typescript@5.8.3) + '@docusaurus/theme-search-algolia': 3.8.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.13.0)(typescript@5.8.3) '@docusaurus/types': 3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -12806,8 +14912,8 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) react-router-dom: 5.3.4(react@19.1.0) - rtlcss: 4.3.0 - tslib: 2.8.1 + rtlcss: 4.1.1 + tslib: 2.6.2 utility-types: 3.11.0 transitivePeerDependencies: - '@docusaurus/faster' @@ -12842,7 +14948,7 @@ snapshots: prism-react-renderer: 2.4.1(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - tslib: 2.8.1 + tslib: 2.6.2 utility-types: 3.11.0 transitivePeerDependencies: - '@swc/core' @@ -12851,9 +14957,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-search-algolia@3.8.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.2)(typescript@5.8.3)': + '@docusaurus/theme-search-algolia@3.8.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.13.0)(typescript@5.8.3)': dependencies: - '@docsearch/react': 3.9.0(@algolia/client-search@5.25.0)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.2) + '@docsearch/react': 3.9.0(@algolia/client-search@5.25.0)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.13.0) '@docusaurus/core': 3.8.0(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@docusaurus/logger': 3.8.0 '@docusaurus/plugin-content-docs': 3.8.0(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0))(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) @@ -12861,15 +14967,15 @@ snapshots: '@docusaurus/theme-translations': 3.8.0 '@docusaurus/utils': 3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils-validation': 3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - algoliasearch: 5.24.0 - algoliasearch-helper: 3.25.0(algoliasearch@5.24.0) + algoliasearch: 5.27.0 + algoliasearch-helper: 3.25.0(algoliasearch@5.27.0) clsx: 2.1.1 eta: 2.2.0 fs-extra: 11.3.0 lodash: 4.17.21 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - tslib: 2.8.1 + tslib: 2.6.2 utility-types: 3.11.0 transitivePeerDependencies: - '@algolia/client-search' @@ -12895,7 +15001,7 @@ snapshots: '@docusaurus/theme-translations@3.8.0': dependencies: fs-extra: 11.3.0 - tslib: 2.8.1 + tslib: 2.6.2 '@docusaurus/types@3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: @@ -12920,7 +15026,7 @@ snapshots: '@docusaurus/utils-common@3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@docusaurus/types': 3.8.0(esbuild@0.25.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - tslib: 2.8.1 + tslib: 2.6.2 transitivePeerDependencies: - '@swc/core' - esbuild @@ -12939,7 +15045,7 @@ snapshots: joi: 17.13.3 js-yaml: 4.1.0 lodash: 4.17.21 - tslib: 2.8.1 + tslib: 2.6.2 transitivePeerDependencies: - '@swc/core' - esbuild @@ -12961,14 +15067,14 @@ snapshots: github-slugger: 1.5.0 globby: 11.1.0 gray-matter: 4.0.3 - jiti: 1.21.6 + jiti: 1.21.0 js-yaml: 4.1.0 lodash: 4.17.21 - micromatch: 4.0.8 + micromatch: 4.0.5 p-queue: 6.6.2 prompts: 2.4.2 resolve-pathname: 3.0.0 - tslib: 2.8.1 + tslib: 2.6.2 url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9(esbuild@0.25.5)))(webpack@5.99.9(esbuild@0.25.5)) utility-types: 3.11.0 webpack: 5.99.9(esbuild@0.25.5) @@ -12992,91 +15098,172 @@ snapshots: '@emnapi/core@1.4.3': dependencies: '@emnapi/wasi-threads': 1.0.2 - tslib: 2.8.1 + tslib: 2.6.2 optional: true '@emnapi/runtime@1.4.3': dependencies: - tslib: 2.8.1 + tslib: 2.6.2 optional: true '@emnapi/wasi-threads@1.0.2': dependencies: - tslib: 2.8.1 + tslib: 2.6.2 optional: true + '@esbuild-kit/cjs-loader@2.4.4': + dependencies: + '@esbuild-kit/core-utils': 3.3.2 + get-tsconfig: 4.7.3 + + '@esbuild-kit/core-utils@3.3.2': + dependencies: + esbuild: 0.18.20 + source-map-support: 0.5.21 + + '@esbuild-kit/esm-loader@2.6.5': + dependencies: + '@esbuild-kit/core-utils': 3.3.2 + get-tsconfig: 4.7.3 + '@esbuild/aix-ppc64@0.25.5': optional: true + '@esbuild/android-arm64@0.18.20': + optional: true + '@esbuild/android-arm64@0.25.5': optional: true + '@esbuild/android-arm@0.18.20': + optional: true + '@esbuild/android-arm@0.25.5': optional: true + '@esbuild/android-x64@0.18.20': + optional: true + '@esbuild/android-x64@0.25.5': optional: true + '@esbuild/darwin-arm64@0.18.20': + optional: true + '@esbuild/darwin-arm64@0.25.5': optional: true + '@esbuild/darwin-x64@0.18.20': + optional: true + '@esbuild/darwin-x64@0.25.5': optional: true + '@esbuild/freebsd-arm64@0.18.20': + optional: true + '@esbuild/freebsd-arm64@0.25.5': optional: true + '@esbuild/freebsd-x64@0.18.20': + optional: true + '@esbuild/freebsd-x64@0.25.5': optional: true + '@esbuild/linux-arm64@0.18.20': + optional: true + '@esbuild/linux-arm64@0.25.5': optional: true + '@esbuild/linux-arm@0.18.20': + optional: true + '@esbuild/linux-arm@0.25.5': optional: true + '@esbuild/linux-ia32@0.18.20': + optional: true + '@esbuild/linux-ia32@0.25.5': optional: true + '@esbuild/linux-loong64@0.18.20': + optional: true + '@esbuild/linux-loong64@0.25.5': optional: true + '@esbuild/linux-mips64el@0.18.20': + optional: true + '@esbuild/linux-mips64el@0.25.5': optional: true + '@esbuild/linux-ppc64@0.18.20': + optional: true + '@esbuild/linux-ppc64@0.25.5': optional: true + '@esbuild/linux-riscv64@0.18.20': + optional: true + '@esbuild/linux-riscv64@0.25.5': optional: true + '@esbuild/linux-s390x@0.18.20': + optional: true + '@esbuild/linux-s390x@0.25.5': optional: true + '@esbuild/linux-x64@0.18.20': + optional: true + '@esbuild/linux-x64@0.25.5': optional: true '@esbuild/netbsd-arm64@0.25.5': optional: true + '@esbuild/netbsd-x64@0.18.20': + optional: true + '@esbuild/netbsd-x64@0.25.5': optional: true '@esbuild/openbsd-arm64@0.25.5': optional: true + '@esbuild/openbsd-x64@0.18.20': + optional: true + '@esbuild/openbsd-x64@0.25.5': optional: true + '@esbuild/sunos-x64@0.18.20': + optional: true + '@esbuild/sunos-x64@0.25.5': optional: true + '@esbuild/win32-arm64@0.18.20': + optional: true + '@esbuild/win32-arm64@0.25.5': optional: true + '@esbuild/win32-ia32@0.18.20': + optional: true + '@esbuild/win32-ia32@0.25.5': optional: true + '@esbuild/win32-x64@0.18.20': + optional: true + '@esbuild/win32-x64@0.25.5': optional: true @@ -13085,12 +15272,14 @@ snapshots: eslint: 9.28.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 + '@eslint-community/regexpp@4.10.0': {} + '@eslint-community/regexpp@4.12.1': {} '@eslint/config-array@0.20.0': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -13104,11 +15293,11 @@ snapshots: '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 espree: 10.3.0 globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 + ignore: 5.3.1 + import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 @@ -13304,7 +15493,7 @@ snapshots: jest-util: 29.7.0 jest-validate: 29.7.0 jest-watcher: 29.7.0 - micromatch: 4.0.8 + micromatch: 4.0.5 pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 @@ -13396,7 +15585,7 @@ snapshots: glob: 7.2.3 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 + istanbul-lib-instrument: 6.0.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.7 @@ -13406,7 +15595,7 @@ snapshots: slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 - v8-to-istanbul: 9.3.0 + v8-to-istanbul: 9.2.0 transitivePeerDependencies: - supports-color @@ -13440,7 +15629,7 @@ snapshots: '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 @@ -13451,7 +15640,7 @@ snapshots: jest-haste-map: 29.7.0 jest-regex-util: 29.6.3 jest-util: 29.7.0 - micromatch: 4.0.8 + micromatch: 4.0.5 pirates: 4.0.6 slash: 3.0.0 write-file-atomic: 4.0.2 @@ -13464,7 +15653,7 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 20.17.50 - '@types/yargs': 17.0.33 + '@types/yargs': 17.0.32 chalk: 4.1.2 '@jest/types@30.0.0-beta.3': @@ -13474,13 +15663,13 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 20.17.50 - '@types/yargs': 17.0.33 + '@types/yargs': 17.0.32 chalk: 4.1.2 '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.2': {} @@ -13492,35 +15681,21 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 - - '@jsonjoy.com/json-pack@1.2.0(tslib@2.8.1)': - dependencies: - '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) - '@jsonjoy.com/util': 1.6.0(tslib@2.8.1) - hyperdyperid: 1.2.0 - thingies: 1.21.0(tslib@2.8.1) - tslib: 2.8.1 - - '@jsonjoy.com/util@1.6.0(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 + '@jridgewell/sourcemap-codec': 1.4.15 - '@leichtgewicht/ip-codec@2.0.5': {} + '@leichtgewicht/ip-codec@2.0.4': {} '@mdx-js/loader@3.1.0(webpack@5.99.9(esbuild@0.25.5))': dependencies: @@ -13533,7 +15708,7 @@ snapshots: '@mdx-js/mdx@3.0.1': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.5 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 @@ -13544,18 +15719,18 @@ snapshots: estree-util-to-js: 2.0.0 estree-walker: 3.0.3 hast-util-to-estree: 3.1.0 - hast-util-to-jsx-runtime: 2.3.2 + hast-util-to-jsx-runtime: 2.3.0 markdown-extensions: 2.0.0 periscopic: 3.1.0 remark-mdx: 3.0.1 remark-parse: 11.0.0 - remark-rehype: 11.1.1 + remark-rehype: 11.1.0 source-map: 0.7.4 unified: 11.0.5 unist-util-position-from-estree: 2.0.0 unist-util-stringify-position: 4.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.3 + vfile: 6.0.1 transitivePeerDependencies: - supports-color @@ -13567,7 +15742,7 @@ snapshots: '@msgpack/msgpack@2.8.0': {} - '@napi-rs/wasm-runtime@0.2.10': + '@napi-rs/wasm-runtime@0.2.11': dependencies: '@emnapi/core': 1.4.3 '@emnapi/runtime': 1.4.3 @@ -13673,7 +15848,7 @@ snapshots: '@gar/promisify': 1.1.3 semver: 7.7.2 - '@npmcli/fs@3.1.1': + '@npmcli/fs@3.1.0': dependencies: semver: 7.7.2 @@ -13708,9 +15883,9 @@ snapshots: npm-bundled: 1.1.2 npm-normalize-package-bin: 1.0.1 - '@npmcli/installed-package-contents@2.1.0': + '@npmcli/installed-package-contents@2.0.2': dependencies: - npm-bundled: 3.0.1 + npm-bundled: 3.0.0 npm-normalize-package-bin: 3.0.1 '@npmcli/map-workspaces@2.0.4': @@ -13868,7 +16043,7 @@ snapshots: '@pnpm/catalogs.resolver@0.1.1': dependencies: '@pnpm/catalogs.protocol-parser': 0.1.0 - '@pnpm/error': 6.0.3 + '@pnpm/error': 6.0.2 '@pnpm/catalogs.types@0.1.0': {} @@ -13877,15 +16052,15 @@ snapshots: '@pnpm/types': 12.2.0 load-json-file: 6.2.0 - '@pnpm/cli-utils@4.0.9(@pnpm/logger@5.2.0)': + '@pnpm/cli-utils@4.0.9(@pnpm/logger@5.0.0)': dependencies: '@pnpm/cli-meta': 6.2.2 - '@pnpm/config': 21.8.6(@pnpm/logger@5.2.0) - '@pnpm/default-reporter': 14.0.6(@pnpm/logger@5.2.0) + '@pnpm/config': 21.8.6(@pnpm/logger@5.0.0) + '@pnpm/default-reporter': 14.0.6(@pnpm/logger@5.0.0) '@pnpm/error': 6.0.2 - '@pnpm/logger': 5.2.0 - '@pnpm/manifest-utils': 6.0.9(@pnpm/logger@5.2.0) - '@pnpm/package-is-installable': 9.0.12(@pnpm/logger@5.2.0) + '@pnpm/logger': 5.0.0 + '@pnpm/manifest-utils': 6.0.9(@pnpm/logger@5.0.0) + '@pnpm/package-is-installable': 9.0.12(@pnpm/logger@5.0.0) '@pnpm/read-project-manifest': 6.0.9 '@pnpm/types': 12.2.0 chalk: 4.1.2 @@ -13897,7 +16072,7 @@ snapshots: '@pnpm/config.nerf-dart@1.0.1': {} - '@pnpm/config@21.8.6(@pnpm/logger@5.2.0)': + '@pnpm/config@21.8.6(@pnpm/logger@5.0.0)': dependencies: '@pnpm/catalogs.config': 0.1.1 '@pnpm/catalogs.types': 0.1.0 @@ -13907,7 +16082,7 @@ snapshots: '@pnpm/git-utils': 2.0.0 '@pnpm/matcher': 6.0.0 '@pnpm/npm-conf': 2.3.1 - '@pnpm/pnpmfile': 6.0.13(@pnpm/logger@5.2.0) + '@pnpm/pnpmfile': 6.0.13(@pnpm/logger@5.0.0) '@pnpm/read-project-manifest': 6.0.9 '@pnpm/types': 12.2.0 '@pnpm/workspace.read-manifest': 2.2.1 @@ -13940,9 +16115,9 @@ snapshots: '@pnpm/logger': 1001.0.0 '@pnpm/types': 11.1.0 - '@pnpm/core-loggers@10.0.7(@pnpm/logger@5.2.0)': + '@pnpm/core-loggers@10.0.7(@pnpm/logger@5.0.0)': dependencies: - '@pnpm/logger': 5.2.0 + '@pnpm/logger': 5.0.0 '@pnpm/types': 12.2.0 '@pnpm/crypto.base32-hash@3.0.0': @@ -13964,18 +16139,18 @@ snapshots: '@pnpm/dedupe.types@2.0.0': {} - '@pnpm/default-reporter@14.0.6(@pnpm/logger@5.2.0)': + '@pnpm/default-reporter@14.0.6(@pnpm/logger@5.0.0)': dependencies: '@pnpm/cli-meta': 6.2.2 - '@pnpm/config': 21.8.6(@pnpm/logger@5.2.0) - '@pnpm/core-loggers': 10.0.7(@pnpm/logger@5.2.0) + '@pnpm/config': 21.8.6(@pnpm/logger@5.0.0) + '@pnpm/core-loggers': 10.0.7(@pnpm/logger@5.0.0) '@pnpm/dedupe.issues-renderer': 2.0.0 '@pnpm/dedupe.types': 2.0.0 '@pnpm/error': 6.0.2 - '@pnpm/logger': 5.2.0 + '@pnpm/logger': 5.0.0 '@pnpm/render-peer-issues': 5.0.10 '@pnpm/types': 12.2.0 - ansi-diff: 1.2.0 + ansi-diff: 1.1.1 boxen: 5.1.2 chalk: 4.1.2 cli-truncate: 2.1.0 @@ -14052,7 +16227,7 @@ snapshots: '@pnpm/read-project-manifest': 6.0.9 '@pnpm/types': 12.2.0 '@pnpm/util.lex-comparator': 3.0.0 - fast-glob: 3.3.3 + fast-glob: 3.3.2 p-filter: 2.1.0 '@pnpm/git-resolver@9.0.5(@pnpm/logger@1001.0.0)': @@ -14134,14 +16309,14 @@ snapshots: bole: 5.0.19 ndjson: 2.0.0 - '@pnpm/logger@5.2.0': + '@pnpm/logger@5.0.0': dependencies: - bole: 5.0.19 + bole: 5.0.11 ndjson: 2.0.0 - '@pnpm/manifest-utils@6.0.9(@pnpm/logger@5.2.0)': + '@pnpm/manifest-utils@6.0.9(@pnpm/logger@5.0.0)': dependencies: - '@pnpm/core-loggers': 10.0.7(@pnpm/logger@5.2.0) + '@pnpm/core-loggers': 10.0.7(@pnpm/logger@5.0.0) '@pnpm/error': 6.0.2 '@pnpm/types': 12.2.0 transitivePeerDependencies: @@ -14162,9 +16337,9 @@ snapshots: '@pnpm/meta-updater@2.0.4': dependencies: '@pnpm/find-workspace-dir': 7.0.3 - '@pnpm/logger': 5.2.0 + '@pnpm/logger': 5.0.0 '@pnpm/types': 11.1.0 - '@pnpm/workspace.find-packages': 4.0.14(@pnpm/logger@5.2.0) + '@pnpm/workspace.find-packages': 4.0.14(@pnpm/logger@5.0.0) '@pnpm/workspace.read-manifest': 2.2.2 load-json-file: 7.0.1 meow: 11.0.0 @@ -14205,21 +16380,27 @@ snapshots: transitivePeerDependencies: - domexception + '@pnpm/npm-conf@2.2.2': + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + '@pnpm/npm-conf@2.3.1': dependencies: '@pnpm/config.env-replace': 1.1.0 '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - '@pnpm/package-is-installable@9.0.12(@pnpm/logger@5.2.0)': + '@pnpm/package-is-installable@9.0.12(@pnpm/logger@5.0.0)': dependencies: '@pnpm/cli-meta': 6.2.2 - '@pnpm/core-loggers': 10.0.7(@pnpm/logger@5.2.0) + '@pnpm/core-loggers': 10.0.7(@pnpm/logger@5.0.0) '@pnpm/env.system-node-version': 1.0.1 '@pnpm/error': 6.0.2 - '@pnpm/logger': 5.2.0 + '@pnpm/logger': 5.0.0 '@pnpm/types': 12.2.0 - detect-libc: 2.0.4 + detect-libc: 2.0.3 execa: safe-execa@0.1.2 mem: 8.1.1 semver: 7.7.2 @@ -14239,14 +16420,14 @@ snapshots: '@pnpm/pick-fetcher@3.0.0': {} - '@pnpm/pnpmfile@6.0.13(@pnpm/logger@5.2.0)': + '@pnpm/pnpmfile@6.0.13(@pnpm/logger@5.0.0)': dependencies: - '@pnpm/core-loggers': 10.0.7(@pnpm/logger@5.2.0) + '@pnpm/core-loggers': 10.0.7(@pnpm/logger@5.0.0) '@pnpm/crypto.base32-hash': 3.0.1 '@pnpm/error': 6.0.2 '@pnpm/hooks.types': 2.0.9 '@pnpm/lockfile.types': 1.0.3 - '@pnpm/logger': 5.2.0 + '@pnpm/logger': 5.0.0 '@pnpm/store-controller-types': 18.1.6 '@pnpm/types': 12.2.0 chalk: 4.1.2 @@ -14312,11 +16493,11 @@ snapshots: dependencies: isexe: 2.0.0 - '@pnpm/workspace.find-packages@4.0.14(@pnpm/logger@5.2.0)': + '@pnpm/workspace.find-packages@4.0.14(@pnpm/logger@5.0.0)': dependencies: - '@pnpm/cli-utils': 4.0.9(@pnpm/logger@5.2.0) + '@pnpm/cli-utils': 4.0.9(@pnpm/logger@5.0.0) '@pnpm/fs.find-packages': 4.0.5 - '@pnpm/logger': 5.2.0 + '@pnpm/logger': 5.0.0 '@pnpm/types': 12.2.0 '@pnpm/util.lex-comparator': 3.0.0 @@ -14340,11 +16521,13 @@ snapshots: write-file-atomic: 5.0.1 write-yaml-file: 5.0.0 - '@polka/url@1.0.0-next.28': {} + '@polka/url@1.0.0-next.25': {} '@rtsao/scc@1.1.0': {} - '@rushstack/eslint-patch@1.10.4': {} + '@rushstack/eslint-patch@1.11.0': {} + + '@shikijs/core@1.4.0': {} '@sideway/address@4.1.5': dependencies: @@ -14405,7 +16588,7 @@ snapshots: '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.24.1 invariant: 2.2.4 prop-types: 15.8.1 react: 19.1.0 @@ -14421,54 +16604,54 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.27.1)': + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.27.1)': + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.27.1)': + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.27.1)': + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.27.1)': + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.27.1)': + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.27.1)': + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.27.1)': + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 - '@svgr/babel-preset@8.1.0(@babel/core@7.27.1)': + '@svgr/babel-preset@8.1.0(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.27.1 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.27.1) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.27.1) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.27.1) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.27.1) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.27.1) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.27.1) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.27.1) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.27.1) + '@babel/core': 7.24.3 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.24.3) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.24.3) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.24.3) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.24.3) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.24.3) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.24.3) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.24.3) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.24.3) '@svgr/core@8.1.0(typescript@5.8.3)': dependencies: - '@babel/core': 7.27.1 - '@svgr/babel-preset': 8.1.0(@babel/core@7.27.1) + '@babel/core': 7.24.3 + '@svgr/babel-preset': 8.1.0(@babel/core@7.24.3) camelcase: 6.3.0 cosmiconfig: 8.3.6(typescript@5.8.3) snake-case: 3.0.4 @@ -14478,13 +16661,13 @@ snapshots: '@svgr/hast-util-to-babel-ast@8.0.0': dependencies: - '@babel/types': 7.27.1 + '@babel/types': 7.24.0 entities: 4.5.0 '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.8.3))': dependencies: - '@babel/core': 7.27.1 - '@svgr/babel-preset': 8.1.0(@babel/core@7.27.1) + '@babel/core': 7.24.3 + '@svgr/babel-preset': 8.1.0(@babel/core@7.24.3) '@svgr/core': 8.1.0(typescript@5.8.3) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 @@ -14496,17 +16679,17 @@ snapshots: '@svgr/core': 8.1.0(typescript@5.8.3) cosmiconfig: 8.3.6(typescript@5.8.3) deepmerge: 4.3.1 - svgo: 3.3.2 + svgo: 3.2.0 transitivePeerDependencies: - typescript '@svgr/webpack@8.1.0(typescript@5.8.3)': dependencies: - '@babel/core': 7.27.1 - '@babel/plugin-transform-react-constant-elements': 7.25.7(@babel/core@7.27.1) - '@babel/preset-env': 7.27.1(@babel/core@7.27.1) - '@babel/preset-react': 7.27.1(@babel/core@7.27.1) - '@babel/preset-typescript': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.24.3 + '@babel/plugin-transform-react-constant-elements': 7.24.1(@babel/core@7.24.3) + '@babel/preset-env': 7.24.3(@babel/core@7.24.3) + '@babel/preset-react': 7.24.1(@babel/core@7.24.3) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.3) '@svgr/core': 8.1.0(typescript@5.8.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.8.3)) '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.8.3))(typescript@5.8.3) @@ -14598,8 +16781,8 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.27.1 + '@babel/code-frame': 7.24.2 + '@babel/runtime': 7.24.1 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -14609,7 +16792,7 @@ snapshots: '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.5(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.1 + '@babel/runtime': 7.24.1 '@testing-library/dom': 10.4.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -14625,7 +16808,7 @@ snapshots: '@tsconfig/docusaurus@2.0.3': {} - '@tsconfig/node10@1.0.11': {} + '@tsconfig/node10@1.0.10': {} '@tsconfig/node12@1.0.11': {} @@ -14638,39 +16821,39 @@ snapshots: '@tufjs/models@1.0.4': dependencies: '@tufjs/canonical-json': 1.0.0 - minimatch: 9.0.5 + minimatch: 9.0.3 '@tybys/wasm-util@0.9.0': dependencies: - tslib: 2.8.1 + tslib: 2.6.2 optional: true '@types/acorn@4.0.6': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.5 '@types/aria-query@5.0.4': {} '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.27.1 - '@babel/types': 7.27.1 + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.20.5 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.27.1 + '@babel/types': 7.24.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.1 - '@babel/types': 7.27.1 + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 - '@types/babel__traverse@7.20.6': + '@types/babel__traverse@7.20.5': dependencies: - '@babel/types': 7.27.1 + '@babel/types': 7.24.0 '@types/body-parser@1.19.5': dependencies: @@ -14687,7 +16870,7 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 4.19.6 + '@types/express-serve-static-core': 4.17.43 '@types/node': 20.17.50 '@types/connect@3.4.38': @@ -14706,35 +16889,37 @@ snapshots: '@types/eslint-scope@3.7.7': dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.7 + '@types/eslint': 8.56.6 + '@types/estree': 1.0.8 - '@types/eslint@9.6.1': + '@types/eslint@8.56.6': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 '@types/estree-jsx@1.0.5': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.5 + + '@types/estree@1.0.5': {} - '@types/estree@1.0.7': {} + '@types/estree@1.0.8': {} '@types/expect@1.20.4': {} - '@types/express-serve-static-core@4.19.6': + '@types/express-serve-static-core@4.17.43': dependencies: '@types/node': 20.17.50 - '@types/qs': 6.14.0 + '@types/qs': 6.9.14 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 - '@types/express@4.17.22': + '@types/express@4.17.21': dependencies: '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.14.0 - '@types/serve-static': 1.15.7 + '@types/express-serve-static-core': 4.17.43 + '@types/qs': 6.9.14 + '@types/serve-static': 1.15.5 '@types/fs-extra@11.0.4': dependencies: @@ -14749,7 +16934,7 @@ snapshots: '@types/hast@3.0.4': dependencies: - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 '@types/history@4.7.11': {} @@ -14759,7 +16944,7 @@ snapshots: '@types/http-errors@2.0.4': {} - '@types/http-proxy@1.17.16': + '@types/http-proxy@1.17.14': dependencies: '@types/node': 20.17.50 @@ -14773,6 +16958,11 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 + '@types/jest@29.5.12': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + '@types/jest@29.5.14': dependencies: expect: 29.7.0 @@ -14782,11 +16972,17 @@ snapshots: '@types/js-yaml@4.0.9': {} + '@types/jsdom@20.0.1': + dependencies: + '@types/node': 20.17.50 + '@types/tough-cookie': 4.0.5 + parse5: 7.1.2 + '@types/jsdom@21.1.7': dependencies: '@types/node': 20.17.50 '@types/tough-cookie': 4.0.5 - parse5: 7.3.0 + parse5: 7.1.2 '@types/json-schema@7.0.15': {} @@ -14804,12 +17000,14 @@ snapshots: '@types/mdast@4.0.4': dependencies: - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 '@types/mdx@2.0.13': {} '@types/mime@1.3.5': {} + '@types/mime@3.0.4': {} + '@types/minimatch@3.0.5': {} '@types/minimist@1.2.5': {} @@ -14838,9 +17036,11 @@ snapshots: '@types/normalize-path@3.0.2': {} - '@types/prismjs@1.26.4': {} + '@types/prismjs@1.26.3': {} - '@types/qs@6.14.0': {} + '@types/prop-types@15.7.12': {} + + '@types/qs@6.9.14': {} '@types/range-parser@1.2.7': {} @@ -14869,6 +17069,12 @@ snapshots: '@types/history': 4.7.11 '@types/react': 19.1.6 + '@types/react@18.2.71': + dependencies: + '@types/prop-types': 15.7.12 + '@types/scheduler': 0.23.0 + csstype: 3.1.3 + '@types/react@19.1.6': dependencies: csstype: 3.1.3 @@ -14881,6 +17087,8 @@ snapshots: dependencies: '@types/node': 20.17.50 + '@types/scheduler@0.23.0': {} + '@types/semver@7.7.0': {} '@types/send@0.17.4': @@ -14890,13 +17098,13 @@ snapshots: '@types/serve-index@1.9.4': dependencies: - '@types/express': 4.17.22 + '@types/express': 4.17.21 - '@types/serve-static@1.15.7': + '@types/serve-static@1.15.5': dependencies: '@types/http-errors': 2.0.4 + '@types/mime': 3.0.4 '@types/node': 20.17.50 - '@types/send': 0.17.4 '@types/sinon@17.0.4': dependencies: @@ -14922,13 +17130,13 @@ snapshots: '@types/triple-beam@1.3.5': {} - '@types/unist@2.0.11': {} + '@types/unist@2.0.10': {} - '@types/unist@3.0.3': {} + '@types/unist@3.0.2': {} '@types/uuid@10.0.0': {} - '@types/vinyl@2.0.12': + '@types/vinyl@2.0.11': dependencies: '@types/expect': 1.20.4 '@types/node': 20.17.50 @@ -14948,19 +17156,19 @@ snapshots: - uglify-js - webpack-cli - '@types/ws@8.18.1': + '@types/ws@8.5.10': dependencies: '@types/node': 20.17.50 '@types/yargs-parser@21.0.3': {} - '@types/yargs@17.0.33': + '@types/yargs@17.0.32': dependencies: '@types/yargs-parser': 21.0.3 '@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/regexpp': 4.10.0 '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.33.1 '@typescript-eslint/type-utils': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) @@ -14968,7 +17176,7 @@ snapshots: '@typescript-eslint/visitor-keys': 8.33.1 eslint: 9.28.0(jiti@2.4.2) graphemer: 1.4.0 - ignore: 7.0.4 + ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 @@ -14981,7 +17189,7 @@ snapshots: '@typescript-eslint/types': 8.33.1 '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.33.1 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 eslint: 9.28.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: @@ -14991,7 +17199,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) '@typescript-eslint/types': 8.33.1 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -15009,7 +17217,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) '@typescript-eslint/utils': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 eslint: 9.28.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 @@ -15024,8 +17232,8 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) '@typescript-eslint/types': 8.33.1 '@typescript-eslint/visitor-keys': 8.33.1 - debug: 4.4.1(supports-color@8.1.1) - fast-glob: 3.3.3 + debug: 4.3.4 + fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.2 @@ -15052,57 +17260,57 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@unrs/resolver-binding-darwin-arm64@1.7.2': + '@unrs/resolver-binding-darwin-arm64@1.7.11': optional: true - '@unrs/resolver-binding-darwin-x64@1.7.2': + '@unrs/resolver-binding-darwin-x64@1.7.11': optional: true - '@unrs/resolver-binding-freebsd-x64@1.7.2': + '@unrs/resolver-binding-freebsd-x64@1.7.11': optional: true - '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2': + '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.11': optional: true - '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2': + '@unrs/resolver-binding-linux-arm-musleabihf@1.7.11': optional: true - '@unrs/resolver-binding-linux-arm64-gnu@1.7.2': + '@unrs/resolver-binding-linux-arm64-gnu@1.7.11': optional: true - '@unrs/resolver-binding-linux-arm64-musl@1.7.2': + '@unrs/resolver-binding-linux-arm64-musl@1.7.11': optional: true - '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2': + '@unrs/resolver-binding-linux-ppc64-gnu@1.7.11': optional: true - '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2': + '@unrs/resolver-binding-linux-riscv64-gnu@1.7.11': optional: true - '@unrs/resolver-binding-linux-riscv64-musl@1.7.2': + '@unrs/resolver-binding-linux-riscv64-musl@1.7.11': optional: true - '@unrs/resolver-binding-linux-s390x-gnu@1.7.2': + '@unrs/resolver-binding-linux-s390x-gnu@1.7.11': optional: true - '@unrs/resolver-binding-linux-x64-gnu@1.7.2': + '@unrs/resolver-binding-linux-x64-gnu@1.7.11': optional: true - '@unrs/resolver-binding-linux-x64-musl@1.7.2': + '@unrs/resolver-binding-linux-x64-musl@1.7.11': optional: true - '@unrs/resolver-binding-wasm32-wasi@1.7.2': + '@unrs/resolver-binding-wasm32-wasi@1.7.11': dependencies: - '@napi-rs/wasm-runtime': 0.2.10 + '@napi-rs/wasm-runtime': 0.2.11 optional: true - '@unrs/resolver-binding-win32-arm64-msvc@1.7.2': + '@unrs/resolver-binding-win32-arm64-msvc@1.7.11': optional: true - '@unrs/resolver-binding-win32-ia32-msvc@1.7.2': + '@unrs/resolver-binding-win32-ia32-msvc@1.7.11': optional: true - '@unrs/resolver-binding-win32-x64-msvc@1.7.2': + '@unrs/resolver-binding-win32-x64-msvc@1.7.11': optional: true '@vscode/test-electron@2.5.2': @@ -15240,6 +17448,8 @@ snapshots: dependencies: isexe: 2.0.0 + abab@2.0.6: {} + abbrev@1.1.1: {} abort-controller@3.0.0: @@ -15251,26 +17461,39 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-jsx@5.3.2(acorn@8.14.1): + acorn-globals@7.0.1: + dependencies: + acorn: 8.11.3 + acorn-walk: 8.3.2 + + acorn-jsx@5.3.2(acorn@8.11.3): dependencies: - acorn: 8.14.1 + acorn: 8.11.3 - acorn-walk@8.3.4: + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - acorn: 8.14.1 + acorn: 8.15.0 + + acorn-walk@8.3.2: {} - acorn@8.14.1: {} + acorn@8.11.3: {} + + acorn@8.15.0: {} address@1.2.2: {} agent-base@6.0.2: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color agent-base@7.1.3: {} + agentkeepalive@4.5.0: + dependencies: + humanize-ms: 1.2.1 + agentkeepalive@4.6.0: dependencies: humanize-ms: 1.2.1 @@ -15280,17 +17503,17 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 - ajv-formats@2.1.1(ajv@8.17.1): + ajv-formats@2.1.1(ajv@8.12.0): optionalDependencies: - ajv: 8.17.1 + ajv: 8.12.0 ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 - ajv-keywords@5.1.0(ajv@8.17.1): + ajv-keywords@5.1.0(ajv@8.12.0): dependencies: - ajv: 8.17.1 + ajv: 8.12.0 fast-deep-equal: 3.1.3 ajv@6.12.6: @@ -15300,33 +17523,33 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.17.1: + ajv@8.12.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + uri-js: 4.4.1 - algoliasearch-helper@3.25.0(algoliasearch@5.24.0): + algoliasearch-helper@3.25.0(algoliasearch@5.27.0): dependencies: '@algolia/events': 4.0.1 - algoliasearch: 5.24.0 - - algoliasearch@5.24.0: - dependencies: - '@algolia/client-abtesting': 5.24.0 - '@algolia/client-analytics': 5.24.0 - '@algolia/client-common': 5.24.0 - '@algolia/client-insights': 5.24.0 - '@algolia/client-personalization': 5.24.0 - '@algolia/client-query-suggestions': 5.24.0 - '@algolia/client-search': 5.24.0 - '@algolia/ingestion': 1.24.0 - '@algolia/monitoring': 1.24.0 - '@algolia/recommend': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + algoliasearch: 5.27.0 + + algoliasearch@5.27.0: + dependencies: + '@algolia/client-abtesting': 5.27.0 + '@algolia/client-analytics': 5.27.0 + '@algolia/client-common': 5.27.0 + '@algolia/client-insights': 5.27.0 + '@algolia/client-personalization': 5.27.0 + '@algolia/client-query-suggestions': 5.27.0 + '@algolia/client-search': 5.27.0 + '@algolia/ingestion': 1.27.0 + '@algolia/monitoring': 1.27.0 + '@algolia/recommend': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 ansi-align@3.0.1: dependencies: @@ -15334,10 +17557,9 @@ snapshots: ansi-colors@4.1.3: {} - ansi-diff@1.2.0: + ansi-diff@1.1.1: dependencies: ansi-split: 1.0.1 - wcwidth: 1.0.1 ansi-escapes@4.3.2: dependencies: @@ -15349,12 +17571,16 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} + ansi-regex@6.0.1: {} ansi-split@1.0.1: dependencies: ansi-regex: 3.0.1 + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -15407,6 +17633,11 @@ snapshots: call-bind: 1.0.7 is-array-buffer: 3.0.4 + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + array-differ@3.0.0: {} array-flatten@1.1.1: {} @@ -15415,7 +17646,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.2 es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 @@ -15426,7 +17657,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.2 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 @@ -15435,7 +17666,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.2 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 @@ -15444,21 +17675,21 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.2 es-shim-unscopables: 1.0.2 array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.2 es-shim-unscopables: 1.0.2 array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.24.0 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 @@ -15467,12 +17698,22 @@ snapshots: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.2 es-errors: 1.3.0 get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + arrify@1.0.1: {} arrify@2.0.1: {} @@ -15489,18 +17730,20 @@ snapshots: astral-regex@2.0.0: {} - astring@1.9.0: {} + astring@1.8.6: {} async@2.6.4: dependencies: lodash: 4.17.21 - async@3.2.6: {} + async@3.2.5: {} + + asynckit@0.4.0: {} autoprefixer@10.4.21(postcss@8.5.4): dependencies: - browserslist: 4.24.5 - caniuse-lite: 1.0.30001717 + browserslist: 4.25.0 + caniuse-lite: 1.0.30001721 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -15511,28 +17754,42 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - axe-core@4.10.0: {} + axe-core@4.10.3: {} axobject-query@4.1.0: {} - babel-jest@29.7.0(@babel/core@7.27.1): + babel-jest@29.7.0(@babel/core@7.24.3): + dependencies: + '@babel/core': 7.24.3 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.24.3) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-jest@29.7.0(@babel/core@7.27.4): dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.27.1) + babel-preset-jest: 29.6.3(@babel/core@7.27.4) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color + optional: true - babel-loader@9.2.1(@babel/core@7.27.1)(webpack@5.99.9(esbuild@0.25.5)): + babel-loader@9.2.1(@babel/core@7.27.4)(webpack@5.99.9(esbuild@0.25.5)): dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 find-cache-dir: 4.0.0 - schema-utils: 4.3.2 + schema-utils: 4.2.0 webpack: 5.99.9(esbuild@0.25.5) babel-plugin-dynamic-import-node@2.3.3: @@ -15541,7 +17798,7 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.24.0 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -15551,59 +17808,104 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: - '@babel/template': 7.27.1 - '@babel/types': 7.27.1 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.20.5 + + babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.3): + dependencies: + '@babel/compat-data': 7.24.1 + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.27.1): + babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.27.4): dependencies: - '@babel/compat-data': 7.27.1 - '@babel/core': 7.27.1 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) + '@babel/compat-data': 7.24.1 + '@babel/core': 7.27.4 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.27.4) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.27.1): + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.3): + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) + core-js-compat: 3.36.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.27.4): dependencies: - '@babel/core': 7.27.1 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) + '@babel/core': 7.27.4 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.4) core-js-compat: 3.42.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.27.1): + babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.3): + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.27.4): dependencies: - '@babel/core': 7.27.1 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) + '@babel/core': 7.27.4 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.1): - dependencies: - '@babel/core': 7.27.1 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.1) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.1) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.1) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.1) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.1) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.1) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.1) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.1) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.1) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.1) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.1) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.1) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.1) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.1) - - babel-preset-jest@29.6.3(@babel/core@7.27.1): - dependencies: - '@babel/core': 7.27.1 + babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.3): + dependencies: + '@babel/core': 7.24.3 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.3) + + babel-preset-current-node-syntax@1.0.1(@babel/core@7.27.4): + dependencies: + '@babel/core': 7.27.4 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.4) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.4) + optional: true + + babel-preset-jest@29.6.3(@babel/core@7.24.3): + dependencies: + '@babel/core': 7.24.3 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.3) + + babel-preset-jest@29.6.3(@babel/core@7.27.4): + dependencies: + '@babel/core': 7.27.4 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.1) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.27.4) + optional: true bail@2.0.2: {} @@ -15644,6 +17946,23 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + body-parser@1.20.2: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + body-parser@1.20.3: dependencies: bytes: 3.1.2 @@ -15661,12 +17980,17 @@ snapshots: transitivePeerDependencies: - supports-color + bole@5.0.11: + dependencies: + fast-safe-stringify: 2.1.1 + individual: 3.0.0 + bole@5.0.19: dependencies: fast-safe-stringify: 2.1.1 individual: 3.0.0 - bonjour-service@1.3.0: + bonjour-service@1.2.1: dependencies: fast-deep-equal: 3.1.3 multicast-dns: 7.2.5 @@ -15699,7 +18023,7 @@ snapshots: dependencies: ansi-align: 3.0.1 camelcase: 7.0.1 - chalk: 5.4.1 + chalk: 5.3.0 cli-boxes: 3.0.0 string-width: 5.1.2 type-fest: 2.19.0 @@ -15715,18 +18039,29 @@ snapshots: dependencies: balanced-match: 1.0.2 + braces@3.0.2: + dependencies: + fill-range: 7.0.1 + braces@3.0.3: dependencies: fill-range: 7.1.1 browser-stdout@1.3.1: {} - browserslist@4.24.5: + browserslist@4.23.0: + dependencies: + caniuse-lite: 1.0.30001600 + electron-to-chromium: 1.4.717 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + + browserslist@4.25.0: dependencies: - caniuse-lite: 1.0.30001717 - electron-to-chromium: 1.5.150 + caniuse-lite: 1.0.30001721 + electron-to-chromium: 1.5.165 node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.24.5) + update-browserslist-db: 1.1.3(browserslist@4.25.0) bs-logger@0.2.6: dependencies: @@ -15752,7 +18087,7 @@ snapshots: builtins@1.0.3: {} - builtins@5.1.0: + builtins@5.0.1: dependencies: semver: 7.7.2 @@ -15816,16 +18151,16 @@ snapshots: cacache@17.1.4: dependencies: - '@npmcli/fs': 3.1.1 + '@npmcli/fs': 3.1.0 fs-minipass: 3.0.3 - glob: 10.4.5 + glob: 10.3.10 lru-cache: 7.18.3 - minipass: 7.1.2 + minipass: 7.0.4 minipass-collect: 1.0.2 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 p-map: 4.0.0 - ssri: 10.0.6 + ssri: 10.0.5 tar: 6.2.1 unique-filename: 3.0.0 @@ -15854,6 +18189,13 @@ snapshots: get-intrinsic: 1.2.4 set-function-length: 1.2.2 + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.0 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + call-bound@1.0.4: dependencies: call-bind-apply-helpers: 1.0.2 @@ -15864,7 +18206,7 @@ snapshots: camel-case@4.1.2: dependencies: pascal-case: 3.1.2 - tslib: 2.8.1 + tslib: 2.6.2 camelcase-css@2.0.1: {} @@ -15893,12 +18235,14 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.24.5 - caniuse-lite: 1.0.30001717 + browserslist: 4.23.0 + caniuse-lite: 1.0.30001600 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001717: {} + caniuse-lite@1.0.30001600: {} + + caniuse-lite@1.0.30001721: {} ccount@2.0.1: {} @@ -15906,19 +18250,27 @@ snapshots: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.2 + deep-eql: 5.0.1 + loupe: 3.1.0 pathval: 2.0.0 chalk-template@1.1.0: dependencies: chalk: 5.4.1 + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.3.0: {} + chalk@5.4.1: {} char-regex@1.0.2: {} @@ -15953,13 +18305,13 @@ snapshots: domhandler: 5.0.3 domutils: 3.1.0 htmlparser2: 8.0.2 - parse5: 7.3.0 - parse5-htmlparser2-tree-adapter: 7.1.0 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.0.0 chokidar@3.6.0: dependencies: anymatch: 3.1.3 - braces: 3.0.3 + braces: 3.0.2 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -15980,9 +18332,9 @@ snapshots: ci-info@3.9.0: {} - ci-info@4.2.0: {} + ci-info@4.0.0: {} - cjs-module-lexer@1.4.1: {} + cjs-module-lexer@1.2.3: {} clean-css@5.3.3: dependencies: @@ -16013,7 +18365,7 @@ snapshots: cli-spinners@2.9.2: {} - cli-table3@0.6.5: + cli-table3@0.6.4: dependencies: string-width: 4.2.3 optionalDependencies: @@ -16113,6 +18465,10 @@ snapshots: combine-promises@1.2.0: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} commander@10.0.1: {} @@ -16141,16 +18497,16 @@ snapshots: compressible@2.0.18: dependencies: - mime-db: 1.54.0 + mime-db: 1.52.0 - compression@1.8.0: + compression@1.7.4: dependencies: - bytes: 3.1.2 + accepts: 1.3.8 + bytes: 3.0.0 compressible: 2.0.18 debug: 2.6.9 - negotiator: 0.6.4 on-headers: 1.0.2 - safe-buffer: 5.2.1 + safe-buffer: 5.1.2 vary: 1.1.2 transitivePeerDependencies: - supports-color @@ -16190,6 +18546,8 @@ snapshots: cookie-signature@1.0.6: {} + cookie@0.6.0: {} + cookie@0.7.1: {} copy-text-to-clipboard@3.2.0: {} @@ -16200,21 +18558,25 @@ snapshots: copy-webpack-plugin@11.0.0(webpack@5.99.9(esbuild@0.25.5)): dependencies: - fast-glob: 3.3.3 + fast-glob: 3.3.2 glob-parent: 6.0.2 globby: 13.2.2 normalize-path: 3.0.0 - schema-utils: 4.3.2 + schema-utils: 4.2.0 serialize-javascript: 6.0.2 webpack: 5.99.9(esbuild@0.25.5) + core-js-compat@3.36.1: + dependencies: + browserslist: 4.23.0 + core-js-compat@3.42.0: dependencies: - browserslist: 4.24.5 + browserslist: 4.25.0 - core-js-pure@3.38.1: {} + core-js-pure@3.36.1: {} - core-js@3.38.1: {} + core-js@3.36.1: {} core-util-is@1.0.3: {} @@ -16222,7 +18584,7 @@ snapshots: cosmiconfig@8.3.6(typescript@5.8.3): dependencies: - import-fresh: 3.3.1 + import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 @@ -16232,7 +18594,7 @@ snapshots: cosmiconfig@9.0.0(typescript@5.8.3): dependencies: env-paths: 2.2.1 - import-fresh: 3.3.1 + import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: @@ -16291,15 +18653,15 @@ snapshots: css-in-js-utils@3.1.0: dependencies: - hyphenate-style-name: 1.1.0 + hyphenate-style-name: 1.0.4 - css-loader@6.11.0(webpack@5.99.9(esbuild@0.25.5)): + css-loader@6.10.0(webpack@5.99.9(esbuild@0.25.5)): dependencies: icss-utils: 5.1.0(postcss@8.5.4) postcss: 8.5.4 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.4) - postcss-modules-local-by-default: 4.0.5(postcss@8.5.4) - postcss-modules-scope: 3.2.0(postcss@8.5.4) + postcss-modules-extract-imports: 3.0.0(postcss@8.5.4) + postcss-modules-local-by-default: 4.0.4(postcss@8.5.4) + postcss-modules-scope: 3.1.1(postcss@8.5.4) postcss-modules-values: 4.0.0(postcss@8.5.4) postcss-value-parser: 4.2.0 semver: 7.7.2 @@ -16311,8 +18673,8 @@ snapshots: icss-utils: 5.1.0(postcss@8.5.4) postcss: 8.5.4 postcss-modules-extract-imports: 3.1.0(postcss@8.5.4) - postcss-modules-local-by-default: 4.0.5(postcss@8.5.4) - postcss-modules-scope: 3.2.0(postcss@8.5.4) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.4) + postcss-modules-scope: 3.2.1(postcss@8.5.4) postcss-modules-values: 4.0.0(postcss@8.5.4) postcss-value-parser: 4.2.0 semver: 7.7.2 @@ -16325,7 +18687,7 @@ snapshots: cssnano: 6.1.2(postcss@8.5.4) jest-worker: 29.7.0 postcss: 8.5.4 - schema-utils: 4.3.2 + schema-utils: 4.2.0 serialize-javascript: 6.0.2 webpack: 5.99.9(esbuild@0.25.5) optionalDependencies: @@ -16360,23 +18722,23 @@ snapshots: css-tree@2.2.1: dependencies: mdn-data: 2.0.28 - source-map-js: 1.2.1 + source-map-js: 1.2.0 css-tree@2.3.1: dependencies: mdn-data: 2.0.30 - source-map-js: 1.2.1 + source-map-js: 1.2.0 css-what@6.1.0: {} - cssdb@8.2.5: {} + cssdb@8.3.0: {} cssesc@3.0.0: {} cssnano-preset-advanced@6.1.2(postcss@8.5.4): dependencies: autoprefixer: 10.4.21(postcss@8.5.4) - browserslist: 4.24.5 + browserslist: 4.23.0 cssnano-preset-default: 6.1.2(postcss@8.5.4) postcss: 8.5.4 postcss-discard-unused: 6.0.5(postcss@8.5.4) @@ -16386,7 +18748,7 @@ snapshots: cssnano-preset-default@6.1.2(postcss@8.5.4): dependencies: - browserslist: 4.24.5 + browserslist: 4.23.0 css-declaration-sorter: 7.2.0(postcss@8.5.4) cssnano-utils: 4.0.2(postcss@8.5.4) postcss: 8.5.4 @@ -16425,14 +18787,22 @@ snapshots: cssnano@6.1.2(postcss@8.5.4): dependencies: cssnano-preset-default: 6.1.2(postcss@8.5.4) - lilconfig: 3.1.2 + lilconfig: 3.1.1 postcss: 8.5.4 csso@5.0.5: dependencies: css-tree: 2.2.1 - cssstyle@4.3.1: + cssom@0.3.8: {} + + cssom@0.5.0: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + + cssstyle@4.4.0: dependencies: '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 @@ -16447,6 +18817,12 @@ snapshots: data-uri-to-buffer@3.0.1: {} + data-urls@3.0.2: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 @@ -16458,18 +18834,36 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.1 + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + data-view-byte-length@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + data-view-byte-offset@1.0.0: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + dateformat@4.6.3: {} debounce@1.2.1: {} @@ -16482,6 +18876,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.3.4: + dependencies: + ms: 2.1.2 + debug@4.4.1(supports-color@8.1.1): dependencies: ms: 2.1.3 @@ -16501,6 +18899,8 @@ snapshots: decamelize@6.0.0: {} + decimal.js@10.4.3: {} + decimal.js@10.5.0: {} decode-named-character-reference@1.0.2: @@ -16511,9 +18911,9 @@ snapshots: dependencies: mimic-response: 3.1.0 - dedent@1.5.3: {} + dedent@1.5.1: {} - deep-eql@5.0.2: {} + deep-eql@5.0.1: {} deep-equal@2.2.3: dependencies: @@ -16530,8 +18930,8 @@ snapshots: object-is: 1.1.6 object-keys: 1.1.1 object.assign: 4.1.5 - regexp.prototype.flags: 1.5.3 - side-channel: 1.1.0 + regexp.prototype.flags: 1.5.2 + side-channel: 1.0.6 which-boxed-primitive: 1.0.2 which-collection: 1.0.2 which-typed-array: 1.1.15 @@ -16575,6 +18975,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + delayed-stream@1.0.0: {} + delegates@1.0.0: {} depd@1.1.2: {} @@ -16589,16 +18991,18 @@ snapshots: detect-indent@7.0.1: {} + detect-libc@2.0.3: {} + detect-libc@2.0.4: {} detect-newline@3.1.0: {} detect-node@2.1.0: {} - detect-port@1.6.1: + detect-port@1.5.1: dependencies: address: 1.2.2 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -16631,7 +19035,7 @@ snapshots: dns-packet@5.6.1: dependencies: - '@leichtgewicht/ip-codec': 2.0.5 + '@leichtgewicht/ip-codec': 2.0.4 doctrine@2.1.0: dependencies: @@ -16657,6 +19061,10 @@ snapshots: domelementtype@2.3.0: {} + domexception@4.0.0: + dependencies: + webidl-conversions: 7.0.0 + domhandler@4.3.1: dependencies: domelementtype: 2.3.0 @@ -16680,7 +19088,7 @@ snapshots: dot-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.8.1 + tslib: 2.6.2 dot-prop@6.0.1: dependencies: @@ -16698,16 +19106,22 @@ snapshots: ee-first@1.1.1: {} - effect@3.15.2: + effect@3.16.5: dependencies: '@standard-schema/spec': 1.0.0 fast-check: 3.23.2 ejs@3.1.10: dependencies: - jake: 10.9.2 + jake: 10.8.7 + + ejs@3.1.9: + dependencies: + jake: 10.8.7 + + electron-to-chromium@1.4.717: {} - electron-to-chromium@1.5.150: {} + electron-to-chromium@1.5.165: {} emittery@0.13.1: {} @@ -16721,7 +19135,7 @@ snapshots: emojis-list@3.0.0: {} - emoticon@4.1.0: {} + emoticon@4.0.1: {} enabled@2.0.0: {} @@ -16734,11 +19148,6 @@ snapshots: iconv-lite: 0.6.3 optional: true - enhanced-resolve@5.17.1: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 @@ -16753,7 +19162,7 @@ snapshots: entities@4.5.0: {} - entities@6.0.0: {} + entities@6.0.1: {} env-paths@2.2.1: {} @@ -16771,7 +19180,7 @@ snapshots: error@10.4.0: {} - es-abstract@1.23.3: + es-abstract@1.23.2: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -16788,7 +19197,7 @@ snapshots: function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 get-symbol-description: 1.0.2 - globalthis: 1.0.4 + globalthis: 1.0.3 gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 @@ -16804,10 +19213,10 @@ snapshots: is-string: 1.0.7 is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.13.2 + object-inspect: 1.13.1 object-keys: 1.1.1 object.assign: 4.1.5 - regexp.prototype.flags: 1.5.3 + regexp.prototype.flags: 1.5.2 safe-array-concat: 1.1.2 safe-regex-test: 1.0.3 string.prototype.trim: 1.2.9 @@ -16820,6 +19229,63 @@ snapshots: unbox-primitive: 1.0.2 which-typed-array: 1.1.15 + es-abstract@1.24.0: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 @@ -16840,24 +19306,26 @@ snapshots: isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - es-iterator-helpers@1.1.0: + es-iterator-helpers@1.2.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.24.0 es-errors: 1.3.0 es-set-tostringtag: 2.0.3 function-bind: 1.1.2 - get-intrinsic: 1.2.4 + get-intrinsic: 1.3.0 globalthis: 1.0.4 + gopd: 1.2.0 has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - iterator.prototype: 1.1.3 - safe-array-concat: 1.1.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + safe-array-concat: 1.1.3 - es-module-lexer@1.5.4: {} + es-module-lexer@1.5.0: {} es-object-atoms@1.0.0: dependencies: @@ -16869,7 +19337,14 @@ snapshots: es-set-tostringtag@2.0.3: dependencies: - get-intrinsic: 1.2.4 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 hasown: 2.0.2 @@ -16883,6 +19358,37 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + esbuild@0.18.20: + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + esbuild@0.25.5: optionalDependencies: '@esbuild/aix-ppc64': 0.25.5 @@ -16911,6 +19417,8 @@ snapshots: '@esbuild/win32-ia32': 0.25.5 '@esbuild/win32-x64': 0.25.5 + escalade@3.1.2: {} + escalade@3.2.0: {} escape-goat@4.0.0: {} @@ -16925,10 +19433,18 @@ snapshots: escape-string-regexp@5.0.0: {} + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + eslint-config-next@15.3.3(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3): dependencies: '@next/eslint-plugin-next': 15.3.3 - '@rushstack/eslint-patch': 1.10.4 + '@rushstack/eslint-patch': 1.11.0 '@typescript-eslint/eslint-plugin': 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) eslint: 9.28.0(jiti@2.4.2) @@ -16949,17 +19465,17 @@ snapshots: dependencies: eslint: 9.28.0(jiti@2.4.2) - eslint-import-context@0.1.6(unrs-resolver@1.7.2): + eslint-import-context@0.1.8(unrs-resolver@1.7.11): dependencies: get-tsconfig: 4.10.1 - stable-hash: 0.0.5 + stable-hash-x: 0.1.1 optionalDependencies: - unrs-resolver: 1.7.2 + unrs-resolver: 1.7.11 eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.15.1 + is-core-module: 2.13.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color @@ -16968,12 +19484,12 @@ snapshots: dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1(supports-color@8.1.1) - enhanced-resolve: 5.17.1 + enhanced-resolve: 5.18.1 eslint: 9.28.0(jiti@2.4.2) eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.28.0(jiti@2.4.2)) - fast-glob: 3.3.3 + fast-glob: 3.3.2 get-tsconfig: 4.10.1 - is-bun-module: 1.2.1 + is-bun-module: 1.3.0 is-glob: 4.0.3 optionalDependencies: eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@2.4.2)) @@ -16987,12 +19503,12 @@ snapshots: dependencies: debug: 4.4.1(supports-color@8.1.1) eslint: 9.28.0(jiti@2.4.2) - eslint-import-context: 0.1.6(unrs-resolver@1.7.2) + eslint-import-context: 0.1.8(unrs-resolver@1.7.11) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.14 - unrs-resolver: 1.7.2 + unrs-resolver: 1.7.11 optionalDependencies: eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@2.4.2)) transitivePeerDependencies: @@ -17033,7 +19549,7 @@ snapshots: eslint-import-resolver-node: 0.3.9 eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.2)(eslint@9.28.0(jiti@2.4.2)) hasown: 2.0.2 - is-core-module: 2.15.1 + is-core-module: 2.16.1 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 @@ -17055,11 +19571,11 @@ snapshots: array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 - axe-core: 4.10.0 + axe-core: 4.10.3 axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.1.0 + es-iterator-helpers: 1.2.1 eslint: 9.28.0(jiti@2.4.2) hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -17087,7 +19603,7 @@ snapshots: array.prototype.flatmap: 1.3.2 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.1.0 + es-iterator-helpers: 1.2.1 eslint: 9.28.0(jiti@2.4.2) estraverse: 5.3.0 hasown: 2.0.2 @@ -17106,7 +19622,7 @@ snapshots: dependencies: '@babel/helper-validator-identifier': 7.27.1 '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@2.4.2)) - ci-info: 4.2.0 + ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.42.0 eslint: 9.28.0(jiti@2.4.2) @@ -17114,7 +19630,7 @@ snapshots: globals: 15.15.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 - jsesc: 3.1.0 + jsesc: 3.0.2 pluralize: 8.0.0 read-pkg-up: 7.0.1 regexp-tree: 0.1.27 @@ -17162,30 +19678,30 @@ snapshots: '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 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 + esquery: 1.5.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 + ignore: 5.3.1 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 + optionator: 0.9.3 optionalDependencies: jiti: 2.4.2 transitivePeerDependencies: @@ -17193,12 +19709,16 @@ snapshots: espree@10.3.0: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.0 esprima@4.0.1: {} + esquery@1.5.0: + dependencies: + estraverse: 5.3.0 + esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -17213,7 +19733,7 @@ snapshots: estree-util-attach-comments@3.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.5 estree-util-build-jsx@3.0.1: dependencies: @@ -17227,21 +19747,22 @@ snapshots: estree-util-to-js@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 - astring: 1.9.0 + astring: 1.8.6 source-map: 0.7.4 - estree-util-value-to-estree@3.1.2: + estree-util-value-to-estree@3.0.1: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.5 + is-plain-obj: 4.1.0 estree-util-visit@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.5 esutils@2.0.3: {} @@ -17284,6 +19805,42 @@ snapshots: exponential-backoff@3.1.1: {} + express@4.19.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.6.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + express@4.21.2: dependencies: accepts: 1.3.8 @@ -17348,7 +19905,15 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.8 + micromatch: 4.0.5 + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 fast-glob@3.3.3: dependencies: @@ -17366,8 +19931,6 @@ snapshots: fast-shallow-equal@1.0.0: {} - fast-uri@3.0.6: {} - fast-xml-parser@5.2.3: dependencies: strnum: 2.1.1 @@ -17392,7 +19955,7 @@ snapshots: dependencies: bser: 2.1.1 - fdir@6.4.4(picomatch@4.0.2): + fdir@6.4.5(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -17422,9 +19985,25 @@ snapshots: dependencies: minimatch: 5.1.6 + fill-range@7.0.1: + dependencies: + to-regex-range: 5.0.1 + fill-range@7.1.1: dependencies: - to-regex-range: 5.0.1 + to-regex-range: 5.0.1 + + finalhandler@1.2.0: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color finalhandler@1.3.1: dependencies: @@ -17460,7 +20039,7 @@ snapshots: find-yarn-workspace-root2@1.2.16: dependencies: - micromatch: 4.0.8 + micromatch: 4.0.5 pkg-dir: 4.2.0 first-chunk-stream@2.0.0: @@ -17469,28 +20048,38 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.3 + flatted: 3.3.1 keyv: 4.5.4 flat@5.0.2: {} - flatted@3.3.3: {} + flatted@3.3.1: {} fn.name@1.1.0: {} - follow-redirects@1.15.9: {} + follow-redirects@1.15.6: {} for-each@0.3.3: dependencies: is-callable: 1.2.7 - foreground-child@3.3.0: + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.1.1: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 form-data-encoder@2.1.4: {} + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + format@0.2.2: {} forwarded@0.2.0: {} @@ -17499,6 +20088,12 @@ snapshots: fresh@0.5.2: {} + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + fs-extra@11.3.0: dependencies: graceful-fs: 4.2.11 @@ -17511,9 +20106,9 @@ snapshots: fs-minipass@3.0.3: dependencies: - minipass: 7.1.2 + minipass: 7.0.4 - fs-monkey@1.0.6: {} + fs-monkey@1.0.5: {} fs.realpath@1.0.0: {} @@ -17526,8 +20121,17 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.2 + functions-have-names: 1.2.3 + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 functions-have-names@1.2.3: {} @@ -17560,6 +20164,8 @@ snapshots: get-east-asian-width@1.3.0: {} + get-func-name@2.0.2: {} + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 @@ -17605,10 +20211,20 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.4 + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + get-tsconfig@4.10.1: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@4.7.3: + dependencies: + resolve-pkg-maps: 1.0.0 + github-slugger@1.5.0: {} github-username@6.0.0(encoding@0.1.13): @@ -17627,9 +20243,17 @@ snapshots: glob-to-regexp@0.4.1: {} + glob@10.3.10: + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + glob@10.4.5: dependencies: - foreground-child: 3.3.0 + foreground-child: 3.1.1 jackspeak: 3.4.3 minimatch: 9.0.5 minipass: 7.1.2 @@ -17638,8 +20262,8 @@ snapshots: glob@11.0.2: dependencies: - foreground-child: 3.3.0 - jackspeak: 4.0.2 + foreground-child: 3.1.1 + jackspeak: 4.1.1 minimatch: 10.0.1 minipass: 7.1.2 package-json-from-dist: 1.0.1 @@ -17676,25 +20300,29 @@ snapshots: globals@15.15.0: {} + globalthis@1.0.3: + dependencies: + define-properties: 1.2.1 + globalthis@1.0.4: dependencies: define-properties: 1.2.1 - gopd: 1.0.1 + gopd: 1.2.0 globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 + fast-glob: 3.3.2 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 globby@13.2.2: dependencies: dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 + fast-glob: 3.3.2 + ignore: 5.3.1 merge2: 1.4.1 slash: 4.0.0 @@ -17702,7 +20330,7 @@ snapshots: dependencies: '@sindresorhus/merge-streams': 2.3.0 fast-glob: 3.3.3 - ignore: 7.0.4 + ignore: 7.0.5 path-type: 6.0.0 slash: 5.1.0 unicorn-magic: 0.3.0 @@ -17734,7 +20362,7 @@ snapshots: graceful-git@4.0.0: dependencies: retry: 0.13.1 - safe-execa: 0.1.4 + safe-execa: 0.1.2 graphemer@1.4.0: {} @@ -17757,6 +20385,8 @@ snapshots: has-bigints@1.0.2: {} + has-flag@3.0.0: {} + has-flag@4.0.0: {} has-property-descriptors@1.0.2: @@ -17765,6 +20395,10 @@ snapshots: has-proto@1.0.3: {} + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + has-symbols@1.0.3: {} has-symbols@1.1.0: {} @@ -17788,37 +20422,37 @@ snapshots: hast-util-from-parse5@8.0.1: dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 devlop: 1.1.0 hastscript: 8.0.0 - property-information: 6.5.0 - vfile: 6.0.3 - vfile-location: 5.0.3 + property-information: 6.4.1 + vfile: 6.0.1 + vfile-location: 5.0.2 web-namespaces: 2.0.1 hast-util-parse-selector@4.0.0: dependencies: '@types/hast': 3.0.4 - hast-util-raw@9.0.4: + hast-util-raw@9.0.2: dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 '@ungap/structured-clone': 1.2.0 hast-util-from-parse5: 8.0.1 hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 - parse5: 7.3.0 + mdast-util-to-hast: 13.1.0 + parse5: 7.1.2 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.3 + vfile: 6.0.1 web-namespaces: 2.0.1 zwitch: 2.0.4 hast-util-to-estree@3.1.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.5 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -17826,10 +20460,10 @@ snapshots: estree-util-attach-comments: 3.0.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.1.3 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.2 mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.5.0 + property-information: 6.4.1 space-separated-tokens: 2.0.2 style-to-object: 0.4.4 unist-util-position: 5.0.0 @@ -17837,21 +20471,21 @@ snapshots: transitivePeerDependencies: - supports-color - hast-util-to-jsx-runtime@2.3.2: + hast-util-to-jsx-runtime@2.3.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.5 '@types/hast': 3.0.4 - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.1.3 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.2 mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.5.0 + property-information: 6.4.1 space-separated-tokens: 2.0.2 - style-to-object: 1.0.8 + style-to-object: 1.0.5 unist-util-position: 5.0.0 vfile-message: 4.0.2 transitivePeerDependencies: @@ -17862,7 +20496,7 @@ snapshots: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 - property-information: 6.5.0 + property-information: 6.4.1 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -17876,14 +20510,14 @@ snapshots: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 - property-information: 6.5.0 + property-information: 6.4.1 space-separated-tokens: 2.0.2 he@1.2.0: {} history@4.10.1: dependencies: - '@babel/runtime': 7.27.1 + '@babel/runtime': 7.24.1 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.3 @@ -17904,13 +20538,13 @@ snapshots: dependencies: lru-cache: 7.18.3 - hosted-git-info@6.1.3: + hosted-git-info@6.1.1: dependencies: lru-cache: 7.18.3 hosted-git-info@8.1.0: dependencies: - lru-cache: 10.4.3 + lru-cache: 10.2.0 hpack.js@2.1.6: dependencies: @@ -17939,7 +20573,7 @@ snapshots: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.35.0 + terser: 5.29.2 html-minifier-terser@7.2.0: dependencies: @@ -17949,7 +20583,7 @@ snapshots: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.35.0 + terser: 5.29.2 html-tags@3.3.1: {} @@ -18008,13 +20642,13 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-parser-js@0.5.10: {} + http-parser-js@0.5.8: {} http-proxy-agent@4.0.1: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -18022,33 +20656,45 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.3 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.9(@types/express@4.17.22): + http-proxy-middleware@2.0.6(@types/express@4.17.21): dependencies: - '@types/http-proxy': 1.17.16 + '@types/http-proxy': 1.17.14 http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 - micromatch: 4.0.8 + micromatch: 4.0.5 + optionalDependencies: + '@types/express': 4.17.21 + transitivePeerDependencies: + - debug + + http-proxy-middleware@2.0.9(@types/express@4.17.21): + dependencies: + '@types/http-proxy': 1.17.14 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.5 optionalDependencies: - '@types/express': 4.17.22 + '@types/express': 4.17.21 transitivePeerDependencies: - debug http-proxy@1.18.1: dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.9 + follow-redirects: 1.15.6 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -18080,14 +20726,14 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -18097,9 +20743,7 @@ snapshots: dependencies: ms: 2.1.3 - hyperdyperid@1.2.0: {} - - hyphenate-style-name@1.1.0: {} + hyphenate-style-name@1.0.4: {} iconv-lite@0.4.24: dependencies: @@ -18119,13 +20763,13 @@ snapshots: dependencies: minimatch: 3.1.2 - ignore-walk@6.0.5: + ignore-walk@6.0.4: dependencies: - minimatch: 9.0.5 + minimatch: 9.0.3 - ignore@5.3.2: {} + ignore@5.3.1: {} - ignore@7.0.4: {} + ignore@7.0.5: {} image-size@2.0.2: {} @@ -18135,14 +20779,14 @@ snapshots: immutability-helper@3.1.1: {} - import-fresh@3.3.1: + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 import-lazy@4.0.0: {} - import-local@3.2.0: + import-local@3.1.0: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 @@ -18176,7 +20820,7 @@ snapshots: inline-style-parser@0.1.1: {} - inline-style-parser@0.2.4: {} + inline-style-parser@0.2.2: {} inline-style-prefixer@7.0.1: dependencies: @@ -18201,6 +20845,12 @@ snapshots: wrap-ansi: 6.2.0 internal-slot@1.0.7: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 hasown: 2.0.2 @@ -18221,7 +20871,7 @@ snapshots: ipaddr.js@1.9.1: {} - ipaddr.js@2.2.0: {} + ipaddr.js@2.1.0: {} is-alphabetical@2.0.1: {} @@ -18240,6 +20890,12 @@ snapshots: call-bind: 1.0.7 get-intrinsic: 1.2.4 + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-arrayish@0.2.1: {} is-arrayish@0.3.2: {} @@ -18252,6 +20908,10 @@ snapshots: dependencies: has-bigints: 1.0.2 + is-bigint@1.1.0: + dependencies: + has-bigints: 1.0.2 + is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 @@ -18261,13 +20921,18 @@ snapshots: call-bind: 1.0.7 has-tostringtag: 1.0.2 + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-buffer@1.1.6: {} is-builtin-module@3.2.1: dependencies: builtin-modules: 3.3.0 - is-bun-module@1.2.1: + is-bun-module@1.3.0: dependencies: semver: 7.7.2 @@ -18281,7 +20946,11 @@ snapshots: dependencies: ci-info: 3.9.0 - is-core-module@2.15.1: + is-core-module@2.13.1: + dependencies: + hasown: 2.0.2 + + is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -18289,10 +20958,21 @@ snapshots: dependencies: is-typed-array: 1.1.13 + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.2 + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-decimal@2.0.1: {} is-docker@2.2.1: {} @@ -18305,7 +20985,11 @@ snapshots: is-finalizationregistry@1.0.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 is-fullwidth-code-point@3.0.0: {} @@ -18348,6 +21032,11 @@ snapshots: dependencies: has-tostringtag: 1.0.2 + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-number@7.0.0: {} is-obj@1.0.1: {} @@ -18374,13 +21063,20 @@ snapshots: is-reference@3.0.2: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.5 is-regex@1.1.4: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + is-regexp@1.0.0: {} is-scoped@2.1.0: @@ -18393,12 +21089,21 @@ snapshots: dependencies: call-bind: 1.0.7 + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + is-stream@2.0.1: {} is-string@1.0.7: dependencies: has-tostringtag: 1.0.2 + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 @@ -18407,10 +21112,20 @@ snapshots: dependencies: has-symbols: 1.0.3 + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.15 + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + is-typedarray@1.0.0: {} is-unicode-supported@0.1.0: {} @@ -18427,6 +21142,10 @@ snapshots: dependencies: call-bind: 1.0.7 + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + is-weakset@2.0.3: dependencies: call-bind: 1.0.7 @@ -18452,7 +21171,7 @@ snapshots: isbinaryfile@4.0.10: {} - isbinaryfile@5.0.3: {} + isbinaryfile@5.0.2: {} isexe@2.0.0: {} @@ -18462,18 +21181,18 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.27.1 - '@babel/parser': 7.27.1 + '@babel/core': 7.24.3 + '@babel/parser': 7.24.1 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 transitivePeerDependencies: - supports-color - istanbul-lib-instrument@6.0.3: + istanbul-lib-instrument@6.0.2: dependencies: - '@babel/core': 7.27.1 - '@babel/parser': 7.27.1 + '@babel/core': 7.24.3 + '@babel/parser': 7.24.1 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.2 @@ -18488,7 +21207,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -18499,29 +21218,36 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - iterator.prototype@1.1.3: + iterator.prototype@1.1.5: dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.6 + define-data-property: 1.1.4 + es-object-atoms: 1.0.0 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 set-function-name: 2.0.2 itertools@2.4.1: {} + jackspeak@2.3.6: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jackspeak@4.0.2: + jackspeak@4.1.1: dependencies: '@isaacs/cliui': 8.0.2 - jake@10.9.2: + jake@10.8.7: dependencies: - async: 3.2.6 + async: 3.2.5 chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 @@ -18543,7 +21269,7 @@ snapshots: '@types/node': 20.17.50 chalk: 4.1.2 co: 4.6.0 - dedent: 1.5.3 + dedent: 1.5.1 is-generator-fn: 2.1.0 jest-each: 29.7.0 jest-matcher-utils: 29.7.0 @@ -18568,7 +21294,7 @@ snapshots: chalk: 4.1.2 create-jest: 29.7.0(@types/node@20.17.50)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)) exit: 0.1.2 - import-local: 3.2.0 + import-local: 3.1.0 jest-config: 29.7.0(@types/node@20.17.50)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)) jest-util: 29.7.0 jest-validate: 29.7.0 @@ -18581,10 +21307,10 @@ snapshots: jest-config@29.7.0(@types/node@20.17.50)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)): dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.27.1) + babel-jest: 29.7.0(@babel/core@7.24.3) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -18598,7 +21324,7 @@ snapshots: jest-runner: 29.7.0 jest-util: 29.7.0 jest-validate: 29.7.0 - micromatch: 4.0.8 + micromatch: 4.0.5 parse-json: 5.2.0 pretty-format: 29.7.0 slash: 3.0.0 @@ -18629,6 +21355,21 @@ snapshots: jest-util: 29.7.0 pretty-format: 29.7.0 + jest-environment-jsdom@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/jsdom': 20.0.1 + '@types/node': 20.17.50 + jest-mock: 29.7.0 + jest-util: 29.7.0 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jest-environment-jsdom@30.0.0-beta.3: dependencies: '@jest/environment': 30.0.0-beta.3 @@ -18663,7 +21404,7 @@ snapshots: jest-regex-util: 29.6.3 jest-util: 29.7.0 jest-worker: 29.7.0 - micromatch: 4.0.8 + micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 @@ -18682,19 +21423,19 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.24.2 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.8 + micromatch: 4.0.5 pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 jest-message-util@30.0.0-beta.3: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.24.2 '@jest/types': 30.0.0-beta.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -18780,7 +21521,7 @@ snapshots: '@jest/types': 29.6.3 '@types/node': 20.17.50 chalk: 4.1.2 - cjs-module-lexer: 1.4.1 + cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 glob: 7.2.3 graceful-fs: 4.2.11 @@ -18798,15 +21539,15 @@ snapshots: jest-snapshot@29.7.0: dependencies: - '@babel/core': 7.27.1 - '@babel/generator': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.1) - '@babel/types': 7.27.1 + '@babel/core': 7.24.3 + '@babel/generator': 7.24.1 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.3) + '@babel/types': 7.24.0 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.1) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.3) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -18835,7 +21576,7 @@ snapshots: '@jest/types': 30.0.0-beta.3 '@types/node': 20.17.50 chalk: 4.1.2 - ci-info: 4.2.0 + ci-info: 4.0.0 graceful-fs: 4.2.11 picomatch: 4.0.2 @@ -18876,7 +21617,7 @@ snapshots: dependencies: '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)) '@jest/types': 29.6.3 - import-local: 3.2.0 + import-local: 3.1.0 jest-cli: 29.7.0(@types/node@20.17.50)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' @@ -18884,7 +21625,7 @@ snapshots: - supports-color - ts-node - jiti@1.21.6: {} + jiti@1.21.0: {} jiti@2.4.2: {} @@ -18911,9 +21652,42 @@ snapshots: jsbn@1.1.0: {} + jsdom@20.0.3: + dependencies: + abab: 2.0.6 + acorn: 8.11.3 + acorn-globals: 7.0.1 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.4.3 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 7.1.2 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.16.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jsdom@26.1.0: dependencies: - cssstyle: 4.3.1 + cssstyle: 4.4.0 data-urls: 5.0.0 decimal.js: 10.5.0 html-encoding-sniffer: 4.0.0 @@ -18931,7 +21705,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - ws: 8.18.0 + ws: 8.18.2 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -18940,15 +21714,15 @@ snapshots: jsesc@0.5.0: {} - jsesc@3.0.2: {} + jsesc@2.5.2: {} - jsesc@3.1.0: {} + jsesc@3.0.2: {} json-buffer@3.0.1: {} json-parse-even-better-errors@2.3.1: {} - json-parse-even-better-errors@3.0.2: {} + json-parse-even-better-errors@3.0.1: {} json-schema-traverse@0.4.1: {} @@ -19004,20 +21778,20 @@ snapshots: kuler@2.0.0: {} - language-subtag-registry@0.3.23: {} + language-subtag-registry@0.3.22: {} language-tags@1.0.9: dependencies: - language-subtag-registry: 0.3.23 + language-subtag-registry: 0.3.22 latest-version@7.0.0: dependencies: package-json: 8.1.1 - launch-editor@2.10.0: + launch-editor@2.6.1: dependencies: - picocolors: 1.1.1 - shell-quote: 1.8.3 + picocolors: 1.0.0 + shell-quote: 1.8.1 leven@3.1.0: {} @@ -19062,7 +21836,7 @@ snapshots: lightningcss@1.30.1: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.0.3 optionalDependencies: lightningcss-darwin-arm64: 1.30.1 lightningcss-darwin-x64: 1.30.1 @@ -19077,7 +21851,7 @@ snapshots: lilconfig@2.1.0: {} - lilconfig@3.1.2: {} + lilconfig@3.1.1: {} lines-and-columns@1.2.4: {} @@ -19142,10 +21916,10 @@ snapshots: log-symbols@6.0.0: dependencies: - chalk: 5.4.1 + chalk: 5.3.0 is-unicode-supported: 1.3.0 - logform@2.6.1: + logform@2.7.0: dependencies: '@colors/colors': 1.6.0 '@types/triple-beam': 1.3.5 @@ -19160,17 +21934,21 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@3.1.2: {} + loupe@3.1.0: + dependencies: + get-func-name: 2.0.2 lower-case@2.0.2: dependencies: - tslib: 2.8.1 + tslib: 2.6.2 lowercase-keys@3.0.0: {} + lru-cache@10.2.0: {} + lru-cache@10.4.3: {} - lru-cache@11.0.1: {} + lru-cache@11.1.0: {} lru-cache@5.1.1: dependencies: @@ -19196,7 +21974,7 @@ snapshots: make-fetch-happen@10.2.1: dependencies: - agentkeepalive: 4.6.0 + agentkeepalive: 4.5.0 cacache: 16.1.3 http-cache-semantics: 4.1.1 http-proxy-agent: 5.0.0 @@ -19208,7 +21986,7 @@ snapshots: minipass-fetch: 2.1.2 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 - negotiator: 0.6.4 + negotiator: 0.6.3 promise-retry: 2.0.1 socks-proxy-agent: 7.0.0 ssri: 9.0.1 @@ -19218,7 +21996,7 @@ snapshots: make-fetch-happen@11.1.1: dependencies: - agentkeepalive: 4.6.0 + agentkeepalive: 4.5.0 cacache: 17.1.4 http-cache-semantics: 4.1.1 http-proxy-agent: 5.0.0 @@ -19226,19 +22004,19 @@ snapshots: is-lambda: 1.0.1 lru-cache: 7.18.3 minipass: 5.0.0 - minipass-fetch: 3.0.5 + minipass-fetch: 3.0.4 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 - negotiator: 0.6.4 + negotiator: 0.6.3 promise-retry: 2.0.1 socks-proxy-agent: 7.0.0 - ssri: 10.0.6 + ssri: 10.0.5 transitivePeerDependencies: - supports-color make-fetch-happen@9.1.0: dependencies: - agentkeepalive: 4.6.0 + agentkeepalive: 4.5.0 cacache: 15.3.0 http-cache-semantics: 4.1.1 http-proxy-agent: 4.0.1 @@ -19250,7 +22028,7 @@ snapshots: minipass-fetch: 1.4.1 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 - negotiator: 0.6.4 + negotiator: 0.6.3 promise-retry: 2.0.1 socks-proxy-agent: 6.2.1 ssri: 8.0.1 @@ -19289,12 +22067,12 @@ snapshots: mdast-util-directive@3.0.0: dependencies: '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 parse-entities: 4.0.1 - stringify-entities: 4.0.4 + stringify-entities: 4.0.3 unist-util-visit-parents: 6.0.1 transitivePeerDependencies: - supports-color @@ -19306,10 +22084,10 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - mdast-util-from-markdown@2.0.1: + mdast-util-from-markdown@2.0.0: dependencies: '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 decode-named-character-reference: 1.0.2 devlop: 1.1.0 mdast-util-to-string: 4.0.0 @@ -19328,13 +22106,13 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 escape-string-regexp: 5.0.0 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 micromark-extension-frontmatter: 2.0.0 transitivePeerDependencies: - supports-color - mdast-util-gfm-autolink-literal@2.0.1: + mdast-util-gfm-autolink-literal@2.0.0: dependencies: '@types/mdast': 4.0.4 ccount: 2.0.1 @@ -19346,7 +22124,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: @@ -19355,7 +22133,7 @@ snapshots: mdast-util-gfm-strikethrough@2.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -19365,7 +22143,7 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -19374,15 +22152,15 @@ snapshots: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color mdast-util-gfm@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.1 - mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-from-markdown: 2.0.0 + mdast-util-gfm-autolink-literal: 2.0.0 mdast-util-gfm-footnote: 2.0.0 mdast-util-gfm-strikethrough: 2.0.0 mdast-util-gfm-table: 2.0.0 @@ -19391,29 +22169,30 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-mdx-expression@2.0.1: + mdast-util-mdx-expression@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - mdast-util-mdx-jsx@3.1.3: + mdast-util-mdx-jsx@3.1.2: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 parse-entities: 4.0.1 - stringify-entities: 4.0.4 + stringify-entities: 4.0.3 + unist-util-remove-position: 5.0.0 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 transitivePeerDependencies: @@ -19421,9 +22200,9 @@ snapshots: mdast-util-mdx@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.1 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.1.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.2 mdast-util-mdxjs-esm: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: @@ -19435,7 +22214,7 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -19445,7 +22224,7 @@ snapshots: '@types/mdast': 4.0.4 unist-util-is: 6.0.0 - mdast-util-to-hast@13.2.0: + mdast-util-to-hast@13.1.0: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -19455,12 +22234,12 @@ snapshots: trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.3 + vfile: 6.0.1 mdast-util-to-markdown@2.1.0: dependencies: '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 longest-streak: 3.1.0 mdast-util-phrasing: 4.1.0 mdast-util-to-string: 4.0.0 @@ -19485,9 +22264,9 @@ snapshots: binaryextensions: 4.19.0 commondir: 1.0.1 deep-extend: 0.6.0 - ejs: 3.1.10 + ejs: 3.1.9 globby: 11.1.0 - isbinaryfile: 5.0.3 + isbinaryfile: 5.0.2 minimatch: 7.4.6 multimatch: 5.0.0 normalize-path: 3.0.0 @@ -19498,7 +22277,7 @@ snapshots: mem-fs@2.3.0: dependencies: '@types/node': 15.14.9 - '@types/vinyl': 2.0.12 + '@types/vinyl': 2.0.11 vinyl: 2.2.1 vinyl-file: 3.0.0 @@ -19509,14 +22288,11 @@ snapshots: memfs@3.5.3: dependencies: - fs-monkey: 1.0.6 + fs-monkey: 1.0.5 - memfs@4.17.2: + memfs@4.8.0: dependencies: - '@jsonjoy.com/json-pack': 1.2.0(tslib@2.8.1) - '@jsonjoy.com/util': 1.6.0(tslib@2.8.1) - tree-dump: 1.0.3(tslib@2.8.1) - tslib: 2.8.1 + tslib: 2.6.2 memoize-one@5.2.1: {} @@ -19535,6 +22311,8 @@ snapshots: type-fest: 3.13.1 yargs-parser: 21.1.1 + merge-descriptors@1.0.1: {} + merge-descriptors@1.0.3: {} merge-stream@2.0.0: {} @@ -19543,7 +22321,7 @@ snapshots: methods@1.1.2: {} - micromark-core-commonmark@2.0.1: + micromark-core-commonmark@2.0.0: dependencies: decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -19558,11 +22336,11 @@ snapshots: micromark-util-html-tag-name: 2.0.0 micromark-util-normalize-identifier: 2.0.0 micromark-util-resolve-all: 2.0.0 - micromark-util-subtokenize: 2.0.1 + micromark-util-subtokenize: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-directive@3.0.2: + micromark-extension-directive@3.0.0: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 @@ -19579,17 +22357,17 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-gfm-autolink-literal@2.1.0: + micromark-extension-gfm-autolink-literal@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-gfm-footnote@2.1.0: + micromark-extension-gfm-footnote@2.0.0: dependencies: devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 + micromark-core-commonmark: 2.0.0 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-normalize-identifier: 2.0.0 @@ -19597,7 +22375,7 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-gfm-strikethrough@2.1.0: + micromark-extension-gfm-strikethrough@2.0.0: dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 @@ -19606,7 +22384,7 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-gfm-table@2.1.0: + micromark-extension-gfm-table@2.0.0: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 @@ -19618,7 +22396,7 @@ snapshots: dependencies: micromark-util-types: 2.0.0 - micromark-extension-gfm-task-list-item@2.1.0: + micromark-extension-gfm-task-list-item@2.0.1: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 @@ -19628,36 +22406,35 @@ snapshots: 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.0 + micromark-extension-gfm-autolink-literal: 2.0.0 + micromark-extension-gfm-footnote: 2.0.0 + micromark-extension-gfm-strikethrough: 2.0.0 + micromark-extension-gfm-table: 2.0.0 micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.1.0 + micromark-extension-gfm-task-list-item: 2.0.1 micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 micromark-extension-mdx-expression@3.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.5 devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.2 + micromark-factory-mdx-expression: 2.0.1 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-mdx-jsx@3.0.1: + micromark-extension-mdx-jsx@3.0.0: dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.7 + '@types/estree': 1.0.5 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.2 + micromark-factory-mdx-expression: 2.0.1 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 - micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 vfile-message: 4.0.2 @@ -19668,9 +22445,9 @@ snapshots: micromark-extension-mdxjs-esm@3.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.5 devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 + micromark-core-commonmark: 2.0.0 micromark-util-character: 2.1.0 micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 @@ -19680,10 +22457,10 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) micromark-extension-mdx-expression: 3.0.0 - micromark-extension-mdx-jsx: 3.0.1 + micromark-extension-mdx-jsx: 3.0.0 micromark-extension-mdx-md: 2.0.0 micromark-extension-mdxjs-esm: 3.0.0 micromark-util-combine-extensions: 2.0.0 @@ -19702,11 +22479,10 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-factory-mdx-expression@2.0.2: + micromark-factory-mdx-expression@2.0.1: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.5 devlop: 1.1.0 - micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 @@ -19779,8 +22555,8 @@ snapshots: micromark-util-events-to-acorn@2.0.2: dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.7 - '@types/unist': 3.0.3 + '@types/estree': 1.0.5 + '@types/unist': 3.0.2 devlop: 1.1.0 estree-util-visit: 2.0.0 micromark-util-symbol: 2.0.0 @@ -19803,7 +22579,7 @@ snapshots: micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 - micromark-util-subtokenize@2.0.1: + micromark-util-subtokenize@2.0.0: dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 @@ -19821,10 +22597,10 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 decode-named-character-reference: 1.0.2 devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 + micromark-core-commonmark: 2.0.0 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-chunked: 2.0.0 @@ -19834,12 +22610,17 @@ snapshots: micromark-util-normalize-identifier: 2.0.0 micromark-util-resolve-all: 2.0.0 micromark-util-sanitize-uri: 2.0.0 - micromark-util-subtokenize: 2.0.1 + micromark-util-subtokenize: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color + micromatch@4.0.5: + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -19849,8 +22630,6 @@ snapshots: mime-db@1.52.0: {} - mime-db@1.54.0: {} - mime-types@2.1.18: dependencies: mime-db: 1.33.0 @@ -19873,9 +22652,9 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.1(webpack@5.99.9(esbuild@0.25.5)): + mini-css-extract-plugin@2.9.2(webpack@5.99.9(esbuild@0.25.5)): dependencies: - schema-utils: 4.3.2 + schema-utils: 4.2.0 tapable: 2.2.1 webpack: 5.99.9(esbuild@0.25.5) @@ -19897,6 +22676,10 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -19929,9 +22712,9 @@ snapshots: optionalDependencies: encoding: 0.1.13 - minipass-fetch@3.0.5: + minipass-fetch@3.0.4: dependencies: - minipass: 7.1.2 + minipass: 7.0.4 minipass-sized: 1.0.3 minizlib: 2.1.2 optionalDependencies: @@ -19941,7 +22724,7 @@ snapshots: dependencies: minipass: 3.3.6 - minipass-json-stream@1.0.2: + minipass-json-stream@1.0.1: dependencies: jsonparse: 1.3.1 minipass: 3.3.6 @@ -19960,6 +22743,8 @@ snapshots: minipass@5.0.0: {} + minipass@7.0.4: {} + minipass@7.1.2: {} minizlib@2.1.2: @@ -20014,6 +22799,8 @@ snapshots: ms@2.0.0: {} + ms@2.1.2: {} + ms@2.1.3: {} multicast-dns@7.2.5: @@ -20039,7 +22826,7 @@ snapshots: nano-css@5.6.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 css-tree: 1.1.3 csstype: 3.1.3 fastest-stable-stringify: 2.0.2 @@ -20048,10 +22835,12 @@ snapshots: react-dom: 19.1.0(react@19.1.0) rtl-css-js: 1.16.1 stacktrace-js: 2.0.2 - stylis: 4.3.4 + stylis: 4.3.1 nanoid@3.3.11: {} + nanoid@3.3.7: {} + napi-postinstall@0.2.4: {} natural-compare@1.4.0: {} @@ -20073,8 +22862,6 @@ snapshots: negotiator@0.6.3: {} - negotiator@0.6.4: {} - neo-async@2.6.2: {} neovim@5.3.0: @@ -20082,17 +22869,17 @@ snapshots: '@msgpack/msgpack': 2.8.0 winston: 3.14.1 - next@15.3.3(@babel/core@7.27.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.3.3(@babel/core@7.24.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: '@next/env': 15.3.3 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 - caniuse-lite: 1.0.30001717 + caniuse-lite: 1.0.30001600 postcss: 8.4.31 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - styled-jsx: 5.1.6(@babel/core@7.27.1)(react@19.1.0) + styled-jsx: 5.1.6(@babel/core@7.24.3)(react@19.1.0) optionalDependencies: '@next/swc-darwin-arm64': 15.3.3 '@next/swc-darwin-x64': 15.3.3 @@ -20110,7 +22897,7 @@ snapshots: no-case@3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.8.1 + tslib: 2.6.2 node-emoji@2.1.3: dependencies: @@ -20167,6 +22954,8 @@ snapshots: node-int64@0.4.0: {} + node-releases@2.0.14: {} + node-releases@2.0.19: {} nopt@5.0.0: @@ -20187,21 +22976,21 @@ snapshots: normalize-package-data@3.0.3: dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.15.1 + is-core-module: 2.13.1 semver: 7.7.2 validate-npm-package-license: 3.0.4 normalize-package-data@4.0.1: dependencies: hosted-git-info: 5.2.1 - is-core-module: 2.15.1 + is-core-module: 2.13.1 semver: 7.7.2 validate-npm-package-license: 3.0.4 normalize-package-data@5.0.0: dependencies: - hosted-git-info: 6.1.3 - is-core-module: 2.15.1 + hosted-git-info: 6.1.1 + is-core-module: 2.13.1 semver: 7.7.2 validate-npm-package-license: 3.0.4 @@ -20217,7 +23006,7 @@ snapshots: dependencies: npm-normalize-package-bin: 1.0.1 - npm-bundled@3.0.1: + npm-bundled@3.0.0: dependencies: npm-normalize-package-bin: 3.0.1 @@ -20237,17 +23026,17 @@ snapshots: npm-package-arg@10.1.0: dependencies: - hosted-git-info: 6.1.3 + hosted-git-info: 6.1.1 proc-log: 3.0.0 semver: 7.7.2 - validate-npm-package-name: 5.0.1 + validate-npm-package-name: 5.0.0 npm-package-arg@12.0.2: dependencies: hosted-git-info: 8.1.0 proc-log: 5.0.0 semver: 7.7.2 - validate-npm-package-name: 6.0.0 + validate-npm-package-name: 6.0.1 npm-package-arg@8.1.5: dependencies: @@ -20264,7 +23053,7 @@ snapshots: npm-packlist@7.0.4: dependencies: - ignore-walk: 6.0.5 + ignore-walk: 6.0.4 npm-pick-manifest@6.1.1: dependencies: @@ -20285,7 +23074,7 @@ snapshots: make-fetch-happen: 10.2.1 minipass: 3.3.6 minipass-fetch: 1.4.1 - minipass-json-stream: 1.0.2 + minipass-json-stream: 1.0.1 minizlib: 2.1.2 npm-package-arg: 8.1.5 transitivePeerDependencies: @@ -20296,8 +23085,8 @@ snapshots: dependencies: make-fetch-happen: 11.1.1 minipass: 5.0.0 - minipass-fetch: 3.0.5 - minipass-json-stream: 1.0.2 + minipass-fetch: 3.0.4 + minipass-json-stream: 1.0.1 minizlib: 2.1.2 npm-package-arg: 10.1.0 proc-log: 3.0.0 @@ -20336,11 +23125,13 @@ snapshots: nwsapi@2.2.20: {} + nwsapi@2.2.7: {} + object-assign@4.1.1: {} object-hash@3.0.0: {} - object-inspect@1.13.2: {} + object-inspect@1.13.1: {} object-inspect@1.13.4: {} @@ -20358,6 +23149,15 @@ snapshots: has-symbols: 1.0.3 object-keys: 1.1.1 + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + object.entries@1.1.8: dependencies: call-bind: 1.0.7 @@ -20368,14 +23168,14 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.2 es-object-atoms: 1.0.0 object.groupby@1.0.3: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.2 object.values@1.2.0: dependencies: @@ -20407,7 +23207,7 @@ snapshots: dependencies: mimic-function: 5.0.1 - open@10.1.2: + open@10.1.0: dependencies: default-browser: 5.2.1 define-lazy-prop: 3.0.0 @@ -20422,14 +23222,14 @@ snapshots: opener@1.5.2: {} - optionator@0.9.4: + optionator@0.9.3: dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 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.4.1: dependencies: @@ -20445,7 +23245,7 @@ snapshots: ora@8.2.0: dependencies: - chalk: 5.4.1 + chalk: 5.3.0 cli-cursor: 5.0.0 cli-spinners: 2.9.2 is-interactive: 2.0.0 @@ -20457,6 +23257,12 @@ snapshots: os-tmpdir@1.0.2: {} + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + p-cancelable@3.0.0: {} p-defer@1.0.0: {} @@ -20477,7 +23283,7 @@ snapshots: p-limit@4.0.0: dependencies: - yocto-queue: 1.1.1 + yocto-queue: 1.0.0 p-locate@4.1.0: dependencies: @@ -20507,7 +23313,7 @@ snapshots: '@types/retry': 0.12.0 retry: 0.13.1 - p-retry@6.2.1: + p-retry@6.2.0: dependencies: '@types/retry': 0.12.2 is-network-error: 1.1.0 @@ -20519,7 +23325,7 @@ snapshots: p-transform@1.3.0: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 p-queue: 6.6.2 transitivePeerDependencies: - supports-color @@ -20563,7 +23369,7 @@ snapshots: pacote@15.2.0: dependencies: '@npmcli/git': 4.1.0 - '@npmcli/installed-package-contents': 2.1.0 + '@npmcli/installed-package-contents': 2.0.2 '@npmcli/promise-spawn': 6.0.2 '@npmcli/run-script': 6.0.2 cacache: 17.1.4 @@ -20578,7 +23384,7 @@ snapshots: read-package-json: 6.0.4 read-package-json-fast: 3.0.2 sigstore: 1.9.0 - ssri: 10.0.6 + ssri: 10.0.5 tar: 6.2.1 transitivePeerDependencies: - bluebird @@ -20589,7 +23395,7 @@ snapshots: param-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.8.1 + tslib: 2.6.2 parent-module@1.0.1: dependencies: @@ -20603,7 +23409,7 @@ snapshots: parse-entities@4.0.1: dependencies: - '@types/unist': 2.0.11 + '@types/unist': 2.0.10 character-entities: 2.0.2 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 @@ -20614,7 +23420,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.24.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -20623,21 +23429,25 @@ snapshots: parse-numeric-range@1.3.0: {} - parse5-htmlparser2-tree-adapter@7.1.0: + parse5-htmlparser2-tree-adapter@7.0.0: dependencies: domhandler: 5.0.3 - parse5: 7.3.0 + parse5: 7.1.2 + + parse5@7.1.2: + dependencies: + entities: 4.5.0 parse5@7.3.0: dependencies: - entities: 6.0.0 + entities: 6.0.1 parseurl@1.3.3: {} pascal-case@3.1.2: dependencies: no-case: 3.0.4 - tslib: 2.8.1 + tslib: 2.6.2 path-absolute@1.0.1: {} @@ -20655,14 +23465,19 @@ snapshots: path-parse@1.0.7: {} + path-scurry@1.10.1: + dependencies: + lru-cache: 10.2.0 + minipass: 7.0.4 + path-scurry@1.11.1: dependencies: - lru-cache: 10.4.3 + lru-cache: 10.2.0 minipass: 7.1.2 path-scurry@2.0.0: dependencies: - lru-cache: 11.0.1 + lru-cache: 11.1.0 minipass: 7.1.2 path-temp@2.1.0: @@ -20671,7 +23486,9 @@ snapshots: path-to-regexp@0.1.12: {} - path-to-regexp@1.9.0: + path-to-regexp@0.1.7: {} + + path-to-regexp@1.8.0: dependencies: isarray: 0.0.1 @@ -20685,10 +23502,12 @@ snapshots: periscopic@3.1.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.5 estree-walker: 3.0.3 is-reference: 3.0.2 + picocolors@1.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -20729,7 +23548,7 @@ snapshots: postcss-calc@9.0.1(postcss@8.5.4): dependencies: postcss: 8.5.4 - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 6.0.16 postcss-value-parser: 4.2.0 postcss-clamp@4.1.0(postcss@8.5.4): @@ -20737,12 +23556,12 @@ snapshots: postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@7.0.9(postcss@8.5.4): + postcss-color-functional-notation@7.0.10(postcss@8.5.4): dependencies: - '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.4) '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 @@ -20760,7 +23579,7 @@ snapshots: postcss-colormin@6.1.0(postcss@8.5.4): dependencies: - browserslist: 4.24.5 + browserslist: 4.23.0 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.5.4 @@ -20768,32 +23587,32 @@ snapshots: postcss-convert-values@6.1.0(postcss@8.5.4): dependencies: - browserslist: 4.24.5 + browserslist: 4.23.0 postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-custom-media@11.0.5(postcss@8.5.4): + postcss-custom-media@11.0.6(postcss@8.5.4): dependencies: - '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) postcss: 8.5.4 - postcss-custom-properties@14.0.4(postcss@8.5.4): + postcss-custom-properties@14.0.6(postcss@8.5.4): dependencies: - '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-custom-selectors@8.0.4(postcss@8.5.4): + postcss-custom-selectors@8.0.5(postcss@8.5.4): dependencies: - '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.4 postcss-selector-parser: 7.1.0 @@ -20821,11 +23640,11 @@ snapshots: postcss-discard-unused@6.0.5(postcss@8.5.4): dependencies: postcss: 8.5.4 - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 6.0.16 - postcss-double-position-gradients@6.0.1(postcss@8.5.4): + postcss-double-position-gradients@6.0.2(postcss@8.5.4): dependencies: - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.4) + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.4) '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 postcss-value-parser: 4.2.0 @@ -20866,18 +23685,18 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.4 - postcss-lab-function@7.0.9(postcss@8.5.4): + postcss-lab-function@7.0.10(postcss@8.5.4): dependencies: - '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.4) '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 postcss-load-config@4.0.2(postcss@8.5.4)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)): dependencies: - lilconfig: 3.1.2 + lilconfig: 3.1.1 yaml: 2.6.0 optionalDependencies: postcss: 8.5.4 @@ -20886,7 +23705,7 @@ snapshots: postcss-loader@7.3.4(postcss@8.5.4)(typescript@5.8.3)(webpack@5.99.9(esbuild@0.25.5)): dependencies: cosmiconfig: 8.3.6(typescript@5.8.3) - jiti: 1.21.6 + jiti: 1.21.0 postcss: 8.5.4 semver: 7.7.2 webpack: 5.99.9(esbuild@0.25.5) @@ -20896,9 +23715,9 @@ snapshots: postcss-loader@8.1.1(postcss@8.5.4)(typescript@5.8.3)(webpack@5.99.9): dependencies: cosmiconfig: 9.0.0(typescript@5.8.3) - jiti: 1.21.6 + jiti: 1.21.0 postcss: 8.5.4 - semver: 7.7.2 + semver: 7.6.0 optionalDependencies: webpack: 5.99.9(esbuild@0.25.5)(webpack-cli@6.0.1) transitivePeerDependencies: @@ -20923,11 +23742,11 @@ snapshots: postcss-merge-rules@6.1.1(postcss@8.5.4): dependencies: - browserslist: 4.24.5 + browserslist: 4.23.0 caniuse-api: 3.0.0 cssnano-utils: 4.0.2(postcss@8.5.4) postcss: 8.5.4 - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 6.0.16 postcss-minify-font-values@6.1.0(postcss@8.5.4): dependencies: @@ -20943,7 +23762,7 @@ snapshots: postcss-minify-params@6.1.0(postcss@8.5.4): dependencies: - browserslist: 4.24.5 + browserslist: 4.23.0 cssnano-utils: 4.0.2(postcss@8.5.4) postcss: 8.5.4 postcss-value-parser: 4.2.0 @@ -20951,37 +23770,53 @@ snapshots: postcss-minify-selectors@6.0.4(postcss@8.5.4): dependencies: postcss: 8.5.4 - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 6.0.16 + + postcss-modules-extract-imports@3.0.0(postcss@8.5.4): + dependencies: + postcss: 8.5.4 postcss-modules-extract-imports@3.1.0(postcss@8.5.4): dependencies: postcss: 8.5.4 - postcss-modules-local-by-default@4.0.5(postcss@8.5.4): + postcss-modules-local-by-default@4.0.4(postcss@8.5.4): dependencies: icss-utils: 5.1.0(postcss@8.5.4) postcss: 8.5.4 - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 6.0.16 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.0(postcss@8.5.4): + postcss-modules-local-by-default@4.2.0(postcss@8.5.4): + dependencies: + icss-utils: 5.1.0(postcss@8.5.4) + postcss: 8.5.4 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.1.1(postcss@8.5.4): + dependencies: + postcss: 8.5.4 + postcss-selector-parser: 6.0.16 + + postcss-modules-scope@3.2.1(postcss@8.5.4): dependencies: postcss: 8.5.4 - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 7.1.0 postcss-modules-values@4.0.0(postcss@8.5.4): dependencies: icss-utils: 5.1.0(postcss@8.5.4) postcss: 8.5.4 - postcss-nested@6.2.0(postcss@8.5.4): + postcss-nested@6.0.1(postcss@8.5.4): dependencies: postcss: 8.5.4 - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 6.0.16 postcss-nesting@13.0.1(postcss@8.5.4): dependencies: - '@csstools/selector-resolve-nested': 3.0.0(postcss-selector-parser@7.1.0) + '@csstools/selector-resolve-nested': 3.1.0(postcss-selector-parser@7.1.0) '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) postcss: 8.5.4 postcss-selector-parser: 7.1.0 @@ -21017,7 +23852,7 @@ snapshots: postcss-normalize-unicode@6.1.0(postcss@8.5.4): dependencies: - browserslist: 4.24.5 + browserslist: 4.23.0 postcss: 8.5.4 postcss-value-parser: 4.2.0 @@ -21055,63 +23890,64 @@ snapshots: postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-preset-env@10.1.6(postcss@8.5.4): + postcss-preset-env@10.2.1(postcss@8.5.4): dependencies: '@csstools/postcss-cascade-layers': 5.0.1(postcss@8.5.4) - '@csstools/postcss-color-function': 4.0.9(postcss@8.5.4) - '@csstools/postcss-color-mix-function': 3.0.9(postcss@8.5.4) - '@csstools/postcss-content-alt-text': 2.0.5(postcss@8.5.4) - '@csstools/postcss-exponential-functions': 2.0.8(postcss@8.5.4) + '@csstools/postcss-color-function': 4.0.10(postcss@8.5.4) + '@csstools/postcss-color-mix-function': 3.0.10(postcss@8.5.4) + '@csstools/postcss-color-mix-variadic-function-arguments': 1.0.0(postcss@8.5.4) + '@csstools/postcss-content-alt-text': 2.0.6(postcss@8.5.4) + '@csstools/postcss-exponential-functions': 2.0.9(postcss@8.5.4) '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.4) - '@csstools/postcss-gamut-mapping': 2.0.9(postcss@8.5.4) - '@csstools/postcss-gradients-interpolation-method': 5.0.9(postcss@8.5.4) - '@csstools/postcss-hwb-function': 4.0.9(postcss@8.5.4) - '@csstools/postcss-ic-unit': 4.0.1(postcss@8.5.4) + '@csstools/postcss-gamut-mapping': 2.0.10(postcss@8.5.4) + '@csstools/postcss-gradients-interpolation-method': 5.0.10(postcss@8.5.4) + '@csstools/postcss-hwb-function': 4.0.10(postcss@8.5.4) + '@csstools/postcss-ic-unit': 4.0.2(postcss@8.5.4) '@csstools/postcss-initial': 2.0.1(postcss@8.5.4) '@csstools/postcss-is-pseudo-class': 5.0.1(postcss@8.5.4) - '@csstools/postcss-light-dark-function': 2.0.8(postcss@8.5.4) + '@csstools/postcss-light-dark-function': 2.0.9(postcss@8.5.4) '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.4) '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.4) '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.4) '@csstools/postcss-logical-resize': 3.0.0(postcss@8.5.4) - '@csstools/postcss-logical-viewport-units': 3.0.3(postcss@8.5.4) - '@csstools/postcss-media-minmax': 2.0.8(postcss@8.5.4) - '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.4(postcss@8.5.4) + '@csstools/postcss-logical-viewport-units': 3.0.4(postcss@8.5.4) + '@csstools/postcss-media-minmax': 2.0.9(postcss@8.5.4) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.5(postcss@8.5.4) '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.4) '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.4) - '@csstools/postcss-oklab-function': 4.0.9(postcss@8.5.4) - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.4) - '@csstools/postcss-random-function': 2.0.0(postcss@8.5.4) - '@csstools/postcss-relative-color-syntax': 3.0.9(postcss@8.5.4) + '@csstools/postcss-oklab-function': 4.0.10(postcss@8.5.4) + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.4) + '@csstools/postcss-random-function': 2.0.1(postcss@8.5.4) + '@csstools/postcss-relative-color-syntax': 3.0.10(postcss@8.5.4) '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.4) - '@csstools/postcss-sign-functions': 1.1.3(postcss@8.5.4) - '@csstools/postcss-stepped-value-functions': 4.0.8(postcss@8.5.4) + '@csstools/postcss-sign-functions': 1.1.4(postcss@8.5.4) + '@csstools/postcss-stepped-value-functions': 4.0.9(postcss@8.5.4) '@csstools/postcss-text-decoration-shorthand': 4.0.2(postcss@8.5.4) - '@csstools/postcss-trigonometric-functions': 4.0.8(postcss@8.5.4) + '@csstools/postcss-trigonometric-functions': 4.0.9(postcss@8.5.4) '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.4) autoprefixer: 10.4.21(postcss@8.5.4) - browserslist: 4.24.5 + browserslist: 4.25.0 css-blank-pseudo: 7.0.1(postcss@8.5.4) css-has-pseudo: 7.0.2(postcss@8.5.4) css-prefers-color-scheme: 10.0.0(postcss@8.5.4) - cssdb: 8.2.5 + cssdb: 8.3.0 postcss: 8.5.4 postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.4) postcss-clamp: 4.1.0(postcss@8.5.4) - postcss-color-functional-notation: 7.0.9(postcss@8.5.4) + postcss-color-functional-notation: 7.0.10(postcss@8.5.4) postcss-color-hex-alpha: 10.0.0(postcss@8.5.4) postcss-color-rebeccapurple: 10.0.0(postcss@8.5.4) - postcss-custom-media: 11.0.5(postcss@8.5.4) - postcss-custom-properties: 14.0.4(postcss@8.5.4) - postcss-custom-selectors: 8.0.4(postcss@8.5.4) + postcss-custom-media: 11.0.6(postcss@8.5.4) + postcss-custom-properties: 14.0.6(postcss@8.5.4) + postcss-custom-selectors: 8.0.5(postcss@8.5.4) postcss-dir-pseudo-class: 9.0.1(postcss@8.5.4) - postcss-double-position-gradients: 6.0.1(postcss@8.5.4) + postcss-double-position-gradients: 6.0.2(postcss@8.5.4) postcss-focus-visible: 10.0.1(postcss@8.5.4) postcss-focus-within: 9.0.1(postcss@8.5.4) postcss-font-variant: 5.0.0(postcss@8.5.4) postcss-gap-properties: 6.0.0(postcss@8.5.4) postcss-image-set-function: 7.0.0(postcss@8.5.4) - postcss-lab-function: 7.0.9(postcss@8.5.4) + postcss-lab-function: 7.0.10(postcss@8.5.4) postcss-logical: 8.1.0(postcss@8.5.4) postcss-nesting: 13.0.1(postcss@8.5.4) postcss-opacity-percentage: 3.0.0(postcss@8.5.4) @@ -21134,7 +23970,7 @@ snapshots: postcss-reduce-initial@6.1.0(postcss@8.5.4): dependencies: - browserslist: 4.24.5 + browserslist: 4.23.0 caniuse-api: 3.0.0 postcss: 8.5.4 @@ -21152,7 +23988,7 @@ snapshots: postcss: 8.5.4 postcss-selector-parser: 7.1.0 - postcss-selector-parser@6.1.2: + postcss-selector-parser@6.0.16: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -21171,12 +24007,12 @@ snapshots: dependencies: postcss: 8.5.4 postcss-value-parser: 4.2.0 - svgo: 3.3.2 + svgo: 3.2.0 postcss-unique-selectors@6.0.4(postcss@8.5.4): dependencies: postcss: 8.5.4 - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 6.0.16 postcss-value-parser@4.2.0: {} @@ -21186,13 +24022,13 @@ snapshots: postcss@8.4.31: dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 postcss@8.4.47: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.7 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -21202,12 +24038,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preferred-pm@3.1.4: + preferred-pm@3.1.3: dependencies: find-up: 5.0.0 find-yarn-workspace-root2: 1.2.16 path-exists: 4.0.0 - which-pm: 2.2.0 + which-pm: 2.0.0 prelude-ls@1.2.1: {} @@ -21215,6 +24051,8 @@ snapshots: dependencies: prettier: 3.3.3 + prettier@3.2.5: {} + prettier@3.3.3: {} pretty-bytes@5.6.0: {} @@ -21234,13 +24072,13 @@ snapshots: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 18.3.1 + react-is: 18.2.0 pretty-format@30.0.0-beta.3: dependencies: '@jest/schemas': 30.0.0-beta.3 ansi-styles: 5.2.0 - react-is: 18.3.1 + react-is: 18.2.0 pretty-ms@7.0.1: dependencies: @@ -21256,7 +24094,7 @@ snapshots: prism-react-renderer@2.4.1(react@19.1.0): dependencies: - '@types/prismjs': 1.26.4 + '@types/prismjs': 1.26.3 clsx: 2.1.1 react: 19.1.0 @@ -21294,7 +24132,7 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 - property-information@6.5.0: {} + property-information@6.4.1: {} proto-list@1.2.4: {} @@ -21303,6 +24141,8 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + psl@1.9.0: {} + punycode@2.3.1: {} pupa@3.1.0: @@ -21313,9 +24153,19 @@ snapshots: pure-rand@7.0.1: {} + qs@6.11.0: + dependencies: + side-channel: 1.0.6 + + qs@6.12.0: + dependencies: + side-channel: 1.0.6 + qs@6.13.0: dependencies: - side-channel: 1.1.0 + side-channel: 1.0.6 + + querystringify@2.2.0: {} queue-microtask@1.2.3: {} @@ -21367,7 +24217,7 @@ snapshots: react-is@17.0.2: {} - react-is@18.3.1: {} + react-is@18.2.0: {} react-json-view-lite@2.4.1(react@19.1.0): dependencies: @@ -21375,7 +24225,7 @@ snapshots: react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@19.1.0))(webpack@5.99.9(esbuild@0.25.5)): dependencies: - '@babel/runtime': 7.27.1 + '@babel/runtime': 7.24.1 react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.1.0)' webpack: 5.99.9(esbuild@0.25.5) @@ -21390,13 +24240,13 @@ snapshots: react-router-config@5.1.1(react-router@5.3.4(react@19.1.0))(react@19.1.0): dependencies: - '@babel/runtime': 7.27.1 + '@babel/runtime': 7.24.1 react: 19.1.0 react-router: 5.3.4(react@19.1.0) react-router-dom@5.3.4(react@19.1.0): dependencies: - '@babel/runtime': 7.27.1 + '@babel/runtime': 7.24.1 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -21407,11 +24257,11 @@ snapshots: react-router@5.3.4(react@19.1.0): dependencies: - '@babel/runtime': 7.27.1 + '@babel/runtime': 7.24.1 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 - path-to-regexp: 1.9.0 + path-to-regexp: 1.8.0 prop-types: 15.8.1 react: 19.1.0 react-is: 16.13.1 @@ -21420,10 +24270,10 @@ snapshots: react-string-replace@1.1.1: {} - react-universal-interface@0.6.2(react@19.1.0)(tslib@2.8.1): + react-universal-interface@0.6.2(react@19.1.0)(tslib@2.6.2): dependencies: react: 19.1.0 - tslib: 2.8.1 + tslib: 2.6.2 react-use@17.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: @@ -21436,13 +24286,17 @@ snapshots: nano-css: 5.6.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-universal-interface: 0.6.2(react@19.1.0)(tslib@2.8.1) + react-universal-interface: 0.6.2(react@19.1.0)(tslib@2.6.2) resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 set-harmonic-interval: 1.0.1 throttle-debounce: 3.0.1 ts-easing: 0.2.0 - tslib: 2.8.1 + tslib: 2.6.2 + + react@18.2.0: + dependencies: + loose-envify: 1.4.0 react@19.1.0: {} @@ -21464,13 +24318,13 @@ snapshots: read-package-json-fast@3.0.2: dependencies: - json-parse-even-better-errors: 3.0.2 + json-parse-even-better-errors: 3.0.1 npm-normalize-package-bin: 3.0.1 read-package-json@6.0.4: dependencies: - glob: 10.4.5 - json-parse-even-better-errors: 3.0.2 + glob: 10.3.10 + json-parse-even-better-errors: 3.0.1 normalize-package-data: 5.0.0 npm-normalize-package-bin: 3.0.1 @@ -21557,15 +24411,30 @@ snapshots: indent-string: 5.0.0 strip-indent: 4.0.0 + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + reflect.getprototypeof@1.0.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.24.0 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.3.0 globalthis: 1.0.4 - which-builtin-type: 1.1.4 + which-builtin-type: 1.1.3 + + regenerate-unicode-properties@10.1.1: + dependencies: + regenerate: 1.4.2 regenerate-unicode-properties@10.2.0: dependencies: @@ -21573,15 +24442,39 @@ snapshots: regenerate@1.4.2: {} + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.24.1 + regexp-tree@0.1.27: {} - regexp.prototype.flags@1.5.3: + regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + regexpu-core@5.3.2: + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + regexpu-core@6.2.0: dependencies: regenerate: 1.4.2 @@ -21589,11 +24482,11 @@ snapshots: regjsgen: 0.8.0 regjsparser: 0.12.0 unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 + unicode-match-property-value-ecmascript: 2.1.0 registry-auth-token@5.0.2: dependencies: - '@pnpm/npm-conf': 2.3.1 + '@pnpm/npm-conf': 2.2.2 registry-url@6.0.1: dependencies: @@ -21609,11 +24502,15 @@ snapshots: dependencies: jsesc: 3.0.2 + regjsparser@0.9.1: + dependencies: + jsesc: 0.5.0 + rehype-raw@7.0.0: dependencies: '@types/hast': 3.0.4 - hast-util-raw: 9.0.4 - vfile: 6.0.3 + hast-util-raw: 9.0.2 + vfile: 6.0.1 relateurl@0.2.7: {} @@ -21621,7 +24518,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 mdast-util-directive: 3.0.0 - micromark-extension-directive: 3.0.2 + micromark-extension-directive: 3.0.0 unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -21629,7 +24526,7 @@ snapshots: remark-emoji@4.0.1: dependencies: '@types/mdast': 4.0.4 - emoticon: 4.1.0 + emoticon: 4.0.1 mdast-util-find-and-replace: 3.0.2 node-emoji: 2.1.3 unified: 11.0.5 @@ -21664,19 +24561,19 @@ snapshots: remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 micromark-util-types: 2.0.0 unified: 11.0.5 transitivePeerDependencies: - supports-color - remark-rehype@11.1.1: + remark-rehype@11.1.0: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.1.0 unified: 11.0.5 - vfile: 6.0.3 + vfile: 6.0.1 remark-stringify@11.0.0: dependencies: @@ -21726,13 +24623,13 @@ snapshots: resolve@1.22.8: dependencies: - is-core-module: 2.15.1 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 resolve@2.0.0-next.5: dependencies: - is-core-module: 2.15.1 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -21768,12 +24665,12 @@ snapshots: rtl-css-js@1.16.1: dependencies: - '@babel/runtime': 7.27.1 + '@babel/runtime': 7.24.1 - rtlcss@4.3.0: + rtlcss@4.1.1: dependencies: - escalade: 3.2.0 - picocolors: 1.1.1 + escalade: 3.1.2 + picocolors: 1.0.0 postcss: 8.5.4 strip-json-comments: 3.1.1 @@ -21787,7 +24684,7 @@ snapshots: rxjs@7.8.1: dependencies: - tslib: 2.8.1 + tslib: 2.6.2 safe-array-concat@1.1.2: dependencies: @@ -21796,6 +24693,14 @@ snapshots: has-symbols: 1.0.3 isarray: 2.0.5 + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} @@ -21806,11 +24711,10 @@ snapshots: execa: 5.1.1 path-name: 1.0.0 - safe-execa@0.1.4: + safe-push-apply@1.0.0: dependencies: - '@zkochan/which': 2.0.3 - execa: 5.1.1 - path-name: 1.0.0 + es-errors: 1.3.0 + isarray: 2.0.5 safe-regex-test@1.0.3: dependencies: @@ -21818,11 +24722,17 @@ snapshots: es-errors: 1.3.0 is-regex: 1.1.4 + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + safe-stable-stringify@2.5.0: {} safer-buffer@2.1.2: {} - sax@1.4.1: {} + sax@1.3.0: {} saxes@6.0.0: dependencies: @@ -21838,18 +24748,25 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) + schema-utils@4.2.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + ajv-keywords: 5.1.0(ajv@8.12.0) + schema-utils@4.3.2: dependencies: '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + ajv-keywords: 5.1.0(ajv@8.12.0) scoped-regex@2.1.0: {} screenfull@5.2.0: {} - search-insights@2.17.2: {} + search-insights@2.13.0: {} section-matter@1.0.0: dependencies: @@ -21873,8 +24790,30 @@ snapshots: semver@6.3.1: {} + semver@7.6.0: + dependencies: + lru-cache: 6.0.0 + semver@7.7.2: {} + send@0.18.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + send@0.19.0: dependencies: debug: 2.6.9 @@ -21919,6 +24858,15 @@ snapshots: transitivePeerDependencies: - supports-color + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + serve-static@1.16.2: dependencies: encodeurl: 2.0.0 @@ -21948,6 +24896,12 @@ snapshots: set-harmonic-interval@1.0.1: {} + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + setimmediate@1.0.5: {} setprototypeof@1.1.0: {} @@ -21995,7 +24949,7 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.3: {} + shell-quote@1.8.1: {} shelljs@0.8.5: dependencies: @@ -22003,6 +24957,10 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 + shiki@1.4.0: + dependencies: + '@shikijs/core': 1.4.0 + side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -22028,7 +24986,7 @@ snapshots: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.2 + object-inspect: 1.13.1 side-channel@1.1.0: dependencies: @@ -22066,18 +25024,18 @@ snapshots: sirv@2.0.4: dependencies: - '@polka/url': 1.0.0-next.28 + '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 totalist: 3.0.1 sisteransi@1.0.5: {} - sitemap@7.1.2: + sitemap@7.1.1: dependencies: '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.4.1 + sax: 1.3.0 skin-tone@2.0.0: dependencies: @@ -22100,7 +25058,7 @@ snapshots: snake-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.8.1 + tslib: 2.6.2 sockjs@0.3.24: dependencies: @@ -22111,28 +25069,33 @@ snapshots: socks-proxy-agent@6.2.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1(supports-color@8.1.1) - socks: 2.8.3 + debug: 4.3.4 + socks: 2.8.1 transitivePeerDependencies: - supports-color socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.4.1(supports-color@8.1.1) - socks: 2.8.3 + debug: 4.3.4 + socks: 2.8.1 transitivePeerDependencies: - supports-color socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.3 - debug: 4.4.1(supports-color@8.1.1) - socks: 2.8.3 + debug: 4.3.4 + socks: 2.8.4 transitivePeerDependencies: - supports-color - socks@2.8.3: + socks@2.8.1: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + + socks@2.8.4: dependencies: ip-address: 9.0.5 smart-buffer: 4.2.0 @@ -22143,10 +25106,12 @@ snapshots: dependencies: is-plain-obj: 2.1.0 - sort-keys@5.1.0: + sort-keys@5.0.0: dependencies: is-plain-obj: 4.1.0 + source-map-js@1.2.0: {} + source-map-js@1.2.1: {} source-map-support@0.5.13: @@ -22172,20 +25137,20 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.20 + spdx-license-ids: 3.0.17 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.20 + spdx-license-ids: 3.0.17 - spdx-license-ids@3.0.20: {} + spdx-license-ids@3.0.17: {} spdy-transport@3.0.0: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -22196,7 +25161,7 @@ snapshots: spdy@4.0.2: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -22214,9 +25179,9 @@ snapshots: srcset@4.0.0: {} - ssri@10.0.6: + ssri@10.0.5: dependencies: - minipass: 7.1.2 + minipass: 7.0.4 ssri@8.0.1: dependencies: @@ -22226,6 +25191,8 @@ snapshots: dependencies: minipass: 3.3.6 + stable-hash-x@0.1.1: {} + stable-hash@0.0.5: {} stack-generator@2.0.10: @@ -22268,6 +25235,11 @@ snapshots: dependencies: internal-slot: 1.0.7 + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + streamsearch@1.1.0: {} string-length@4.0.2: @@ -22297,33 +25269,43 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.24.0 string.prototype.matchall@4.0.11: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.2 es-errors: 1.3.0 es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 gopd: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.3 + regexp.prototype.flags: 1.5.2 set-function-name: 2.0.2 side-channel: 1.0.6 string.prototype.repeat@1.0.0: dependencies: define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.2 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.2 es-object-atoms: 1.0.0 string.prototype.trimend@1.0.8: @@ -22332,6 +25314,13 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.7 @@ -22346,7 +25335,7 @@ snapshots: dependencies: safe-buffer: 5.2.1 - stringify-entities@4.0.4: + stringify-entities@4.0.3: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 @@ -22363,7 +25352,7 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.0.1 strip-bom-buf@1.0.0: dependencies: @@ -22410,35 +25399,39 @@ snapshots: dependencies: inline-style-parser: 0.1.1 - style-to-object@1.0.8: + style-to-object@1.0.5: dependencies: - inline-style-parser: 0.2.4 + inline-style-parser: 0.2.2 - styled-jsx@5.1.6(@babel/core@7.27.1)(react@19.1.0): + styled-jsx@5.1.6(@babel/core@7.24.3)(react@19.1.0): dependencies: client-only: 0.0.1 react: 19.1.0 optionalDependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 stylehacks@6.1.1(postcss@8.5.4): dependencies: - browserslist: 4.24.5 + browserslist: 4.23.0 postcss: 8.5.4 - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 6.0.16 - stylis@4.3.4: {} + stylis@4.3.1: {} sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.4.5 + glob: 10.3.10 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 ts-interface-checker: 0.1.13 + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -22451,7 +25444,7 @@ snapshots: svg-parser@2.0.4: {} - svgo@3.3.2: + svgo@3.2.0: dependencies: '@trysound/sax': 0.2.0 commander: 7.2.0 @@ -22459,7 +25452,7 @@ snapshots: css-tree: 2.3.1 css-what: 6.1.0 csso: 5.0.5 - picocolors: 1.1.1 + picocolors: 1.0.0 symbol-tree@3.2.4: {} @@ -22469,7 +25462,7 @@ snapshots: chalk-template: 1.1.0 commander: 13.1.0 cosmiconfig: 9.0.0(typescript@5.8.3) - effect: 3.15.2 + effect: 3.16.5 enquirer: 2.4.1 fast-check: 3.23.2 globby: 14.1.0 @@ -22494,21 +25487,21 @@ snapshots: chokidar: 3.6.0 didyoumean: 1.2.2 dlv: 1.1.3 - fast-glob: 3.3.3 + fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.21.6 + jiti: 1.21.0 lilconfig: 2.1.0 - micromatch: 4.0.8 + micromatch: 4.0.5 normalize-path: 3.0.0 object-hash: 3.0.0 - picocolors: 1.1.1 + picocolors: 1.0.0 postcss: 8.5.4 postcss-import: 15.1.0(postcss@8.5.4) postcss-js: 4.0.1(postcss@8.5.4) postcss-load-config: 4.0.2(postcss@8.5.4)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)) - postcss-nested: 6.2.0(postcss@8.5.4) - postcss-selector-parser: 6.1.2 + postcss-nested: 6.0.1(postcss@8.5.4) + postcss-selector-parser: 6.0.16 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: @@ -22544,7 +25537,7 @@ snapshots: jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - terser: 5.35.0 + terser: 5.41.0 webpack: 5.99.9(esbuild@0.25.5) optionalDependencies: esbuild: 0.25.5 @@ -22555,15 +25548,22 @@ snapshots: jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - terser: 5.35.0 + terser: 5.41.0 webpack: 5.99.9(esbuild@0.25.5)(webpack-cli@6.0.1) optionalDependencies: esbuild: 0.25.5 - terser@5.35.0: + terser@5.29.2: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.14.1 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + + terser@5.41.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -22587,10 +25587,6 @@ snapshots: dependencies: any-promise: 1.3.0 - thingies@1.21.0(tslib@2.8.1): - dependencies: - tslib: 2.8.1 - throttle-debounce@3.0.1: {} through2@4.0.2: @@ -22611,7 +25607,7 @@ snapshots: tinyglobby@0.2.14: dependencies: - fdir: 6.4.4(picomatch@4.0.2) + fdir: 6.4.5(picomatch@4.0.2) picomatch: 4.0.2 tinypool@1.1.0: {} @@ -22628,6 +25624,8 @@ snapshots: tmpl@1.0.5: {} + to-fast-properties@2.0.0: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -22638,19 +25636,26 @@ snapshots: totalist@3.0.1: {} + tough-cookie@4.1.3: + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + tough-cookie@5.1.2: dependencies: tldts: 6.1.86 tr46@0.0.3: {} - tr46@5.1.1: + tr46@3.0.0: dependencies: punycode: 2.3.1 - tree-dump@1.0.3(tslib@2.8.1): + tr46@5.1.1: dependencies: - tslib: 2.8.1 + punycode: 2.3.1 treeverse@1.0.4: {} @@ -22675,7 +25680,25 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.5)(jest@29.7.0(@types/node@20.17.50)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)))(typescript@5.8.3): + ts-jest@29.1.2(@babel/core@7.27.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.5)(jest@29.7.0(@types/node@20.17.50)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)))(typescript@5.8.3): + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@20.17.50)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.7.2 + typescript: 5.8.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.27.4 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.4) + esbuild: 0.25.5 + + ts-jest@29.3.4(@babel/core@7.24.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.3))(esbuild@0.25.5)(jest@29.7.0(@types/node@20.17.50)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -22690,17 +25713,17 @@ snapshots: typescript: 5.8.3 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.24.3 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.27.1) + babel-jest: 29.7.0(@babel/core@7.24.3) esbuild: 0.25.5 ts-loader@9.5.2(typescript@5.8.3)(webpack@5.99.9): dependencies: chalk: 4.1.2 - enhanced-resolve: 5.17.1 - micromatch: 4.0.8 + enhanced-resolve: 5.18.1 + micromatch: 4.0.5 semver: 7.7.2 source-map: 0.7.4 typescript: 5.8.3 @@ -22709,13 +25732,13 @@ snapshots: ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 + '@tsconfig/node10': 1.0.10 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 20.17.50 - acorn: 8.14.1 - acorn-walk: 8.3.4 + acorn: 8.11.3 + acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 @@ -22733,12 +25756,22 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tslib@2.6.2: {} + tslib@2.8.1: {} + tsx@3.12.7: + dependencies: + '@esbuild-kit/cjs-loader': 2.4.4 + '@esbuild-kit/core-utils': 3.3.2 + '@esbuild-kit/esm-loader': 2.6.5 + optionalDependencies: + fsevents: 2.3.3 + tuf-js@1.1.7: dependencies: '@tufjs/models': 1.0.4 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 make-fetch-happen: 11.1.1 transitivePeerDependencies: - supports-color @@ -22778,6 +25811,12 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.13 + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + typed-array-byte-length@1.0.1: dependencies: call-bind: 1.0.7 @@ -22786,6 +25825,14 @@ snapshots: has-proto: 1.0.3 is-typed-array: 1.1.13 + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + typed-array-byte-offset@1.0.2: dependencies: available-typed-arrays: 1.0.7 @@ -22795,6 +25842,16 @@ snapshots: has-proto: 1.0.3 is-typed-array: 1.1.13 + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + typed-array-length@1.0.6: dependencies: call-bind: 1.0.7 @@ -22804,6 +25861,15 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.0.0 + reflect.getprototypeof: 1.0.6 + typedarray-to-buffer@3.1.5: dependencies: is-typedarray: 1.0.0 @@ -22817,18 +25883,25 @@ snapshots: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.0.2 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + undici-types@6.19.8: {} - unicode-canonical-property-names-ecmascript@2.0.1: {} + unicode-canonical-property-names-ecmascript@2.0.0: {} unicode-emoji-modifier-base@1.0.0: {} unicode-match-property-ecmascript@2.0.0: dependencies: - unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 - unicode-match-property-value-ecmascript@2.2.0: {} + unicode-match-property-value-ecmascript@2.1.0: {} unicode-property-aliases-ecmascript@2.1.0: {} @@ -22836,17 +25909,17 @@ snapshots: unified@11.0.5: dependencies: - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 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 + vfile: 6.0.1 union@0.5.0: dependencies: - qs: 6.13.0 + qs: 6.12.0 unique-filename@1.1.1: dependencies: @@ -22882,71 +25955,84 @@ snapshots: unist-util-is@6.0.0: dependencies: - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 unist-util-position-from-estree@2.0.0: dependencies: - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 unist-util-position@5.0.0: dependencies: - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 + + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.2 + unist-util-visit: 5.0.0 unist-util-stringify-position@4.0.0: dependencies: - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 unist-util-visit-parents@6.0.1: dependencies: - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 unist-util-is: 6.0.0 unist-util-visit@5.0.0: dependencies: - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 universal-user-agent@6.0.1: {} + universalify@0.2.0: {} + universalify@2.0.1: {} unpipe@1.0.0: {} - unrs-resolver@1.7.2: + unrs-resolver@1.7.11: dependencies: napi-postinstall: 0.2.4 optionalDependencies: - '@unrs/resolver-binding-darwin-arm64': 1.7.2 - '@unrs/resolver-binding-darwin-x64': 1.7.2 - '@unrs/resolver-binding-freebsd-x64': 1.7.2 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.7.2 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.7.2 - '@unrs/resolver-binding-linux-arm64-gnu': 1.7.2 - '@unrs/resolver-binding-linux-arm64-musl': 1.7.2 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.7.2 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.7.2 - '@unrs/resolver-binding-linux-riscv64-musl': 1.7.2 - '@unrs/resolver-binding-linux-s390x-gnu': 1.7.2 - '@unrs/resolver-binding-linux-x64-gnu': 1.7.2 - '@unrs/resolver-binding-linux-x64-musl': 1.7.2 - '@unrs/resolver-binding-wasm32-wasi': 1.7.2 - '@unrs/resolver-binding-win32-arm64-msvc': 1.7.2 - '@unrs/resolver-binding-win32-ia32-msvc': 1.7.2 - '@unrs/resolver-binding-win32-x64-msvc': 1.7.2 + '@unrs/resolver-binding-darwin-arm64': 1.7.11 + '@unrs/resolver-binding-darwin-x64': 1.7.11 + '@unrs/resolver-binding-freebsd-x64': 1.7.11 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.7.11 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.7.11 + '@unrs/resolver-binding-linux-arm64-gnu': 1.7.11 + '@unrs/resolver-binding-linux-arm64-musl': 1.7.11 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.7.11 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.7.11 + '@unrs/resolver-binding-linux-riscv64-musl': 1.7.11 + '@unrs/resolver-binding-linux-s390x-gnu': 1.7.11 + '@unrs/resolver-binding-linux-x64-gnu': 1.7.11 + '@unrs/resolver-binding-linux-x64-musl': 1.7.11 + '@unrs/resolver-binding-wasm32-wasi': 1.7.11 + '@unrs/resolver-binding-win32-arm64-msvc': 1.7.11 + '@unrs/resolver-binding-win32-ia32-msvc': 1.7.11 + '@unrs/resolver-binding-win32-x64-msvc': 1.7.11 untildify@4.0.0: {} - update-browserslist-db@1.1.3(browserslist@4.24.5): + update-browserslist-db@1.0.13(browserslist@4.23.0): dependencies: - browserslist: 4.24.5 + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.0 + + update-browserslist-db@1.1.3(browserslist@4.25.0): + dependencies: + browserslist: 4.25.0 escalade: 3.2.0 picocolors: 1.1.1 update-notifier@6.0.2: dependencies: boxen: 7.1.1 - chalk: 5.4.1 + chalk: 5.3.0 configstore: 6.0.0 has-yarn: 3.0.0 import-lazy: 4.0.0 @@ -22975,6 +26061,11 @@ snapshots: optionalDependencies: file-loader: 6.2.0(webpack@5.99.9(esbuild@0.25.5)) + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + util-deprecate@1.0.2: {} utila@0.4.0: {} @@ -22989,7 +26080,7 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - v8-to-istanbul@9.3.0: + v8-to-istanbul@9.2.0: dependencies: '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.6 @@ -23006,29 +26097,28 @@ snapshots: validate-npm-package-name@5.0.0: dependencies: - builtins: 5.1.0 + builtins: 5.0.1 - validate-npm-package-name@5.0.1: {} - - validate-npm-package-name@6.0.0: {} + validate-npm-package-name@6.0.1: {} value-equal@1.0.1: {} vary@1.1.2: {} - vfile-location@5.0.3: + vfile-location@5.0.2: dependencies: - '@types/unist': 3.0.3 - vfile: 6.0.3 + '@types/unist': 3.0.2 + vfile: 6.0.1 vfile-message@4.0.2: dependencies: - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 - vfile@6.0.3: + vfile@6.0.1: dependencies: - '@types/unist': 3.0.3 + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 vinyl-file@3.0.0: @@ -23050,6 +26140,10 @@ snapshots: vscode-uri@3.1.0: {} + w3c-xmlserializer@4.0.0: + dependencies: + xml-name-validator: 4.0.0 + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 @@ -23060,7 +26154,7 @@ snapshots: dependencies: makeerror: 1.0.12 - watchpack@2.4.2: + watchpack@2.4.1: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 @@ -23082,17 +26176,17 @@ snapshots: webpack-bundle-analyzer@4.10.2: dependencies: '@discoveryjs/json-ext': 0.5.7 - acorn: 8.14.1 - acorn-walk: 8.3.4 + acorn: 8.11.3 + acorn-walk: 8.3.2 commander: 7.2.0 debounce: 1.2.1 escape-string-regexp: 4.0.0 gzip-size: 6.0.0 html-escaper: 2.0.2 opener: 1.5.2 - picocolors: 1.1.1 + picocolors: 1.0.0 sirv: 2.0.4 - ws: 7.5.10 + ws: 7.5.9 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -23108,7 +26202,7 @@ snapshots: cross-spawn: 7.0.6 envinfo: 7.14.0 fastest-levenshtein: 1.0.16 - import-local: 3.2.0 + import-local: 3.1.0 interpret: 3.1.1 rechoir: 0.8.0 webpack: 5.99.9(esbuild@0.25.5)(webpack-cli@6.0.1) @@ -23122,17 +26216,17 @@ snapshots: memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 - schema-utils: 4.3.2 + schema-utils: 4.2.0 webpack: 5.99.9(esbuild@0.25.5) webpack-dev-middleware@7.4.2(webpack@5.99.9): dependencies: colorette: 2.0.20 - memfs: 4.17.2 + memfs: 4.8.0 mime-types: 2.1.35 on-finished: 2.4.1 range-parser: 1.2.1 - schema-utils: 4.3.2 + schema-utils: 4.2.0 optionalDependencies: webpack: 5.99.9(esbuild@0.25.5)(webpack-cli@6.0.1) @@ -23140,34 +26234,34 @@ snapshots: dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.22 + '@types/express': 4.17.21 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 + '@types/serve-static': 1.15.5 '@types/sockjs': 0.3.36 - '@types/ws': 8.18.1 + '@types/ws': 8.5.10 ansi-html-community: 0.0.8 - bonjour-service: 1.3.0 + bonjour-service: 1.2.1 chokidar: 3.6.0 colorette: 2.0.20 - compression: 1.8.0 + compression: 1.7.4 connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 - express: 4.21.2 + express: 4.19.2 graceful-fs: 4.2.11 html-entities: 2.5.2 - http-proxy-middleware: 2.0.9(@types/express@4.17.22) - ipaddr.js: 2.2.0 - launch-editor: 2.10.0 + http-proxy-middleware: 2.0.6(@types/express@4.17.21) + ipaddr.js: 2.1.0 + launch-editor: 2.6.1 open: 8.4.2 p-retry: 4.6.2 rimraf: 3.0.2 - schema-utils: 4.3.2 + schema-utils: 4.2.0 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 webpack-dev-middleware: 5.3.4(webpack@5.99.9(esbuild@0.25.5)) - ws: 8.18.2 + ws: 8.16.0 optionalDependencies: webpack: 5.99.9(esbuild@0.25.5) transitivePeerDependencies: @@ -23180,26 +26274,26 @@ snapshots: dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.22 - '@types/express-serve-static-core': 4.19.6 + '@types/express': 4.17.21 + '@types/express-serve-static-core': 4.17.43 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 + '@types/serve-static': 1.15.5 '@types/sockjs': 0.3.36 - '@types/ws': 8.18.1 + '@types/ws': 8.5.10 ansi-html-community: 0.0.8 - bonjour-service: 1.3.0 + bonjour-service: 1.2.1 chokidar: 3.6.0 colorette: 2.0.20 - compression: 1.8.0 + compression: 1.7.4 connect-history-api-fallback: 2.0.0 express: 4.21.2 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.22) - ipaddr.js: 2.2.0 - launch-editor: 2.10.0 - open: 10.1.2 - p-retry: 6.2.1 - schema-utils: 4.3.2 + http-proxy-middleware: 2.0.9(@types/express@4.17.21) + ipaddr.js: 2.1.0 + launch-editor: 2.6.1 + open: 10.1.0 + p-retry: 6.2.0 + schema-utils: 4.2.0 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 @@ -23232,16 +26326,16 @@ snapshots: webpack@5.99.9(esbuild@0.25.5): dependencies: '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.14.1 - browserslist: 4.24.5 + acorn: 8.15.0 + browserslist: 4.25.0 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.4 + enhanced-resolve: 5.18.1 + es-module-lexer: 1.5.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -23253,7 +26347,7 @@ snapshots: schema-utils: 4.3.2 tapable: 2.2.1 terser-webpack-plugin: 5.3.14(esbuild@0.25.5)(webpack@5.99.9(esbuild@0.25.5)) - watchpack: 2.4.2 + watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -23263,16 +26357,16 @@ snapshots: webpack@5.99.9(esbuild@0.25.5)(webpack-cli@6.0.1): dependencies: '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.14.1 - browserslist: 4.24.5 + acorn: 8.15.0 + browserslist: 4.25.0 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.4 + enhanced-resolve: 5.18.1 + es-module-lexer: 1.5.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -23284,7 +26378,7 @@ snapshots: schema-utils: 4.3.2 tapable: 2.2.1 terser-webpack-plugin: 5.3.14(esbuild@0.25.5)(webpack@5.99.9) - watchpack: 2.4.2 + watchpack: 2.4.1 webpack-sources: 3.2.3 optionalDependencies: webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.99.9) @@ -23307,7 +26401,7 @@ snapshots: websocket-driver@0.7.4: dependencies: - http-parser-js: 0.5.10 + http-parser-js: 0.5.8 safe-buffer: 5.2.1 websocket-extensions: 0.1.4 @@ -23321,8 +26415,15 @@ snapshots: dependencies: iconv-lite: 0.6.3 + whatwg-mimetype@3.0.0: {} + whatwg-mimetype@4.0.0: {} + whatwg-url@11.0.0: + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + whatwg-url@14.2.0: dependencies: tr46: 5.1.1 @@ -23341,20 +26442,44 @@ snapshots: is-string: 1.0.7 is-symbol: 1.0.4 - which-builtin-type@1.1.4: + which-boxed-primitive@1.1.1: dependencies: - function.prototype.name: 1.1.6 + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.1.3: + dependencies: + function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.0.5 is-finalizationregistry: 1.0.2 is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 isarray: 2.0.5 which-boxed-primitive: 1.0.2 which-collection: 1.0.2 - which-typed-array: 1.1.15 + which-typed-array: 1.1.19 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.0.10 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 which-collection@1.0.2: dependencies: @@ -23363,7 +26488,7 @@ snapshots: is-weakmap: 2.0.2 is-weakset: 2.0.3 - which-pm@2.2.0: + which-pm@2.0.0: dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 @@ -23376,6 +26501,16 @@ snapshots: gopd: 1.0.1 has-tostringtag: 1.0.2 + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -23398,27 +26533,25 @@ snapshots: wildcard@2.0.1: {} - winston-transport@4.8.0: + winston-transport@4.9.0: dependencies: - logform: 2.6.1 - readable-stream: 4.5.2 + logform: 2.7.0 + readable-stream: 3.6.2 triple-beam: 1.4.1 winston@3.14.1: dependencies: '@colors/colors': 1.6.0 '@dabh/diagnostics': 2.0.3 - async: 3.2.6 + async: 3.2.5 is-stream: 2.0.1 - logform: 2.6.1 + logform: 2.7.0 one-time: 1.0.0 readable-stream: 3.6.2 safe-stable-stringify: 2.5.0 stack-trace: 0.0.10 triple-beam: 1.4.1 - winston-transport: 4.8.0 - - word-wrap@1.2.5: {} + winston-transport: 4.9.0 workerpool@6.5.1: {} @@ -23463,7 +26596,7 @@ snapshots: dependencies: detect-indent: 7.0.1 is-plain-obj: 4.1.0 - sort-keys: 5.1.0 + sort-keys: 5.0.0 write-file-atomic: 3.0.3 write-yaml-file@5.0.0: @@ -23471,9 +26604,9 @@ snapshots: js-yaml: 4.1.0 write-file-atomic: 5.0.1 - ws@7.5.10: {} + ws@7.5.9: {} - ws@8.18.0: {} + ws@8.16.0: {} ws@8.18.2: {} @@ -23481,7 +26614,9 @@ snapshots: xml-js@1.6.11: dependencies: - sax: 1.4.1 + sax: 1.3.0 + + xml-name-validator@4.0.0: {} xml-name-validator@5.0.0: {} @@ -23495,6 +26630,8 @@ snapshots: yallist@5.0.0: {} + yaml@2.2.1: {} + yaml@2.6.0: {} yargs-parser@21.1.1: {} @@ -23509,7 +26646,7 @@ snapshots: yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.2.0 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -23526,7 +26663,7 @@ snapshots: cli-table: 0.3.11 commander: 7.1.0 dateformat: 4.6.3 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 diff: 5.2.0 error: 10.4.0 escape-string-regexp: 4.0.0 @@ -23546,7 +26683,7 @@ snapshots: p-queue: 6.6.2 p-transform: 1.3.0 pacote: 12.0.3 - preferred-pm: 3.1.4 + preferred-pm: 3.1.3 pretty-bytes: 5.6.0 readable-stream: 4.5.2 semver: 7.7.2 @@ -23563,7 +26700,7 @@ snapshots: dependencies: chalk: 4.1.2 dargs: 7.0.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.3.4 execa: 5.1.1 github-username: 6.0.0(encoding@0.1.13) lodash: 4.17.21 @@ -23588,7 +26725,7 @@ snapshots: yocto-queue@0.1.0: {} - yocto-queue@1.1.1: {} + yocto-queue@1.0.0: {} zod@3.25.50: {} From 0e5b2e544fc94d37fec4f5d273ea7dc8c69423c0 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 22:05:58 -0700 Subject: [PATCH 075/211] chore: Refresh pnpm-lock.yaml during rebase --- pnpm-lock.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6599c74311..f121f7cb3c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16588,7 +16588,7 @@ snapshots: '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.27.6 invariant: 2.2.4 prop-types: 15.8.1 react: 19.1.0 @@ -24446,7 +24446,7 @@ snapshots: regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.27.6 regexp-tree@0.1.27: {} From 0a20994bc5c7b03e218c3992e6091f974b803054 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 2 Oct 2024 23:13:39 -0700 Subject: [PATCH 076/211] chore: Run `pnpm -w fix:meta` for test-case-component --- packages/cursorless-org/tsconfig.json | 3 +++ packages/test-case-component/tsconfig.json | 4 +--- tsconfig.json | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/cursorless-org/tsconfig.json b/packages/cursorless-org/tsconfig.json index d31f1aa8f0..3d03265117 100644 --- a/packages/cursorless-org/tsconfig.json +++ b/packages/cursorless-org/tsconfig.json @@ -24,6 +24,9 @@ { "path": "../cheatsheet" }, + { + "path": "../cursorless-engine" + }, { "path": "../test-case-component" } diff --git a/packages/test-case-component/tsconfig.json b/packages/test-case-component/tsconfig.json index a9ee64473b..e73c1b1ccc 100644 --- a/packages/test-case-component/tsconfig.json +++ b/packages/test-case-component/tsconfig.json @@ -1,8 +1,6 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "rootDir": "src", - "outDir": "out", "jsx": "react-jsx", "esModuleInterop": true, "skipLibCheck": true, @@ -11,8 +9,8 @@ "references": [], "include": [ "src/**/*.ts", - "src/**/*.tsx", "src/**/*.json", + "src/**/*.tsx", "../../typings/**/*.d.ts" ] } diff --git a/tsconfig.json b/tsconfig.json index 48ec0aa257..1bdd00ddfb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -66,10 +66,10 @@ "path": "./packages/sentence-parser" }, { - "path": "./packages/test-case-recorder" + "path": "./packages/test-case-component" }, { - "path": "./packages/test-case-component" + "path": "./packages/test-case-recorder" }, { "path": "./packages/test-harness" From 3b5fb11412309275892739ecfe060a023d308d7e Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 2 Oct 2024 23:15:59 -0700 Subject: [PATCH 077/211] chore: Resolve import issue with importing "@cursorless/common" --- packages/test-case-component/package.json | 2 ++ pnpm-lock.yaml | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index 3dce822d09..0bc580aa47 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -20,6 +20,8 @@ "author": "", "license": "MIT", "dependencies": { + "@cursorless/common": "workspace:*", + "@cursorless/node-common": "workspace:*", "fs-extra": "11.2.0", "js-yaml": "^4.1.0", "prettier": "3.2.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f121f7cb3c..82c46a3869 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -913,6 +913,12 @@ importers: packages/test-case-component: dependencies: + '@cursorless/common': + specifier: workspace:* + version: link:../common + '@cursorless/node-common': + specifier: workspace:* + version: link:../node-common fs-extra: specifier: 11.2.0 version: 11.2.0 From 0b1de4ce8957e19b6eb6518cc02962a9875a323e Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 2 Oct 2024 23:17:39 -0700 Subject: [PATCH 078/211] chore: import { TestCaseFixture } --> import type { TestCaseFixture } --- packages/test-case-component/src/test-case-component.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/test-case-component.tsx b/packages/test-case-component/src/test-case-component.tsx index c15c03fe18..df8a46b2f4 100644 --- a/packages/test-case-component/src/test-case-component.tsx +++ b/packages/test-case-component/src/test-case-component.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import { ShikiComponent } from "./components/component-shiki"; import "./shiki.css"; import "./styles.css"; -import { TestCaseFixture } from "@cursorless/common"; +import type { TestCaseFixture } from "@cursorless/common"; export const TestCaseComponentPage: React.FC<{ data: TestCaseFixture[];}> = ({ data, From ce199ab52fb4639cbec073307c190445ee58daa7 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 2 Oct 2024 23:39:20 -0700 Subject: [PATCH 079/211] feat: Small styling tweaks for ShikiComponent in styles.css --- packages/test-case-component/src/styles.css | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/test-case-component/src/styles.css b/packages/test-case-component/src/styles.css index 58a23abe72..e8182df174 100644 --- a/packages/test-case-component/src/styles.css +++ b/packages/test-case-component/src/styles.css @@ -1,5 +1,5 @@ :root { - --line-height: 20px; + --line-height: 16px; --color-border: #0003; } @@ -15,12 +15,11 @@ body { /* background-image: radial-gradient(at 30% 89%, hsla(220,76%,68%,1) 0px, transparent 50%), radial-gradient(at 35% 0%, hsla(242,68%,61%,1) 0px, transparent 50%), radial-gradient(at 93% 46%, hsla(129,87%,73%,1) 0px, transparent 50%), radial-gradient(at 23% 49%, hsla(50,77%,67%,1) 0px, transparent 50%), radial-gradient(at 17% 27%, hsla(331,64%,60%,1) 0px, transparent 50%), radial-gradient(at 79% 30%, hsla(151,61%,77%,1) 0px, transparent 50%), radial-gradient(at 26% 40%, hsla(36,65%,63%,1) 0px, transparent 50%); */ } -body, pre.shiki, pre.shiki span { line-height: var(--line-height); min-height: var(--line-height); - font-size: 14px; + font-size: 20px; } .wrapper { @@ -96,10 +95,10 @@ pre.shiki { &::after { content: ""; display: inline; - top: 0px; + /* top: 0px; */ left: 50%; position: absolute; - transform: translate(-50%, -25%); + transform: translate(-50%, -100%); background-color: grey; mask-repeat: no-repeat; width: 10px; From 56df0086dd2cf5e0c20a92b0fb4813e43709af72 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 2 Oct 2024 23:47:23 -0700 Subject: [PATCH 080/211] wip: Stop using `upgrade` for the moment --- packages/cursorless-org/src/pages/component-sheet.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 59379e851c..035dca1dac 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -7,7 +7,7 @@ import { TestCaseComponentPage, loadFixture, } from "@cursorless/test-case-component"; -import { upgrade } from "@cursorless/cursorless-engine" +// import { upgrade } from "@cursorless/cursorless-engine" import { cheatsheetBodyClasses } from "@cursorless/cheatsheet"; @@ -66,8 +66,8 @@ export async function getStaticProps() { const data = ( await Promise.all( [...dataActions, ...dataDecorations].map((val) => { - const upgraded = upgrade(val) - return loadFixture(upgraded); + // const upgraded = upgrade(val) + return loadFixture(val); }), ) ).filter((val) => val !== undefined); From 671406fcac8649799fd50e52699bdc2134c9b74f Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 2 Oct 2024 23:48:38 -0700 Subject: [PATCH 081/211] feat: Drop duplicate data.during in ShikiComponent --- .../test-case-component/src/components/component-shiki.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/test-case-component/src/components/component-shiki.tsx b/packages/test-case-component/src/components/component-shiki.tsx index 467f3168e8..23ed184301 100644 --- a/packages/test-case-component/src/components/component-shiki.tsx +++ b/packages/test-case-component/src/components/component-shiki.tsx @@ -12,15 +12,15 @@ export const ShikiComponent: React.FC<{ data: any }> = ({ data }) => { dangerouslySetInnerHTML={{ __html: data.before }} /> )} - {(data.during || data.before) && ( + {(data.during) && ( <>
-
{data.command}
)} +
{data.command}
{data.after && (
Date: Tue, 23 Jul 2024 19:51:52 -0700 Subject: [PATCH 082/211] chore: Delete buildDictionary file --- .../src/buildDictionary.ts | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 packages/test-case-component/src/buildDictionary.ts diff --git a/packages/test-case-component/src/buildDictionary.ts b/packages/test-case-component/src/buildDictionary.ts deleted file mode 100644 index 67be2db5e3..0000000000 --- a/packages/test-case-component/src/buildDictionary.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { loadFixture } from "./loadFixture.js"; - -Promise.all([ - loadFixture("actions", "bringArgMadeAfterLook"), - loadFixture("decorations", "chuckBlockAirUntilBatt"), - loadFixture("decorations", "cutFine"), - loadFixture("decorations", "chuckLineFine"), - loadFixture("actions", "bringAirAndBatAndCapToAfterItemEach"), -]).then((allItems) => { - allItems.forEach((item) => { - if (item) { - console.log(` -.wrapper - .before - ${item.before.replace(/\n/gi, "\n ")} - .during - ${(item.during || item.before).replace(/\n/gi, "\n ")} - .command ${item.command} - .after - ${item.after.replace(/\n/gi, "\n ")} -`); - } - }); -}); From b9c705dfb98a89aa9fef9b29773e878ccb8260e2 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 3 Oct 2024 00:30:06 -0700 Subject: [PATCH 083/211] feat: Migrate to current cursorless type PositionPlainObject --- .../test-case-component/src/generateHtml.ts | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index b1f7548f6b..42e1af15ef 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,29 +1,26 @@ import { getHighlighter, createCssVariablesTheme, - BundledLanguage, } from "shiki"; +import type { BundledLanguage } from "shiki"; -import { renderToHtml, HatType, SelectionType, Token } from "./renderToHtml"; +import { renderToHtml } from "./renderToHtml"; +import type { HatType, SelectionType, Token } from "./renderToHtml"; +import type { PositionPlainObject } from "@cursorless/common"; type Lang = BundledLanguage; -export interface SelectionAnchor { - line: number; - character: number; -} - interface CursorlessFixtureSelection { type: "line" | "selection"; name?: string; - anchor: SelectionAnchor; - active: SelectionAnchor; + anchor: PositionPlainObject; + active: PositionPlainObject; } interface CursorlessFixtureState { documentContents: any; marks?: Record< `${HatType}.${string}`, - { start: { line: number; character: number } } + { start: PositionPlainObject } >; decorations?: CursorlessFixtureSelection[]; selections?: CursorlessFixtureSelection[]; @@ -220,7 +217,7 @@ class SelectionParser { } } - parseLine(l: number, start: SelectionAnchor, end: SelectionAnchor) { + parseLine(l: number, start: PositionPlainObject, end: PositionPlainObject) { const lineParser = new SelectionLineParser( this.selectionType, this.lines[l], From 8011d7bb1b98e172ec094916b80d5f59d4c772ab Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 3 Oct 2024 00:56:27 -0700 Subject: [PATCH 084/211] feat: Change var names to adhere to camal case eslint reqs --- .../test-case-component/src/renderToHtml.ts | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/test-case-component/src/renderToHtml.ts b/packages/test-case-component/src/renderToHtml.ts index 942f1312ef..7d71966e54 100644 --- a/packages/test-case-component/src/renderToHtml.ts +++ b/packages/test-case-component/src/renderToHtml.ts @@ -1,14 +1,14 @@ // forked from https://github.com/SimeonC/shiki/blob/main/packages/shiki/src/renderer.ts -import { ThemedToken } from "shiki"; +import type { ThemedToken } from "shiki"; // MIT License -const FontStyle = { - NotSet: -1, - None: 0, - Italic: 1, - Bold: 2, - Underline: 4, +const fontStyles = { + notSet: -1, + none: 0, + italic: 1, + bold: 2, + underline: 4, } as const; export function groupBy( @@ -125,13 +125,13 @@ export function renderToHtml( } const cssDeclarations = [`color: ${token.color || options.fg}`]; - if (token.fontStyle && FontStyle.Italic) { + if (token.fontStyle && fontStyles.italic) { cssDeclarations.push("font-style: italic"); } - if (token.fontStyle && FontStyle.Bold) { + if (token.fontStyle && fontStyles.bold) { cssDeclarations.push("font-weight: bold"); } - if (token.fontStyle && FontStyle.Underline) { + if (token.fontStyle && fontStyles.underline) { cssDeclarations.push("text-decoration: underline"); } From 7f510a063074318269e53d9f1dd5c5d38a744255 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 22:07:58 -0700 Subject: [PATCH 085/211] feat: Add dependency escape-goat to test-case-component - Refresh pnpm-lock --- packages/test-case-component/package.json | 3 +- pnpm-lock.yaml | 181 +++++++++++----------- 2 files changed, 94 insertions(+), 90 deletions(-) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index 0bc580aa47..246802be4a 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -22,6 +22,7 @@ "dependencies": { "@cursorless/common": "workspace:*", "@cursorless/node-common": "workspace:*", + "escape-goat": "4.0.0", "fs-extra": "11.2.0", "js-yaml": "^4.1.0", "prettier": "3.2.5", @@ -38,8 +39,8 @@ }, "devDependencies": { "@types/fs-extra": "^11.0.4", - "@types/react": "18.2.71", "@types/jest": "29.5.12", + "@types/react": "18.2.71", "shiki": "^1.4.0", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 82c46a3869..debbcff0bc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -919,6 +919,9 @@ importers: '@cursorless/node-common': specifier: workspace:* version: link:../node-common + escape-goat: + specifier: 4.0.0 + version: 4.0.0 fs-extra: specifier: 11.2.0 version: 11.2.0 @@ -5034,10 +5037,12 @@ packages: are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} + deprecated: This package is no longer supported. are-we-there-yet@3.0.1: resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -7052,10 +7057,12 @@ packages: gauge@3.0.2: resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} engines: {node: '>=10'} + deprecated: This package is no longer supported. gauge@4.0.4: resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} @@ -7555,6 +7562,7 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} @@ -9251,10 +9259,12 @@ packages: npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. npmlog@6.0.2: resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. nprogress@0.2.0: resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} @@ -10431,6 +10441,7 @@ packages: read-package-json@6.0.4: resolution: {integrity: sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + deprecated: This package is no longer supported. Please use @npmcli/package-json instead. read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} @@ -10688,6 +10699,7 @@ packages: rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rrweb-cssom@0.8.0: @@ -11188,9 +11200,6 @@ packages: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - string.prototype.trimend@1.0.9: resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} engines: {node: '>= 0.4'} @@ -12602,7 +12611,7 @@ snapshots: '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -12613,7 +12622,7 @@ snapshots: '@babel/core': 7.27.4 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -12624,7 +12633,7 @@ snapshots: '@babel/core': 7.27.4 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.27.1 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -16827,7 +16836,7 @@ snapshots: '@tufjs/models@1.0.4': dependencies: '@tufjs/canonical-json': 1.0.0 - minimatch: 9.0.3 + minimatch: 9.0.5 '@tybys/wasm-util@0.9.0': dependencies: @@ -17205,7 +17214,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) '@typescript-eslint/types': 8.33.1 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -17490,7 +17499,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -17636,7 +17645,7 @@ snapshots: array-buffer-byte-length@1.0.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 is-array-buffer: 3.0.4 array-buffer-byte-length@1.0.2: @@ -17650,12 +17659,12 @@ snapshots: array-includes@3.1.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.2 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - is-string: 1.0.7 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 array-union@2.1.0: {} @@ -17670,25 +17679,25 @@ snapshots: array.prototype.findlastindex@1.2.5: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.24.0 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 es-shim-unscopables: 1.0.2 array.prototype.flat@1.3.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.24.0 es-shim-unscopables: 1.0.2 array.prototype.flatmap@1.3.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.24.0 es-shim-unscopables: 1.0.2 array.prototype.tosorted@1.1.4: @@ -17702,11 +17711,11 @@ snapshots: arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.24.0 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.3.0 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 @@ -18198,7 +18207,7 @@ snapshots: call-bind@1.0.8: dependencies: call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.0 + es-define-property: 1.0.1 get-intrinsic: 1.3.0 set-function-length: 1.2.2 @@ -18836,7 +18845,7 @@ snapshots: data-view-buffer@1.0.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-data-view: 1.0.1 @@ -18848,7 +18857,7 @@ snapshots: data-view-byte-length@1.0.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-data-view: 1.0.1 @@ -18860,7 +18869,7 @@ snapshots: data-view-byte-offset@1.0.0: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-data-view: 1.0.1 @@ -19226,7 +19235,7 @@ snapshots: safe-array-concat: 1.1.2 safe-regex-test: 1.0.3 string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 + string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 typed-array-buffer: 1.0.2 typed-array-byte-length: 1.0.1 @@ -19294,7 +19303,7 @@ snapshots: es-define-property@1.0.0: dependencies: - get-intrinsic: 1.2.4 + get-intrinsic: 1.3.0 es-define-property@1.0.1: {} @@ -19302,13 +19311,13 @@ snapshots: es-get-iterator@1.1.3: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bind: 1.0.8 + get-intrinsic: 1.3.0 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.3 is-set: 2.0.3 - is-string: 1.0.7 + is-string: 1.1.1 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 @@ -19562,7 +19571,7 @@ snapshots: object.groupby: 1.0.3 object.values: 1.2.0 semver: 6.3.1 - string.prototype.trimend: 1.0.8 + string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) @@ -20125,9 +20134,9 @@ snapshots: function.prototype.name@1.1.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.24.0 functions-have-names: 1.2.3 function.prototype.name@1.1.8: @@ -20213,9 +20222,9 @@ snapshots: get-symbol-description@1.0.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.3.0 get-symbol-description@1.1.0: dependencies: @@ -20654,7 +20663,7 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -20662,7 +20671,7 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -20732,7 +20741,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -20771,7 +20780,7 @@ snapshots: ignore-walk@6.0.4: dependencies: - minimatch: 9.0.3 + minimatch: 9.0.5 ignore@5.3.1: {} @@ -20888,13 +20897,13 @@ snapshots: is-arguments@1.1.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 has-tostringtag: 1.0.2 is-array-buffer@3.0.4: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bind: 1.0.8 + get-intrinsic: 1.3.0 is-array-buffer@3.0.5: dependencies: @@ -20924,7 +20933,7 @@ snapshots: is-boolean-object@1.1.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 has-tostringtag: 1.0.2 is-boolean-object@1.2.2: @@ -21093,7 +21102,7 @@ snapshots: is-shared-array-buffer@1.0.3: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 is-shared-array-buffer@1.0.4: dependencies: @@ -21146,7 +21155,7 @@ snapshots: is-weakref@1.0.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 is-weakref@1.1.1: dependencies: @@ -21154,8 +21163,8 @@ snapshots: is-weakset@2.0.3: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bind: 1.0.8 + get-intrinsic: 1.3.0 is-windows@1.0.2: {} @@ -21213,7 +21222,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -22603,7 +22612,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.0 @@ -22982,21 +22991,21 @@ snapshots: normalize-package-data@3.0.3: dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.13.1 + is-core-module: 2.16.1 semver: 7.7.2 validate-npm-package-license: 3.0.4 normalize-package-data@4.0.1: dependencies: hosted-git-info: 5.2.1 - is-core-module: 2.13.1 + is-core-module: 2.16.1 semver: 7.7.2 validate-npm-package-license: 3.0.4 normalize-package-data@5.0.0: dependencies: hosted-git-info: 6.1.1 - is-core-module: 2.13.1 + is-core-module: 2.16.1 semver: 7.7.2 validate-npm-package-license: 3.0.4 @@ -23143,7 +23152,7 @@ snapshots: object-is@1.1.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 object-keys@1.1.1: {} @@ -23172,22 +23181,22 @@ snapshots: object.fromentries@2.0.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.2 - es-object-atoms: 1.0.0 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 object.groupby@1.0.3: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.24.0 object.values@1.2.0: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 obuf@1.1.2: {} @@ -24694,8 +24703,8 @@ snapshots: safe-array-concat@1.1.2: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bind: 1.0.8 + get-intrinsic: 1.3.0 has-symbols: 1.0.3 isarray: 2.0.5 @@ -24889,7 +24898,7 @@ snapshots: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 + get-intrinsic: 1.3.0 gopd: 1.0.1 has-property-descriptors: 1.0.2 @@ -25075,7 +25084,7 @@ snapshots: socks-proxy-agent@6.2.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) socks: 2.8.1 transitivePeerDependencies: - supports-color @@ -25083,7 +25092,7 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) socks: 2.8.1 transitivePeerDependencies: - supports-color @@ -25091,7 +25100,7 @@ snapshots: socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.3 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) socks: 2.8.4 transitivePeerDependencies: - supports-color @@ -25309,16 +25318,10 @@ snapshots: string.prototype.trim@1.2.9: dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.2 - es-object-atoms: 1.0.0 - - string.prototype.trimend@1.0.8: - dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 string.prototype.trimend@1.0.9: dependencies: @@ -25329,9 +25332,9 @@ snapshots: string.prototype.trimstart@1.0.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 string_decoder@1.1.1: dependencies: @@ -25777,7 +25780,7 @@ snapshots: tuf-js@1.1.7: dependencies: '@tufjs/models': 1.0.4 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) make-fetch-happen: 11.1.1 transitivePeerDependencies: - supports-color @@ -25813,7 +25816,7 @@ snapshots: typed-array-buffer@1.0.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-typed-array: 1.1.13 @@ -25825,7 +25828,7 @@ snapshots: typed-array-byte-length@1.0.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 gopd: 1.0.1 has-proto: 1.0.3 @@ -25842,7 +25845,7 @@ snapshots: typed-array-byte-offset@1.0.2: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 gopd: 1.0.1 has-proto: 1.0.3 @@ -25860,7 +25863,7 @@ snapshots: typed-array-length@1.0.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 gopd: 1.0.1 has-proto: 1.0.3 @@ -25884,7 +25887,7 @@ snapshots: unbox-primitive@1.0.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -26445,7 +26448,7 @@ snapshots: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 - is-string: 1.0.7 + is-string: 1.1.1 is-symbol: 1.0.4 which-boxed-primitive@1.1.1: @@ -26502,7 +26505,7 @@ snapshots: which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.2 From e27d8c06700fdb6f908866aea3f30f2476f712a7 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 3 Oct 2024 01:14:54 -0700 Subject: [PATCH 086/211] feat: use htmlEscape for html-escaping in test-case-component --- packages/test-case-component/src/renderToHtml.ts | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/packages/test-case-component/src/renderToHtml.ts b/packages/test-case-component/src/renderToHtml.ts index 7d71966e54..f18bd3914c 100644 --- a/packages/test-case-component/src/renderToHtml.ts +++ b/packages/test-case-component/src/renderToHtml.ts @@ -1,5 +1,5 @@ // forked from https://github.com/SimeonC/shiki/blob/main/packages/shiki/src/renderer.ts - +import { htmlEscape } from 'escape-goat'; import type { ThemedToken } from "shiki"; // MIT License @@ -167,19 +167,8 @@ export function renderToHtml( ]); } -const htmlEscapes = { - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'", -} as const; - function escapeHtml(html: string) { - return (html || "").replace( - /[&<>"']/g, - (chr) => htmlEscapes[chr as keyof typeof htmlEscapes], - ); + return htmlEscape(html); } function getLineClasses(lineOptions: { classes?: string }[]) { From 6639e0382d30893df69bd08f9619a25c6597a849 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 3 Oct 2024 01:50:52 -0700 Subject: [PATCH 087/211] feat: Change pendingDeleteBackground color to make current colors --- packages/test-case-component/src/styles.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/styles.css b/packages/test-case-component/src/styles.css index e8182df174..41abb6f1d9 100644 --- a/packages/test-case-component/src/styles.css +++ b/packages/test-case-component/src/styles.css @@ -86,7 +86,7 @@ pre.shiki { background: green; } .decoration.pendingDeleteBackground { - background: #ffaeae; + background: #ff00008a; } .hat { From 3cf10b06f93c4b0e292aa6a2bc1afcbef6f6c153 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 3 Oct 2024 01:52:27 -0700 Subject: [PATCH 088/211] feat: Create referencedBackground class in styles --- packages/test-case-component/src/styles.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/test-case-component/src/styles.css b/packages/test-case-component/src/styles.css index 41abb6f1d9..a6de180e36 100644 --- a/packages/test-case-component/src/styles.css +++ b/packages/test-case-component/src/styles.css @@ -88,6 +88,9 @@ pre.shiki { .decoration.pendingDeleteBackground { background: #ff00008a; } +.decoration.referencedBackground { + background: #00a2ff4d; +} .hat { position: relative; From 4b675444d32c25dfb3c68a134c576355c861cca7 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 3 Oct 2024 01:59:19 -0700 Subject: [PATCH 089/211] feat: Rename decorations --> flashes --- packages/test-case-component/src/generateHtml.ts | 6 +++--- packages/test-case-component/src/loadFixture.ts | 6 +++--- packages/test-case-component/src/styles.css | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index 42e1af15ef..0fedce26fb 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -22,7 +22,7 @@ interface CursorlessFixtureState { `${HatType}.${string}`, { start: PositionPlainObject } >; - decorations?: CursorlessFixtureSelection[]; + flashes?: CursorlessFixtureSelection[]; selections?: CursorlessFixtureSelection[]; thatMark?: [CursorlessFixtureSelection]; sourceMark?: [CursorlessFixtureSelection]; @@ -137,7 +137,7 @@ class HTMLGenerator { } applyAllSelections() { - if (!this.applySelectionsFromState("decorations")) { + if (!this.applySelectionsFromState("flashes")) { this.applySelectionsFromState("selections"); } this.applySelectionsFromState("thatMark"); @@ -145,7 +145,7 @@ class HTMLGenerator { } applySelectionsFromState( - key: "decorations" | "selections" | "thatMark" | "sourceMark", + key: "flashes" | "selections" | "thatMark" | "sourceMark", ): boolean { const selections = this.state[key]; if (!selections?.length) { diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index dd11217d0a..e47e30c263 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -16,12 +16,12 @@ async function safeGenerateHtml( export async function loadFixture(data: any) { // console.log("loadFixture", data) try { - const during = data.decorations + const during = data.flashes ? await safeGenerateHtml( - "decorations", + "flashes", { ...data.initialState, - decorations: data.decorations.map( + flashes: data.flashes.map( ({ name, type, diff --git a/packages/test-case-component/src/styles.css b/packages/test-case-component/src/styles.css index a6de180e36..4facdeb2d3 100644 --- a/packages/test-case-component/src/styles.css +++ b/packages/test-case-component/src/styles.css @@ -111,8 +111,8 @@ pre.shiki { .hat.default::after { mask-image: url('data:image/svg+xml;utf8,'); top: -0.4px; - width: 6px; - height: 6px; + width: 7px; + height: 7px; } .hat.wing::after { mask-image: url('data:image/svg+xml;utf8,'); From 964e98f50eaee42dbfab3d9af871df5d3decc1e5 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 3 Oct 2024 02:04:33 -0700 Subject: [PATCH 090/211] feat: Rename component-shiki shikiComponent --- .../src/components/{component-shiki.tsx => shikiComponent.tsx} | 0 packages/test-case-component/src/test-case-component.tsx | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename packages/test-case-component/src/components/{component-shiki.tsx => shikiComponent.tsx} (100%) diff --git a/packages/test-case-component/src/components/component-shiki.tsx b/packages/test-case-component/src/components/shikiComponent.tsx similarity index 100% rename from packages/test-case-component/src/components/component-shiki.tsx rename to packages/test-case-component/src/components/shikiComponent.tsx diff --git a/packages/test-case-component/src/test-case-component.tsx b/packages/test-case-component/src/test-case-component.tsx index df8a46b2f4..c8a2f1e77a 100644 --- a/packages/test-case-component/src/test-case-component.tsx +++ b/packages/test-case-component/src/test-case-component.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import { ShikiComponent } from "./components/component-shiki"; +import { ShikiComponent } from "./components/shikiComponent"; import "./shiki.css"; import "./styles.css"; import type { TestCaseFixture } from "@cursorless/common"; From 1d2ece906b1e431bc53fcc7b426321c616b9e040 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 3 Oct 2024 11:57:10 -0700 Subject: [PATCH 091/211] feat: Use @cursorless/common type PositionPlainObject in loadFixture --- packages/test-case-component/src/loadFixture.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index e47e30c263..38d8440cd4 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -1,4 +1,5 @@ -import { generateHtml, SelectionAnchor } from "./generateHtml"; +import type { PositionPlainObject } from "@cursorless/common"; +import { generateHtml } from "./generateHtml"; async function safeGenerateHtml( ...args: [stateName: string, ...rest: Parameters] @@ -30,8 +31,8 @@ export async function loadFixture(data: any) { }: { name: string; type: string; - start: SelectionAnchor; - end: SelectionAnchor; + start: PositionPlainObject; + end: PositionPlainObject; }) => ({ name, type, From 0e00ae1173f04d2f2a2d20789cb1633a8c9ad2c8 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 3 Oct 2024 18:54:27 -0700 Subject: [PATCH 092/211] feat: Add "@cursorless/common" as dev deps for cursorless-org --- packages/cursorless-org/package.json | 1 + packages/cursorless-org/src/pages/component-sheet.tsx | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/cursorless-org/package.json b/packages/cursorless-org/package.json index 074ef384bf..bac4846794 100644 --- a/packages/cursorless-org/package.json +++ b/packages/cursorless-org/package.json @@ -29,6 +29,7 @@ "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { + "@cursorless/common": "workspace:*", "@cursorless/cheatsheet": "workspace:*", "@cursorless/cursorless-engine": "workspace:*", "@cursorless/test-case-component": "workspace:*", diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 035dca1dac..46fba48208 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -7,7 +7,7 @@ import { TestCaseComponentPage, loadFixture, } from "@cursorless/test-case-component"; -// import { upgrade } from "@cursorless/cursorless-engine" +import type { TestCaseFixture } from "@cursorless/common"; import { cheatsheetBodyClasses } from "@cursorless/cheatsheet"; @@ -66,7 +66,6 @@ export async function getStaticProps() { const data = ( await Promise.all( [...dataActions, ...dataDecorations].map((val) => { - // const upgraded = upgrade(val) return loadFixture(val); }), ) @@ -75,7 +74,7 @@ export async function getStaticProps() { return { props: { data, bodyClasses: cheatsheetBodyClasses } }; } -export function App({ data }: { data: any; loaded: any }) { +export function App({ data }: { data: TestCaseFixture; loaded: any }) { return ( <> From cfe62b11f6d1d1f5a036d52ece9c925987f413db Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 3 Oct 2024 23:22:46 -0700 Subject: [PATCH 093/211] feat: Add type TestCaseFixture to loadFixture --- packages/test-case-component/src/loadFixture.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index 38d8440cd4..66578e800e 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -1,4 +1,5 @@ import type { PositionPlainObject } from "@cursorless/common"; +import type { TestCaseFixture } from "@cursorless/common"; import { generateHtml } from "./generateHtml"; async function safeGenerateHtml( @@ -14,8 +15,7 @@ async function safeGenerateHtml( } } -export async function loadFixture(data: any) { - // console.log("loadFixture", data) +export async function loadFixture(data: TestCaseFixture) { try { const during = data.flashes ? await safeGenerateHtml( From 6628f8d00a36961bbdc194a90044332a2ac78f62 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 3 Oct 2024 23:25:27 -0700 Subject: [PATCH 094/211] feat: refactor out getStage functions for readability --- .../test-case-component/src/loadFixture.ts | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index 66578e800e..45324ed6bc 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -68,3 +68,45 @@ export async function loadFixture(data: TestCaseFixture) { throw e; } } + +async function getBefore(data: { initialState: any; languageId: any }) { + return await safeGenerateHtml( + "initialState", + data.initialState, + data.languageId, + ); +} + +async function getAfter(data: { finalState: any; languageId: any }) { + return await safeGenerateHtml("finalState", data.finalState, data.languageId); +} + +async function getDuring(data: any) { + if (!!data.ide && data.ide.flashes) { + return await safeGenerateHtml( + "flashes", + { + ...data.initialState, + flashes: data.ide.flashes.map( + (props: { + name: string; + type: string; + start: PositionPlainObject; + end: PositionPlainObject; + }) => { + const { name, type, start, end } = props; + console.log("🦄", props); + return { + name, + type, + anchor: start, + active: end, + }; + }, + ), + }, + data.languageId, + ); + } + return null; +} \ No newline at end of file From c23d6c4fc7dbee5c9aabf3b421e2cc73410c254b Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 3 Oct 2024 23:25:59 -0700 Subject: [PATCH 095/211] feat: use getStage helper funcs in loadFixture --- .../test-case-component/src/loadFixture.ts | 41 ++----------------- 1 file changed, 4 insertions(+), 37 deletions(-) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index 45324ed6bc..cc69b7d70e 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -17,43 +17,10 @@ async function safeGenerateHtml( export async function loadFixture(data: TestCaseFixture) { try { - const during = data.flashes - ? await safeGenerateHtml( - "flashes", - { - ...data.initialState, - flashes: data.flashes.map( - ({ - name, - type, - start, - end, - }: { - name: string; - type: string; - start: PositionPlainObject; - end: PositionPlainObject; - }) => ({ - name, - type, - anchor: start, - active: end, - }), - ), - }, - data.languageId, - ) - : null; - const before = await safeGenerateHtml( - "initialState", - data.initialState, - data.languageId, - ); - const after = await safeGenerateHtml( - "finalState", - data.finalState, - data.languageId, - ); + const during = await getDuring(data); + const before = await getBefore(data); + const after = await getAfter(data); + return { language: data.languageId, command: data.command.spokenForm, From 1cbeea7537f56a5f43837f0ad4c753f3a9f69783 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 3 Oct 2024 23:30:34 -0700 Subject: [PATCH 096/211] chore: Switch console.log --> console.error in error catch --- packages/test-case-component/src/loadFixture.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index cc69b7d70e..2d05af8c93 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -9,8 +9,8 @@ async function safeGenerateHtml( try { return await generateHtml(state, languageId); } catch (e) { - console.log("error in state", stateName, e); - console.log(JSON.stringify(state, null, 2)); + console.error("error in state", stateName, e); + console.error(JSON.stringify(state, null, 2)); throw e; } } From 201521608005d9c02e0c221e471278c4f8edd920 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Fri, 4 Oct 2024 00:17:02 -0700 Subject: [PATCH 097/211] feat: Create interface loadFixtureProps --- packages/test-case-component/src/loadFixture.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index 2d05af8c93..05f1928fd4 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -15,7 +15,11 @@ async function safeGenerateHtml( } } -export async function loadFixture(data: TestCaseFixture) { +interface loadFixtureProps extends TestCaseFixture { + filename: string; +} + +export async function loadFixture(data: loadFixtureProps) { try { const during = await getDuring(data); const before = await getBefore(data); From 98525d2816f7f28089dc94116260ba263b913d70 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Fri, 4 Oct 2024 00:18:40 -0700 Subject: [PATCH 098/211] feat: Refactor argument object for getState funcs --- .../test-case-component/src/loadFixture.ts | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index 05f1928fd4..adbdb796c9 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -22,8 +22,16 @@ interface loadFixtureProps extends TestCaseFixture { export async function loadFixture(data: loadFixtureProps) { try { const during = await getDuring(data); - const before = await getBefore(data); - const after = await getAfter(data); + const before = await getBefore({ + stateName: "initialState", + state: data.initialState, + languageId: data.languageId, + }); + const after = await getAfter({ + stateName: "finalState", + state: data.finalState, + languageId: data.languageId, + }); return { language: data.languageId, @@ -40,16 +48,28 @@ export async function loadFixture(data: loadFixtureProps) { } } -async function getBefore(data: { initialState: any; languageId: any }) { - return await safeGenerateHtml( - "initialState", - data.initialState, - data.languageId, - ); +async function getBefore({ + stateName, + state, + languageId, +}: { + stateName: string; + state: TestCaseSnapshot; + languageId: string; +}) { + return await safeGenerateHtml(stateName, state, languageId); } -async function getAfter(data: { finalState: any; languageId: any }) { - return await safeGenerateHtml("finalState", data.finalState, data.languageId); +async function getAfter({ + stateName, + state, + languageId, +}: { + stateName: string; + state: TestCaseSnapshot; + languageId: string; +}) { + return await safeGenerateHtml(stateName, state, languageId); } async function getDuring(data: any) { From 9c3eeafd55781ecf16b174cb61e2748eccfe64c0 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Fri, 4 Oct 2024 00:19:19 -0700 Subject: [PATCH 099/211] feat: Update getDuring arg type to TestCaseFixture --- packages/test-case-component/src/loadFixture.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index adbdb796c9..af15dac334 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -1,5 +1,5 @@ import type { PositionPlainObject } from "@cursorless/common"; -import type { TestCaseFixture } from "@cursorless/common"; +import type { TestCaseFixture, TestCaseSnapshot } from "@cursorless/common"; import { generateHtml } from "./generateHtml"; async function safeGenerateHtml( @@ -72,7 +72,7 @@ async function getAfter({ return await safeGenerateHtml(stateName, state, languageId); } -async function getDuring(data: any) { +async function getDuring(data: TestCaseFixture) { if (!!data.ide && data.ide.flashes) { return await safeGenerateHtml( "flashes", From 7d4212df9401ac1884683e3dceb3aa1f06a49b1d Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Fri, 4 Oct 2024 00:55:34 -0700 Subject: [PATCH 100/211] wip: Add handle clipboard todo note --- packages/test-case-component/src/loadFixture.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index af15dac334..d20be6b41d 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -69,6 +69,7 @@ async function getAfter({ state: TestCaseSnapshot; languageId: string; }) { + // todo, handle clipboard return await safeGenerateHtml(stateName, state, languageId); } From b2729c0320843baa009c28223dac631072cc03e6 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Fri, 4 Oct 2024 00:55:57 -0700 Subject: [PATCH 101/211] wip: Reorder before, during, after functions --- packages/test-case-component/src/loadFixture.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index d20be6b41d..9b282cf31e 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -22,11 +22,13 @@ interface loadFixtureProps extends TestCaseFixture { export async function loadFixture(data: loadFixtureProps) { try { const during = await getDuring(data); + const before = await getBefore({ stateName: "initialState", state: data.initialState, languageId: data.languageId, }); + const after = await getAfter({ stateName: "finalState", state: data.finalState, From 35cd66013221a87bec09a560ea36f1654edea62e Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 8 Oct 2024 11:06:08 -0700 Subject: [PATCH 102/211] chore: Drop usued type loaded in App props --- packages/cursorless-org/src/pages/component-sheet.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 46fba48208..fae26a5cda 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -74,7 +74,7 @@ export async function getStaticProps() { return { props: { data, bodyClasses: cheatsheetBodyClasses } }; } -export function App({ data }: { data: TestCaseFixture; loaded: any }) { +export function App({ data }: { data: TestCaseFixture }) { return ( <> From 61520eefe9de396aa666072747d69208c4b2f9e2 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 8 Oct 2024 11:07:07 -0700 Subject: [PATCH 103/211] feat: Type App { data } to list of TestCaseFixture --- packages/cursorless-org/src/pages/component-sheet.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index fae26a5cda..8327a2fbc1 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -74,7 +74,7 @@ export async function getStaticProps() { return { props: { data, bodyClasses: cheatsheetBodyClasses } }; } -export function App({ data }: { data: TestCaseFixture }) { +export function App({ data }: { data: TestCaseFixture[] }) { return ( <> From 3bd3bbaa1a7e4d1e051dd1de1fc5a2010f7d6200 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 22 Oct 2024 09:37:14 -0700 Subject: [PATCH 104/211] chore: Move and rename test-case-component-page to TestCaseComponentPage --- .../cursorless-org/src/pages/component-sheet.tsx | 2 +- .../TestCaseComponentPage.tsx} | 12 ++++++------ packages/test-case-component/src/index.ts | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) rename packages/test-case-component/src/{test-case-component.tsx => components/TestCaseComponentPage.tsx} (74%) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 8327a2fbc1..334a41ab7a 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -4,9 +4,9 @@ import path from "path"; import Head from "next/head"; import { - TestCaseComponentPage, loadFixture, } from "@cursorless/test-case-component"; +import { TestCaseComponentPage } from "@cursorless/test-case-component"; import type { TestCaseFixture } from "@cursorless/common"; diff --git a/packages/test-case-component/src/test-case-component.tsx b/packages/test-case-component/src/components/TestCaseComponentPage.tsx similarity index 74% rename from packages/test-case-component/src/test-case-component.tsx rename to packages/test-case-component/src/components/TestCaseComponentPage.tsx index c8a2f1e77a..eb1e0bac1a 100644 --- a/packages/test-case-component/src/test-case-component.tsx +++ b/packages/test-case-component/src/components/TestCaseComponentPage.tsx @@ -1,7 +1,7 @@ import * as React from "react"; -import { ShikiComponent } from "./components/shikiComponent"; -import "./shiki.css"; -import "./styles.css"; +import { ShikiComponent } from "./shikiComponent"; +import "../shiki.css"; +import "../styles.css"; import type { TestCaseFixture } from "@cursorless/common"; export const TestCaseComponentPage: React.FC<{ data: TestCaseFixture[];}> = ({ @@ -19,9 +19,9 @@ export const TestCaseComponentPage: React.FC<{ data: TestCaseFixture[];}> = ({ - {data.map((item: any) => ( - - ))} + {data.map((item: any) => { + return + })} ); }; diff --git a/packages/test-case-component/src/index.ts b/packages/test-case-component/src/index.ts index 5670b3915e..2e8a71cc08 100644 --- a/packages/test-case-component/src/index.ts +++ b/packages/test-case-component/src/index.ts @@ -1,3 +1,3 @@ export * from "./generate-examples"; -export * from "./test-case-component"; +export * from "./components/TestCaseComponentPage"; export * from "./loadFixture"; \ No newline at end of file From f754215f51cc9d442aef3a5f3dbc5b6092741825 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 22 Oct 2024 09:46:35 -0700 Subject: [PATCH 105/211] chore: Add jsdoc comment to generateHtml --- packages/test-case-component/src/generateHtml.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index 0fedce26fb..22e7c7c368 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -35,6 +35,13 @@ const myTheme = createCssVariablesTheme({ fontStyle: true, }); +/** + * Generates HTML content based on the provided state and language. + * + * @param {CursorlessFixtureState} state - The state object containing the necessary data for HTML generation. + * @param {Lang} lang - The language object specifying the language for the HTML content. + * @returns {Promise} A promise that resolves to the generated HTML content. + */ export async function generateHtml(state: CursorlessFixtureState, lang: Lang) { return new HTMLGenerator(state, lang).generate(); } From 10ae782e84d6e183fe24f224937929790af4a19a Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 22 Oct 2024 09:50:20 -0700 Subject: [PATCH 106/211] chore: Remove unused and empty generateHtml file --- packages/test-case-component/src/generate-examples.ts | 3 --- packages/test-case-component/src/index.ts | 1 - 2 files changed, 4 deletions(-) delete mode 100644 packages/test-case-component/src/generate-examples.ts diff --git a/packages/test-case-component/src/generate-examples.ts b/packages/test-case-component/src/generate-examples.ts deleted file mode 100644 index c0113bc1f2..0000000000 --- a/packages/test-case-component/src/generate-examples.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function generateExamples(): string { - return "generate-examples"; -} diff --git a/packages/test-case-component/src/index.ts b/packages/test-case-component/src/index.ts index 2e8a71cc08..9f7a0db016 100644 --- a/packages/test-case-component/src/index.ts +++ b/packages/test-case-component/src/index.ts @@ -1,3 +1,2 @@ -export * from "./generate-examples"; export * from "./components/TestCaseComponentPage"; export * from "./loadFixture"; \ No newline at end of file From 0db64a175f674ed77a31581073e10e45b55587cf Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 22:09:09 -0700 Subject: [PATCH 107/211] chore: Refresh pnpm-lock.yaml during rebase --- pnpm-lock.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index debbcff0bc..2f2c072eaf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -460,6 +460,9 @@ importers: '@cursorless/cheatsheet': specifier: workspace:* version: link:../cheatsheet + '@cursorless/common': + specifier: workspace:* + version: link:../common '@cursorless/cursorless-engine': specifier: workspace:* version: link:../cursorless-engine From 98942fac789bf28015e52a2865f5ee2a81a5038c Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sat, 5 Apr 2025 13:03:38 -0700 Subject: [PATCH 108/211] chore: Add types/js-yaml dev dep to cursorless-org --- packages/cursorless-org/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/cursorless-org/package.json b/packages/cursorless-org/package.json index bac4846794..6f2550b77c 100644 --- a/packages/cursorless-org/package.json +++ b/packages/cursorless-org/package.json @@ -43,6 +43,7 @@ }, "devDependencies": { "@svgr/webpack": "8.1.0", + "@types/js-yaml": "^4.0.9", "@types/mdx": "2.0.13", "@types/node": "20.17.50", "@types/react": "19.1.6", From 4c963ac7381fc6903f65df843da0f3971fc58c71 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 22:09:55 -0700 Subject: [PATCH 109/211] chore: Add @cursorless/test-case-component, common as deps for cursorless-org - Refresh pnpm-lock.yaml during rebase --- pnpm-lock.yaml | 1134 +++--------------------------------------------- 1 file changed, 56 insertions(+), 1078 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2f2c072eaf..0bc09dca8a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -480,7 +480,7 @@ importers: version: 15.3.3(@mdx-js/loader@3.1.0(webpack@5.99.9(esbuild@0.25.5)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@19.1.0)) next: specifier: 15.3.3 - version: 15.3.3(@babel/core@7.24.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 15.3.3(@babel/core@7.27.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: specifier: 19.1.0 version: 19.1.0 @@ -494,6 +494,9 @@ importers: '@svgr/webpack': specifier: 8.1.0 version: 8.1.0(typescript@5.8.3) + '@types/js-yaml': + specifier: ^4.0.9 + version: 4.0.9 '@types/mdx': specifier: 2.0.13 version: 2.0.13 @@ -1196,10 +1199,6 @@ packages: resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} - engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.23.6': resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} @@ -1208,12 +1207,6 @@ packages: resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.24.1': - resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-create-class-features-plugin@7.27.1': resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} engines: {node: '>=6.9.0'} @@ -1254,10 +1247,6 @@ packages: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.23.0': - resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} - engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.27.1': resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} engines: {node: '>=6.9.0'} @@ -1282,10 +1271,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.22.5': - resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} - engines: {node: '>=6.9.0'} - '@babel/helper-optimise-call-expression@7.27.1': resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} engines: {node: '>=6.9.0'} @@ -1298,24 +1283,12 @@ packages: resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.22.20': - resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-remap-async-to-generator@7.27.1': resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.24.1': - resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.27.1': resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} engines: {node: '>=6.9.0'} @@ -1326,10 +1299,6 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} - engines: {node: '>=6.9.0'} - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} engines: {node: '>=6.9.0'} @@ -1362,10 +1331,6 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.22.20': - resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} - engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.27.1': resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==} engines: {node: '>=6.9.0'} @@ -1404,36 +1369,18 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1': - resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1': - resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1': - resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1': resolution: {integrity: sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==} engines: {node: '>=6.9.0'} @@ -1461,40 +1408,17 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-dynamic-import@7.8.3': resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-export-namespace-from@7.8.3': - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.24.1': - resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.27.1': resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.24.1': - resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.27.1': resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} engines: {node: '>=6.9.0'} @@ -1553,12 +1477,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-top-level-await@7.14.5': resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} @@ -1583,144 +1501,72 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-arrow-functions@7.24.1': - resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-arrow-functions@7.27.1': resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.24.3': - resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.27.1': resolution: {integrity: sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.24.1': - resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.27.1': resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.24.1': - resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.27.1': resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.24.1': - resolution: {integrity: sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.27.5': resolution: {integrity: sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.24.1': - resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.27.1': resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.24.1': - resolution: {integrity: sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - '@babel/plugin-transform-class-static-block@7.27.1': resolution: {integrity: sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.24.1': - resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-classes@7.27.1': resolution: {integrity: sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-computed-properties@7.24.1': - resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-computed-properties@7.27.1': resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.24.1': - resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.27.3': resolution: {integrity: sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.24.1': - resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.27.1': resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-keys@7.24.1': - resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-keys@7.27.1': resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} engines: {node: '>=6.9.0'} @@ -1733,300 +1579,150 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-dynamic-import@7.24.1': - resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dynamic-import@7.27.1': resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.24.1': - resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.27.1': resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.24.1': - resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.27.1': resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-for-of@7.24.1': - resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-for-of@7.27.1': resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-function-name@7.24.1': - resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-function-name@7.27.1': resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.24.1': - resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.27.1': resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.24.1': - resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.27.1': resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.24.1': - resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.27.1': resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-member-expression-literals@7.24.1': - resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-member-expression-literals@7.27.1': resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-amd@7.24.1': - resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-amd@7.27.1': resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.24.1': - resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.27.1': resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.24.1': - resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.27.1': resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-umd@7.24.1': - resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-umd@7.27.1': resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-new-target@7.24.1': - resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-new-target@7.27.1': resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1': - resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-numeric-separator@7.24.1': - resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-numeric-separator@7.27.1': resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.24.1': - resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.27.3': resolution: {integrity: sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-super@7.24.1': - resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-super@7.27.1': resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.24.1': - resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.27.1': resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.24.1': - resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.27.1': resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-parameters@7.24.1': - resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-parameters@7.27.1': resolution: {integrity: sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.24.1': - resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.27.1': resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.24.1': - resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.27.1': resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-property-literals@7.24.1': - resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-property-literals@7.27.1': resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} engines: {node: '>=6.9.0'} @@ -2039,60 +1735,30 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-display-name@7.24.1': - resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-display-name@7.27.1': resolution: {integrity: sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-development@7.22.5': - resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-development@7.27.1': resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.23.4': - resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.27.1': resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-pure-annotations@7.24.1': - resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-pure-annotations@7.27.1': resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.24.1': - resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.27.5': resolution: {integrity: sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==} engines: {node: '>=6.9.0'} @@ -2105,12 +1771,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-reserved-words@7.24.1': - resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-reserved-words@7.27.1': resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} engines: {node: '>=6.9.0'} @@ -2123,132 +1783,66 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-shorthand-properties@7.24.1': - resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-shorthand-properties@7.27.1': resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.24.1': - resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.27.1': resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-sticky-regex@7.24.1': - resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-sticky-regex@7.27.1': resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-template-literals@7.24.1': - resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-template-literals@7.27.1': resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typeof-symbol@7.24.1': - resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typeof-symbol@7.27.1': resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.24.1': - resolution: {integrity: sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.27.1': resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-escapes@7.24.1': - resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-escapes@7.27.1': resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-property-regex@7.24.1': - resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-property-regex@7.27.1': resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-regex@7.24.1': - resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-regex@7.27.1': resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-sets-regex@7.24.1': - resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/plugin-transform-unicode-sets-regex@7.27.1': resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.24.3': - resolution: {integrity: sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/preset-env@7.27.2': resolution: {integrity: sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==} engines: {node: '>=6.9.0'} @@ -2260,24 +1854,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/preset-react@7.24.1': - resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/preset-react@7.27.1': resolution: {integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-typescript@7.24.1': - resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/preset-typescript@7.27.1': resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} engines: {node: '>=6.9.0'} @@ -5202,11 +4784,6 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.10.4: - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.11.1: resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==} peerDependencies: @@ -5807,9 +5384,6 @@ packages: peerDependencies: webpack: ^5.1.0 - core-js-compat@3.36.1: - resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==} - core-js-compat@3.42.0: resolution: {integrity: sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==} @@ -10527,9 +10101,6 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -12542,10 +12113,6 @@ snapshots: dependencies: '@babel/types': 7.27.6 - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - dependencies: - '@babel/types': 7.24.0 - '@babel/helper-compilation-targets@7.23.6': dependencies: '@babel/compat-data': 7.24.1 @@ -12562,19 +12129,6 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -12588,13 +12142,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -12609,17 +12156,6 @@ snapshots: regexpu-core: 6.2.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - debug: 4.4.1(supports-color@8.1.1) - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -12653,10 +12189,6 @@ snapshots: dependencies: '@babel/types': 7.24.0 - '@babel/helper-member-expression-to-functions@7.23.0': - dependencies: - '@babel/types': 7.24.0 - '@babel/helper-member-expression-to-functions@7.27.1': dependencies: '@babel/traverse': 7.27.4 @@ -12693,10 +12225,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.22.5': - dependencies: - '@babel/types': 7.24.0 - '@babel/helper-optimise-call-expression@7.27.1': dependencies: '@babel/types': 7.27.6 @@ -12705,13 +12233,6 @@ snapshots: '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -12721,13 +12242,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -12741,10 +12255,6 @@ snapshots: dependencies: '@babel/types': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - dependencies: - '@babel/types': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: '@babel/traverse': 7.27.4 @@ -12768,12 +12278,6 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helper-wrap-function@7.22.20': - dependencies: - '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.24.0 - '@babel/types': 7.24.0 - '@babel/helper-wrap-function@7.27.1': dependencies: '@babel/template': 7.27.2 @@ -12823,23 +12327,11 @@ snapshots: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -12849,12 +12341,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -12863,10 +12349,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -12904,41 +12386,16 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 optional: true - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13042,11 +12499,6 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 optional: true - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 @@ -13068,36 +12520,17 @@ snapshots: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.3) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) - '@babel/plugin-transform-async-generator-functions@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13107,13 +12540,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.3) - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13123,32 +12549,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-block-scoping@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-block-scoping@7.27.5(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13157,13 +12567,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.3) - '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13172,18 +12575,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) - '@babel/helper-split-export-declaration': 7.22.6 - globals: 11.12.0 - '@babel/plugin-transform-classes@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13196,45 +12587,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/template': 7.24.0 - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/template': 7.27.2 - '@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-destructuring@7.27.3(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13246,45 +12615,21 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13293,13 +12638,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13309,53 +12647,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) - - '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.27.4)': + '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.3)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.27.4)': dependencies: @@ -13365,13 +12675,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-simple-access': 7.22.5 - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13380,14 +12683,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-identifier': 7.22.20 - '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13398,12 +12693,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13412,58 +12701,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-object-rest-spread@7.27.3(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13472,12 +12730,6 @@ snapshots: '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4) '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13486,24 +12738,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13512,22 +12751,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-parameters@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13536,14 +12764,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.3) - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13553,36 +12773,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-constant-elements@7.24.1(@babel/core@7.24.3)': + '@babel/plugin-transform-react-constant-elements@7.24.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-react-display-name@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.3) - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13590,15 +12795,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) - '@babel/types': 7.24.0 - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13610,24 +12806,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - regenerator-transform: 0.15.2 - '@babel/plugin-transform-regenerator@7.27.5(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13639,11 +12823,6 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13661,22 +12840,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13685,44 +12853,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13734,138 +12879,29 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/preset-env@7.24.3(@babel/core@7.24.3)': - dependencies: - '@babel/compat-data': 7.24.1 - '@babel/core': 7.24.3 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.3) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.3) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.3) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.3) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.3) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.3) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.3) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.3) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-class-static-block': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.3) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.3) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.3) - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.3) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.3) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.3) - core-js-compat: 3.36.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/preset-env@7.27.2(@babel/core@7.27.4)': dependencies: '@babel/compat-data': 7.27.5 @@ -13941,13 +12977,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/types': 7.24.0 - esutils: 2.0.3 - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13955,16 +12984,6 @@ snapshots: '@babel/types': 7.24.0 esutils: 2.0.3 - '@babel/preset-react@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.3) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.3) - '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.3) - '@babel/preset-react@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13977,15 +12996,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.24.1(@babel/core@7.24.3)': - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.3) - '@babel/preset-typescript@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -16622,54 +15632,54 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.24.3)': + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.27.4 - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.24.3)': + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.27.4 - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.24.3)': + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.27.4 - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.24.3)': + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.27.4 - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.24.3)': + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.27.4 - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.24.3)': + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.27.4 - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.24.3)': + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.27.4 - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.24.3)': + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.27.4 - '@svgr/babel-preset@8.1.0(@babel/core@7.24.3)': + '@svgr/babel-preset@8.1.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.24.3 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.24.3) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.24.3) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.24.3) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.24.3) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.24.3) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.24.3) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.24.3) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.24.3) + '@babel/core': 7.27.4 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.27.4) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.27.4) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.27.4) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.27.4) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.27.4) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.27.4) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.27.4) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.27.4) '@svgr/core@8.1.0(typescript@5.8.3)': dependencies: - '@babel/core': 7.24.3 - '@svgr/babel-preset': 8.1.0(@babel/core@7.24.3) + '@babel/core': 7.27.4 + '@svgr/babel-preset': 8.1.0(@babel/core@7.27.4) camelcase: 6.3.0 cosmiconfig: 8.3.6(typescript@5.8.3) snake-case: 3.0.4 @@ -16679,13 +15689,13 @@ snapshots: '@svgr/hast-util-to-babel-ast@8.0.0': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.27.6 entities: 4.5.0 '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.8.3))': dependencies: - '@babel/core': 7.24.3 - '@svgr/babel-preset': 8.1.0(@babel/core@7.24.3) + '@babel/core': 7.27.4 + '@svgr/babel-preset': 8.1.0(@babel/core@7.27.4) '@svgr/core': 8.1.0(typescript@5.8.3) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 @@ -16703,11 +15713,11 @@ snapshots: '@svgr/webpack@8.1.0(typescript@5.8.3)': dependencies: - '@babel/core': 7.24.3 - '@babel/plugin-transform-react-constant-elements': 7.24.1(@babel/core@7.24.3) - '@babel/preset-env': 7.24.3(@babel/core@7.24.3) - '@babel/preset-react': 7.24.1(@babel/core@7.24.3) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.3) + '@babel/core': 7.27.4 + '@babel/plugin-transform-react-constant-elements': 7.24.1(@babel/core@7.27.4) + '@babel/preset-env': 7.27.2(@babel/core@7.27.4) + '@babel/preset-react': 7.27.1(@babel/core@7.27.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4) '@svgr/core': 8.1.0(typescript@5.8.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.8.3)) '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.8.3))(typescript@5.8.3) @@ -17831,15 +16841,6 @@ snapshots: '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.5 - babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.3): - dependencies: - '@babel/compat-data': 7.24.1 - '@babel/core': 7.24.3 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.27.4): dependencies: '@babel/compat-data': 7.24.1 @@ -17849,14 +16850,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.3): - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) - core-js-compat: 3.36.1 - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.27.4): dependencies: '@babel/core': 7.27.4 @@ -17865,13 +16858,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.3): - dependencies: - '@babel/core': 7.24.3 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.27.4): dependencies: '@babel/core': 7.27.4 @@ -18584,10 +17570,6 @@ snapshots: serialize-javascript: 6.0.2 webpack: 5.99.9(esbuild@0.25.5) - core-js-compat@3.36.1: - dependencies: - browserslist: 4.23.0 - core-js-compat@3.42.0: dependencies: browserslist: 4.25.0 @@ -18740,12 +17722,12 @@ snapshots: css-tree@2.2.1: dependencies: mdn-data: 2.0.28 - source-map-js: 1.2.0 + source-map-js: 1.2.1 css-tree@2.3.1: dependencies: mdn-data: 2.0.30 - source-map-js: 1.2.0 + source-map-js: 1.2.1 css-what@6.1.0: {} @@ -21199,7 +20181,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.27.4 '@babel/parser': 7.24.1 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -22887,7 +21869,7 @@ snapshots: '@msgpack/msgpack': 2.8.0 winston: 3.14.1 - next@15.3.3(@babel/core@7.24.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.3.3(@babel/core@7.27.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: '@next/env': 15.3.3 '@swc/counter': 0.1.3 @@ -22897,7 +21879,7 @@ snapshots: postcss: 8.4.31 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - styled-jsx: 5.1.6(@babel/core@7.24.3)(react@19.1.0) + styled-jsx: 5.1.6(@babel/core@7.27.4)(react@19.1.0) optionalDependencies: '@next/swc-darwin-arm64': 15.3.3 '@next/swc-darwin-x64': 15.3.3 @@ -24462,10 +23444,6 @@ snapshots: regenerator-runtime@0.14.1: {} - regenerator-transform@0.15.2: - dependencies: - '@babel/runtime': 7.27.6 - regexp-tree@0.1.27: {} regexp.prototype.flags@1.5.2: @@ -25076,7 +24054,7 @@ snapshots: snake-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.8.1 sockjs@0.3.24: dependencies: @@ -25415,12 +24393,12 @@ snapshots: dependencies: inline-style-parser: 0.2.2 - styled-jsx@5.1.6(@babel/core@7.24.3)(react@19.1.0): + styled-jsx@5.1.6(@babel/core@7.27.4)(react@19.1.0): dependencies: client-only: 0.0.1 react: 19.1.0 optionalDependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.27.4 stylehacks@6.1.1(postcss@8.5.4): dependencies: @@ -25464,7 +24442,7 @@ snapshots: css-tree: 2.3.1 css-what: 6.1.0 csso: 5.0.5 - picocolors: 1.0.0 + picocolors: 1.1.1 symbol-tree@3.2.4: {} From 21ce504cc01d8b72742301b45b8c3b62516ff49f Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 7 Apr 2025 15:55:14 -0700 Subject: [PATCH 110/211] style: Darken code background color --- packages/test-case-component/src/shiki.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/shiki.css b/packages/test-case-component/src/shiki.css index 7fd4c03d81..3ff520baf7 100644 --- a/packages/test-case-component/src/shiki.css +++ b/packages/test-case-component/src/shiki.css @@ -1,7 +1,7 @@ :root { --shiki-foreground: #eeeeee; --shiki-color-text: #eeeeee; - --shiki-background: #333333; + --shiki-background: #1f1f1f; --shiki-token-constant: #ff6666; --shiki-token-string: #c2ff6d; --shiki-token-comment: #15bc28; From 9ec5b8c1c791a758709b39e3a57a43d6b6a4de43 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 7 Apr 2025 18:36:00 -0700 Subject: [PATCH 111/211] style: Remove top border from .command --- packages/test-case-component/src/styles.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/styles.css b/packages/test-case-component/src/styles.css index 4facdeb2d3..cb2c0a5af4 100644 --- a/packages/test-case-component/src/styles.css +++ b/packages/test-case-component/src/styles.css @@ -48,7 +48,7 @@ pre.shiki { } .command { - border-top: 1px solid var(--color-border); + /* border-top: 1px solid var(--color-border); */ padding: 8px; font-weight: bold; text-align: center; From f1f43289989c0973cc0469d34930629ec66bc699 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 7 Apr 2025 18:36:47 -0700 Subject: [PATCH 112/211] feat: Create background color styles from Copied from packages/cursorless-vscode/package.json colors list --- packages/test-case-component/src/styles.css | 29 +++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/packages/test-case-component/src/styles.css b/packages/test-case-component/src/styles.css index cb2c0a5af4..25d5dde241 100644 --- a/packages/test-case-component/src/styles.css +++ b/packages/test-case-component/src/styles.css @@ -86,10 +86,35 @@ pre.shiki { background: green; } .decoration.pendingDeleteBackground { - background: #ff00008a; + background-color: #ff00008a; } + .decoration.referencedBackground { - background: #00a2ff4d; + background-color: #00a2ff4d; +} + +.decoration.justAddedBackground { + background-color: #09ff005b; +} + +.decoration.pendingModification0Background { + background-color: #8c00ff86; +} + +.decoration.pendingModification1Background { + background-color: #ff009d7e; +} + +.decoration.highlight0Background { + background-color: #d449ff42; +} + +.decoration.highlight1Background { + background-color: #60daff7a; +} + +.decoration.timingCalibrationBackground { + background-color: #230026; } .hat { From 75dd717b8abb192682765554a7817176ade7a154 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sat, 12 Apr 2025 13:18:10 -0700 Subject: [PATCH 113/211] feat: Upgrade shiki to ^3.2.2 in test-case-component --- packages/test-case-component/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index 246802be4a..fdbdc5bd50 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -41,7 +41,7 @@ "@types/fs-extra": "^11.0.4", "@types/jest": "29.5.12", "@types/react": "18.2.71", - "shiki": "^1.4.0", + "shiki": "^3.2.2", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "ts-jest": "29.1.2" From 1cefad59b0de3ac25fc5d6ca8f58cbc521599420 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 13:44:48 -0700 Subject: [PATCH 114/211] wip: Move temp test-case allow list to its own file --- .../cursorless-org/src/pages/allowList.tsx | 19 +++++++++++++++++ .../src/pages/component-sheet.tsx | 21 ++----------------- 2 files changed, 21 insertions(+), 19 deletions(-) create mode 100644 packages/cursorless-org/src/pages/allowList.tsx diff --git a/packages/cursorless-org/src/pages/allowList.tsx b/packages/cursorless-org/src/pages/allowList.tsx new file mode 100644 index 0000000000..3170f277c5 --- /dev/null +++ b/packages/cursorless-org/src/pages/allowList.tsx @@ -0,0 +1,19 @@ +export const testSelectedFiles = [ + "bringArgMadeAfterLook.yml", + // "chuckBlockAirUntilBatt.yml", + // "cutFine.yml", + // "chuckLineFine.yml", + // "bringAirAndBatAndCapToAfterItemEach.yml", + // "carveLineHarp.yml", + // "chuckBlockAir.yml", + // "chuckBlockAirUntilBatt.yml", + // "chuckBlockBatt.yml", + // "chuckBlockBattUntilAir.yml", + // "chuckFine.yml", + // "chuckLineFineBetweenRisk.yml", + // "clearBlockFine.yml", + // "clearFine.yml", + // "clearLineFine.yml", + // "bringAirToEndOfAir.yml", // Shiki intersect error + // "chuckBlockBatt2.yml", // Shiki intersect error +]; diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 334a41ab7a..5903ceec47 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -8,7 +8,7 @@ import { } from "@cursorless/test-case-component"; import { TestCaseComponentPage } from "@cursorless/test-case-component"; import type { TestCaseFixture } from "@cursorless/common"; - +import { testSelectedFiles } from "./allowList"; import { cheatsheetBodyClasses } from "@cursorless/cheatsheet"; @@ -39,24 +39,7 @@ async function loadYamlFiles(dir: string, selectedFiles?: string[]) { export async function getStaticProps() { const itemsDirActions = path.join(fixturesDir, "actions"); const itemsDirDecorations = path.join(fixturesDir, "decorations"); - const testSelectedFiles = [ - "bringArgMadeAfterLook.yml", - "chuckBlockAirUntilBatt.yml", - "cutFine.yml", - "chuckLineFine.yml", - "bringAirAndBatAndCapToAfterItemEach.yml", - "carveLineHarp.yml", - "chuckBlockAir.yml", - "chuckBlockAirUntilBatt.yml", - "chuckBlockBatt.yml", - "chuckBlockBatt2.yml", - "chuckBlockBattUntilAir.yml", - "chuckFine.yml", - "chuckLineFineBetweenRisk.yml", - "clearBlockFine.yml", - "clearFine.yml", - "clearLineFine.ym", - ]; + const dataActions = await loadYamlFiles(itemsDirActions, testSelectedFiles); const dataDecorations = await loadYamlFiles( itemsDirDecorations, From 54e388f7aed8983a8db69bf8352cb21fed259ea5 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 13:46:02 -0700 Subject: [PATCH 115/211] feat: Wrap yaml load in an error boundary --- .../cursorless-org/src/pages/component-sheet.tsx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 5903ceec47..eb930f956c 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -24,11 +24,15 @@ async function loadYamlFiles(dir: string, selectedFiles?: string[]) { path.extname(file) === ".yml" && (!selectedFiles || selectedFiles.includes(file)) ) { - const filePath = path.join(directoryPath, file); - const fileContents = fs.readFileSync(filePath, "utf8"); - const yamlData: any = yaml.load(fileContents); - yamlData.filename = file; - data.push(yamlData); + try { + const filePath = path.join(directoryPath, file); + const fileContents = fs.readFileSync(filePath, "utf8"); + const yamlData: any = yaml.load(fileContents); + yamlData.filename = file; + data.push(yamlData); + } catch { + console.error("File load failure", file); + } } }); From 8a2c9e5f47d1eae7bbd631b444ac98a8e5f54556 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 13:49:23 -0700 Subject: [PATCH 116/211] feat: Remove any failed loads before passing data obj --- .../src/pages/component-sheet.tsx | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index eb930f956c..9871274068 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -3,9 +3,7 @@ import fs from "fs"; import path from "path"; import Head from "next/head"; -import { - loadFixture, -} from "@cursorless/test-case-component"; +import { loadFixture } from "@cursorless/test-case-component"; import { TestCaseComponentPage } from "@cursorless/test-case-component"; import type { TestCaseFixture } from "@cursorless/common"; import { testSelectedFiles } from "./allowList"; @@ -50,13 +48,27 @@ export async function getStaticProps() { testSelectedFiles, ); + const data_errors: any[] = []; + const data = ( await Promise.all( - [...dataActions, ...dataDecorations].map((val) => { - return loadFixture(val); + [...dataActions, ...dataDecorations].map(async (val) => { + try { + // const upgraded = upgrade(data); + const fixture = await loadFixture(val); + return { ...fixture, raw: val }; + } catch (err) { + console.error(err); + data_errors.push(val); + return null; + } }), ) - ).filter((val) => val !== undefined); + ).filter((test) => test !== undefined); + + if (data_errors.length > 0) { + console.error("data errors:", data_errors); + } return { props: { data, bodyClasses: cheatsheetBodyClasses } }; } From 917fec41c138886c72b152b5cdeb252afdd13c21 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 13:55:15 -0700 Subject: [PATCH 117/211] chore: Add references to test-case-component tsconfig --- packages/test-case-component/tsconfig.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/tsconfig.json b/packages/test-case-component/tsconfig.json index e73c1b1ccc..ba7a4452d7 100644 --- a/packages/test-case-component/tsconfig.json +++ b/packages/test-case-component/tsconfig.json @@ -6,7 +6,14 @@ "skipLibCheck": true, "lib": ["es5", "es6", "dom"] }, - "references": [], + "references": [ + { + "path": "../common" + }, + { + "path": "../node-common" + } + ], "include": [ "src/**/*.ts", "src/**/*.json", From 8bc22142e3e836e9852c16254ec1989c9ac4da50 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 13:56:12 -0700 Subject: [PATCH 118/211] wip: Play with CSS styles shiki code block --- packages/test-case-component/src/styles.css | 65 ++++++++++++++++----- 1 file changed, 49 insertions(+), 16 deletions(-) diff --git a/packages/test-case-component/src/styles.css b/packages/test-case-component/src/styles.css index 25d5dde241..eaef0b4343 100644 --- a/packages/test-case-component/src/styles.css +++ b/packages/test-case-component/src/styles.css @@ -1,5 +1,5 @@ :root { - --line-height: 16px; + --line-height: 2rem; --color-border: #0003; } @@ -15,6 +15,34 @@ body { /* background-image: radial-gradient(at 30% 89%, hsla(220,76%,68%,1) 0px, transparent 50%), radial-gradient(at 35% 0%, hsla(242,68%,61%,1) 0px, transparent 50%), radial-gradient(at 93% 46%, hsla(129,87%,73%,1) 0px, transparent 50%), radial-gradient(at 23% 49%, hsla(50,77%,67%,1) 0px, transparent 50%), radial-gradient(at 17% 27%, hsla(331,64%,60%,1) 0px, transparent 50%), radial-gradient(at 79% 30%, hsla(151,61%,77%,1) 0px, transparent 50%), radial-gradient(at 26% 40%, hsla(36,65%,63%,1) 0px, transparent 50%); */ } +pre code { + display: grid; /* Ensure each line is treated as a block */ +} + +pre { + counter-reset: line; /* Initialize a counter for line numbers */ +} + +.line::before { + counter-increment: line; /* Increment the line counter */ + content: counter(line); /* Display the current line number */ + padding-inline: 1em; + text-align: right; + color: gray; /* Style the line numbers */ + font-size: 0.9em; + position: absolute; + left: -40px; /* Align line numbers to the left */ +} + +.line { + margin-left: 1.5rem; + position: relative; + width: 100%; + display: inline-block; + /* display: block; */ + /* padding-top: 1rem; */ +} + pre.shiki, pre.shiki span { line-height: var(--line-height); @@ -43,7 +71,7 @@ pre.shiki { display: flex; flex-direction: column; .line { - display: block; + display: inline-block; } } @@ -66,7 +94,7 @@ pre.shiki { } .selection { - display: inline-block; + /* display: inline-block; */ border-right: 2px solid #00b; animation: blink 1400ms infinite; padding: 0px 0.5px 0px 0; @@ -80,11 +108,16 @@ pre.shiki { } .decoration { display: inline-block; - padding: 0px 0.5px 0px 0.5px; - margin: 0 0px 0 -1px; - height: var(--line-height); - background: green; + /* padding: 0px 0.5px 0px 0.5px; */ + /* margin: 0 0px 0 -1px; */ + /* height: var(--line-height); */ + /* width: 100%; */ +} + +.full { + width: 100%; } + .decoration.pendingDeleteBackground { background-color: #ff00008a; } @@ -122,22 +155,22 @@ pre.shiki { display: inline-block; &::after { content: ""; - display: inline; + /* display: inline; */ /* top: 0px; */ - left: 50%; + /* left: 50%; */ position: absolute; - transform: translate(-50%, -100%); - background-color: grey; + transform: translate(-110%, -50%); + background-color: #b8b6cd; mask-repeat: no-repeat; - width: 10px; - height: 10px; + width: 0.5rem; + height: 0.5rem; } } .hat.default::after { mask-image: url('data:image/svg+xml;utf8,'); - top: -0.4px; - width: 7px; - height: 7px; + top: 0.2rem; + width: 0.5rem; + height: 0.5rem; } .hat.wing::after { mask-image: url('data:image/svg+xml;utf8,'); From 169e9c0cb03bb6f5dd3eee668303f2d0a59e034d Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 14:18:42 -0700 Subject: [PATCH 119/211] feat: Removed depricated code in leiu of shiki --- .../test-case-component/src/renderToHtml.ts | 182 ------------------ 1 file changed, 182 deletions(-) delete mode 100644 packages/test-case-component/src/renderToHtml.ts diff --git a/packages/test-case-component/src/renderToHtml.ts b/packages/test-case-component/src/renderToHtml.ts deleted file mode 100644 index f18bd3914c..0000000000 --- a/packages/test-case-component/src/renderToHtml.ts +++ /dev/null @@ -1,182 +0,0 @@ -// forked from https://github.com/SimeonC/shiki/blob/main/packages/shiki/src/renderer.ts -import { htmlEscape } from 'escape-goat'; -import type { ThemedToken } from "shiki"; - -// MIT License -const fontStyles = { - notSet: -1, - none: 0, - italic: 1, - bold: 2, - underline: 4, -} as const; - -export function groupBy( - elements: TObject[], - keyGetter: (element: TObject) => string, -) { - const map = new Map(); - for (const element of elements) { - const key = keyGetter(element); - if (map.has(key)) { - const group = map.get(key); - group.push(element); - } else { - map.set(key, [element]); - } - } - return map; -} - -export type HatType = "default"; -interface BaseElementProps { - style?: string; - children: string; - className?: string; -} - -const elements = { - pre({ className, style = "", children }: BaseElementProps) { - return `
${children}
`; - }, - - code({ children }: Pick) { - return `${children}`; - }, - - line({ className, children }: Omit) { - return `${children}`; - }, - - token({ style = "", children }: Omit) { - return `${children}`; - }, - - selection({ style = "", className, children }: BaseElementProps) { - return `${children}`; - }, - - hat({ hatType, children }: { hatType: HatType; children: string }) { - return `${children}`; - }, -} as const; -export type SelectionType = - | "decoration" - | "selection" - | "thatMark" - | "sourceMark"; -export type Token = - | ({ - type: "token"; - } & ThemedToken) - | { - type: "selection"; - className: string; - selection: Token[]; - } - | { - type: "hat"; - hatType: HatType; - content: string; - }; - -export function renderToHtml( - lines: Token[][], - options: { - langId?: string; - bg?: string; - fg?: string; - lineOptions?: { line: string }[]; - } = {}, -) { - const bg = options.bg || "#fff"; - const optionsByLineNumber = groupBy( - options.lineOptions ?? [], - (option) => option.line, - ); - - function h< - TType extends keyof typeof elements, - TProps extends BaseElementProps = Parameters<(typeof elements)[TType]>[0], - >(type: TType, props: Omit, children: string[]) { - const element = elements[type] as (typeof elements)[TType]; - if (element) { - children = children.filter(Boolean); - - return element({ - ...props, - children: type === "code" ? children.join("\n") : children.join(""), - } as any); - } - - return ""; - } - - function handleToken(token: Token): string { - if (token.type === "selection") { - return h( - "selection", - { className: token.className }, - token.selection.map((token) => handleToken(token)), - ); - } - if (token.type === "hat") { - return h("hat", token, [escapeHtml(token.content)]); - } - - const cssDeclarations = [`color: ${token.color || options.fg}`]; - if (token.fontStyle && fontStyles.italic) { - cssDeclarations.push("font-style: italic"); - } - if (token.fontStyle && fontStyles.bold) { - cssDeclarations.push("font-weight: bold"); - } - if (token.fontStyle && fontStyles.underline) { - cssDeclarations.push("text-decoration: underline"); - } - - return h( - "token", - { - style: cssDeclarations.join("; "), - }, - [escapeHtml(token.content)], - ); - } - - return h("pre", { className: "shiki", style: `background-color: ${bg}` }, [ - options.langId ? `
${options.langId}
` : "", - h( - "code", - {}, - lines.map((line, index) => { - const lineNumber = index + 1; - const lineOptions = optionsByLineNumber.get(lineNumber) ?? []; - const lineClasses = getLineClasses(lineOptions).join(" "); - return h( - "line", - { - className: lineClasses, - }, - line.length === 0 - ? [" "] - : line.map((token) => handleToken(token)), - ); - }), - ), - ]); -} - -function escapeHtml(html: string) { - return htmlEscape(html); -} - -function getLineClasses(lineOptions: { classes?: string }[]) { - const lineClasses = new Set(["line"]); - for (const lineOption of lineOptions) { - for (const lineClass of lineOption.classes ?? []) { - lineClasses.add(lineClass); - } - } - return Array.from(lineClasses); -} From 51490c89797797b297b08c061816151f7575f73b Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 14:20:56 -0700 Subject: [PATCH 120/211] refactor: Switch from arrow to function declaration in TestCaseComponentPage --- .../src/components/TestCaseComponentPage.tsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/test-case-component/src/components/TestCaseComponentPage.tsx b/packages/test-case-component/src/components/TestCaseComponentPage.tsx index eb1e0bac1a..02ffbc7648 100644 --- a/packages/test-case-component/src/components/TestCaseComponentPage.tsx +++ b/packages/test-case-component/src/components/TestCaseComponentPage.tsx @@ -4,9 +4,7 @@ import "../shiki.css"; import "../styles.css"; import type { TestCaseFixture } from "@cursorless/common"; -export const TestCaseComponentPage: React.FC<{ data: TestCaseFixture[];}> = ({ - data, -}) => { +export function TestCaseComponentPage({ data }: { data: TestCaseFixture[] }) { return (

@@ -20,8 +18,8 @@ export const TestCaseComponentPage: React.FC<{ data: TestCaseFixture[];}> = ({

{data.map((item: any) => { - return + return ; })}
); -}; +} From 5d59754b537efbfbedd37ec0b123a74bfd52c2f3 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 14:22:47 -0700 Subject: [PATCH 121/211] feat: Create Before, During, After components for shikiComponent --- .../src/components/shikiComponent.tsx | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/packages/test-case-component/src/components/shikiComponent.tsx b/packages/test-case-component/src/components/shikiComponent.tsx index 23ed184301..c6c0a2ca9f 100644 --- a/packages/test-case-component/src/components/shikiComponent.tsx +++ b/packages/test-case-component/src/components/shikiComponent.tsx @@ -33,3 +33,27 @@ export const ShikiComponent: React.FC<{ data: any }> = ({ data }) => {
); }; + +const Before = ({ content }: { content: string }) => { + return
; +}; + +const During = ({ content }: { content: string }) => { + if (content) { + console.log("🧄", content); + + return ( +
+ ); + } + return <>; +}; + +const After = ({ content }: { content: string }) => { + return ( +
+ ); +}; From c7a525160b102465f3b0c9dd71d3c967bb3a7a81 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 14:23:10 -0700 Subject: [PATCH 122/211] refactor: Wrap JSON data in a details element in shikiComponent --- .../test-case-component/src/components/shikiComponent.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/src/components/shikiComponent.tsx b/packages/test-case-component/src/components/shikiComponent.tsx index c6c0a2ca9f..a602cf5f7b 100644 --- a/packages/test-case-component/src/components/shikiComponent.tsx +++ b/packages/test-case-component/src/components/shikiComponent.tsx @@ -29,7 +29,12 @@ export const ShikiComponent: React.FC<{ data: any }> = ({ data }) => { )}
-
{JSON.stringify(data, null, 2)}
+
+ JSON +
+          {JSON.stringify(data, null, 2)}
+        
+
); }; From daf829b3b0902e547efda61b093c9b2a5c76d468 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 14:23:43 -0700 Subject: [PATCH 123/211] feat: Use Before, During, After components in shikiComponent --- .../src/components/shikiComponent.tsx | 23 +++---------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/packages/test-case-component/src/components/shikiComponent.tsx b/packages/test-case-component/src/components/shikiComponent.tsx index a602cf5f7b..db47e7a02f 100644 --- a/packages/test-case-component/src/components/shikiComponent.tsx +++ b/packages/test-case-component/src/components/shikiComponent.tsx @@ -6,27 +6,10 @@ export const ShikiComponent: React.FC<{ data: any }> = ({ data }) => {

{data.command}

- {data.before && ( -
- )} - {(data.during) && ( - <> -
- - )} +
{data.command}
- {data.after && ( -
- )} + +
From 1d1a185487b4c5dab0b307b4d09a2e3067ba7374 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 14:24:30 -0700 Subject: [PATCH 124/211] refactor: Switch to component function declaration in shikiComponent --- .../test-case-component/src/components/shikiComponent.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/test-case-component/src/components/shikiComponent.tsx b/packages/test-case-component/src/components/shikiComponent.tsx index db47e7a02f..045b8ea734 100644 --- a/packages/test-case-component/src/components/shikiComponent.tsx +++ b/packages/test-case-component/src/components/shikiComponent.tsx @@ -1,6 +1,4 @@ -import * as React from "react"; - -export const ShikiComponent: React.FC<{ data: any }> = ({ data }) => { +export function ShikiComponent({ data }: { data: any }) { return (
@@ -20,7 +18,7 @@ export const ShikiComponent: React.FC<{ data: any }> = ({ data }) => {
); -}; +} const Before = ({ content }: { content: string }) => { return
; From 469afa825779d39c3350a5ce82f784f58ad3de3b Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 14:30:37 -0700 Subject: [PATCH 125/211] feat: Create helpers file for creating shiki decoration objects --- packages/test-case-component/src/helpers.ts | 275 ++++++++++++++++++++ 1 file changed, 275 insertions(+) create mode 100644 packages/test-case-component/src/helpers.ts diff --git a/packages/test-case-component/src/helpers.ts b/packages/test-case-component/src/helpers.ts new file mode 100644 index 0000000000..a27f05e3c3 --- /dev/null +++ b/packages/test-case-component/src/helpers.ts @@ -0,0 +1,275 @@ +import type { + // PositionPlainObject, + SelectionPlainObject, + SerializedMarks, + TargetPlainObject, +} from "@cursorless/common"; + +import type { DecorationItem } from "shiki" + +/** + * Splits a string into an array of objects containing the line content + * and the cumulative offset from the start of the string. + * + * @param {string} documentContents - The string to split into lines. + * @returns {{ line: string, offset: number }[]} An array of objects with line content and cumulative offset. + */ +function splitDocumentWithOffsets(documentContents: string): { line: string; offset: number }[] { + const lines = documentContents.split("\n"); + let cumulativeOffset = 0; + + return lines.map((line) => { + const result = { line, offset: cumulativeOffset }; + cumulativeOffset += line.length + 1; // +1 for the newline character + return result; + }); +} + +/** + * Creates decorations based on the split document with offsets and marks. + * + * @param {Object} options - An object containing optional fields like marks, command, or ide. + * @param {SerializedMarks} [options.marks] - An object containing marks with line, start, and end positions. + * @param {any} [options.command] - (Optional) The command object specifying the command details. + * @param {any} [options.ide] - (Optional) The ide object specifying the IDE details. + * @returns {DecorationItem[]} An array of decoration objects. + */ +function createDecorations( + options: { + marks?: SerializedMarks; + command?: any; + ide?: any; + lines?: string[] + selections?: SelectionPlainObject[] + thatMark?: TargetPlainObject[] + } = {} // Default to an empty object +): DecorationItem[] { + const { marks, ide, lines, selections, thatMark /* command */ } = options + if (thatMark) { + console.log("📅", thatMark) + } + + const decorations: DecorationItem[] = []; + const markDecorations = getMarkDecorations({ marks, lines }) + const ideFlashDecorations = getIdeFlashDecorations({ lines, ide }) + decorations.push(...markDecorations); + decorations.push(...ideFlashDecorations); + const selectionRanges = getSlections({ selections }) + decorations.push(...selectionRanges); + + if (thatMark) { + const modificationReferences = getThatMarks({ thatMark }) + decorations.push(...modificationReferences); + } + + return decorations + +} + +/** + * Generates Shiki decorations for marks on a specific line. + * + * @param {Object} params - The parameters for generating decorations. + * @param {SerializedMarks} [params.marks] - An object containing serialized marks with start and end positions. + * @param {number} params.index - The index of the current line being processed. + * @param {{ line: string; offset: number }} params.lineData - The line content and its cumulative offset. + * @returns {DecorationItem[]} An array of Shiki decorations for the specified line. + * + */ +function getMarkDecorations({ + marks, + lines +}: { + marks?: SerializedMarks; + lines?: string[] +}): DecorationItem[] { + const decorations: DecorationItem[] = []; + + Object.entries(marks || {}).forEach(([key, { start, end }]) => { + const [hatType, letter] = key.split(".") as [keyof typeof classesMap, string]; + console.log("🔑", key, start, end); + + const markLineStart = start.line + + if (!lines) { + console.warn("Lines are undefined. Skipping decoration generation."); + return []; + } + const currentLine = lines[markLineStart] + + const searchStart = start.character; + const nextLetterIndex = currentLine.indexOf(letter, searchStart); + + if (nextLetterIndex === -1) { + console.warn( + `Letter "${letter}" not found after position ${searchStart} in line: "${currentLine}"` + ); + return; // Skip this mark if the letter is not found + } + + const decorationItem: DecorationItem = { + start, + end: { line: start.line, character: nextLetterIndex + 1 }, + properties: { + class: getDecorationClass(hatType), // Replace with the desired class name for marks + }, + alwaysWrap: true, + } + + console.log("🔑🔑", decorationItem) + + decorations.push(decorationItem); + }); + + return decorations; +} + +type LineRange = { type: string; start: number; end: number } +type PositionRange = { type: string; start: { line: number; character: number }; end: { line: number; character: number } }; + +type RangeType = + | LineRange + | PositionRange + + +function getIdeFlashDecorations({ + ide, + lines, +}: { + ide?: { + flashes?: { style: keyof typeof classesMap; range: RangeType }[]; + }; + lines?: string[]; +} = {}): DecorationItem[] { + if (!lines) { + console.warn("Lines are undefined. Skipping line decorations."); + return []; + } + + if (!ide?.flashes || !Array.isArray(ide.flashes)) { + console.warn("No flashes found in IDE. Skipping line decorations."); + return []; + } + + const decorations: DecorationItem[] = []; + + const { flashes } = ide + + flashes.forEach(({ style, range }) => { + const { type } = range; + + if (isLineRange(range)) { + const { start: lineStart, end: lineEnd } = range + + /* Split a multi-line range into single lines so that shiki doesn't add + * multiple classes to the same span causing CSS conflicts + */ + for (let line = lineStart; line <= lineEnd; line++) { + const contentLine = lines[line]; + const startPosition = { line, character: 0 }; + const endPosition = { line, character: contentLine.length }; + const decorationItem = { + start: startPosition, + end: endPosition, + properties: { + class: `${getDecorationClass(style)} full`, + }, + alwaysWrap: true, + }; + console.log("🔥🔥", decorationItem); + decorations.push(decorationItem); + } + + } else if (isPositionRange(range)) { + const { start: rangeStart, end: rangeEnd } = range; + const decorationItem = { + start: rangeStart, + end: rangeEnd, + properties: { + class: getDecorationClass(style), + }, + alwaysWrap: true, + } + console.log("🔥🔥", decorationItem) + decorations.push(decorationItem); + } else { + console.warn(`Unknown range type "${type}". Skipping this flash.`); + } + }); + + return decorations; +} + +function getSlections( + { + selections, + }: { + selections?: SelectionPlainObject[]; + lines?: string[] + }): DecorationItem[] { + const decorations: DecorationItem[] = []; + if (selections === undefined || selections.length === 0) { + console.warn("Lines are undefined. Skipping decoration generation."); + return [] + } + selections.forEach(({ anchor, active }) => { + const decorationItem = { + start: anchor, + end: active, + properties: { + class: getDecorationClass("selection"), + }, + alwaysWrap: true, + } + decorations.push(decorationItem) + console.log("🟦", decorationItem) + }) + + return decorations +} + +function getThatMarks({ thatMark }: { thatMark: TargetPlainObject[] }): DecorationItem[] { + console.log("☝️", thatMark) + const decorations: DecorationItem[] = []; + if (thatMark === undefined) { + console.warn("thatMarks are undefined. Skipping decoration generation."); + return [] + } + + return decorations +} + +// Type guard for line range +function isLineRange(range: RangeType): range is LineRange { + return typeof range.start === "number" + && typeof range.end === "number" + && range.type === "line"; +} + +// Type guard for position range +function isPositionRange( + range: RangeType +): range is PositionRange { + return typeof range.start === "object" + && typeof range.end === "object" + && range.type === "character"; +} + + +const DEFAULT_HAT_CLASS = "hat default"; +const classesMap = { + default: DEFAULT_HAT_CLASS, + pendingDelete: "decoration pendingDeleteBackground", + referenced: "decoration referencedBackground", + selection: "selection" +}; + +function getDecorationClass(key: keyof typeof classesMap): string { + return classesMap[key] || DEFAULT_HAT_CLASS; +} + + +export { + splitDocumentWithOffsets, + createDecorations +} \ No newline at end of file From b74efe052b5a8c058fa4d5bf38ffe9e16f81a657 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 14:31:37 -0700 Subject: [PATCH 126/211] wip: Adapt old generateHtml to use Shiki --- .../test-case-component/src/generateHtml.ts | 479 +++--------------- 1 file changed, 72 insertions(+), 407 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index 22e7c7c368..c89dcd39d8 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,32 +1,11 @@ -import { - getHighlighter, - createCssVariablesTheme, -} from "shiki"; +import { createHighlighter, createCssVariablesTheme } from "shiki"; import type { BundledLanguage } from "shiki"; -import { renderToHtml } from "./renderToHtml"; -import type { HatType, SelectionType, Token } from "./renderToHtml"; -import type { PositionPlainObject } from "@cursorless/common"; +import type { TargetPlainObject, TestCaseSnapshot } from "@cursorless/common"; -type Lang = BundledLanguage; +import { createDecorations } from "./helpers"; -interface CursorlessFixtureSelection { - type: "line" | "selection"; - name?: string; - anchor: PositionPlainObject; - active: PositionPlainObject; -} -interface CursorlessFixtureState { - documentContents: any; - marks?: Record< - `${HatType}.${string}`, - { start: PositionPlainObject } - >; - flashes?: CursorlessFixtureSelection[]; - selections?: CursorlessFixtureSelection[]; - thatMark?: [CursorlessFixtureSelection]; - sourceMark?: [CursorlessFixtureSelection]; -} +type Lang = BundledLanguage; const myTheme = createCssVariablesTheme({ name: "css-variables", @@ -36,409 +15,95 @@ const myTheme = createCssVariablesTheme({ }); /** - * Generates HTML content based on the provided state and language. + * Generates HTML content based on the provided state, language, command, and ide. * - * @param {CursorlessFixtureState} state - The state object containing the necessary data for HTML generation. + * @param {TestCaseSnapshot} state - The state object containing the necessary data for HTML generation. * @param {Lang} lang - The language object specifying the language for the HTML content. + * @param {any} [command] - (Optional) The command object specifying the command details. + * @param {any} [ide] - (Optional) The ide object specifying the IDE details. * @returns {Promise} A promise that resolves to the generated HTML content. */ -export async function generateHtml(state: CursorlessFixtureState, lang: Lang) { - return new HTMLGenerator(state, lang).generate(); +export async function generateHtml({ + stateName, + state, + languageId: lang, + command, + ide, + raw +}: { + stateName: string; + state: TestCaseSnapshot; + languageId: BundledLanguage; + command?: any; // Replace `any` with the appropriate type if with + ide?: any; // Replace `any` with the appropriate type if known + raw: any; +}) { + return new HTMLGenerator({ state, lang, command, ide, raw }).generate(); } -const highlighter = getHighlighter({ +const highlighter = createHighlighter({ themes: [myTheme], langs: ["javascript", "typescript"], }); class HTMLGenerator { - private state: CursorlessFixtureState; + private state: TestCaseSnapshot; private lang: Lang; - private tokens: Token[][]; - private lineOptions: any[]; - - constructor(state: CursorlessFixtureState, lang: Lang) { + private command?: any; + private ide?: any; + private raw: any; + + constructor({ + state, + lang, + command, + ide, + raw + }: { + state: TestCaseSnapshot, + lang: Lang, + command?: any, + ide?: any, + raw?: any + }) { this.state = state; this.lang = lang; - this.tokens = []; - this.lineOptions = []; + this.command = command; // Optional command parameter + this.ide = ide; // Optional ide parameter + this.raw = raw } - async generate() { - await this.getTokens(); - this.applyMarks(); - this.applyAllSelections(); - return renderToHtml(this.tokens, { - bg: "var(--shiki-background)", - fg: "var(--shiki-foreground)", - lineOptions: this.lineOptions, - }); - } - async getTokens() { + async generate() { + const decorations = await this.getDecorations(); const options = { theme: "css-variables", lang: this.lang, + decorations }; - this.tokens = (await highlighter) - .codeToTokens(this.state.documentContents, options) - .tokens.map((line) => - line.map( - (token) => - ({ - ...token, - type: "token", - }) as Token, - ), - ); - } - - applyMarks() { - Object.entries(this.state.marks || {}).forEach(([key, mark]) => { - const [type, letterArg] = key.split(".") as [HatType, string]; - const letter = !letterArg || letterArg === "" ? "." : letterArg; - const line = this.tokens[mark.start.line]; - if (!line) { - return; - } - this.insertHat( - line as Extract[], - type, - letter, - mark.start.character, - ); - }); - } - insertHat( - line: Extract[], - hatType: HatType, - markCharacter: string, - wordStart: number, - ) { - let rawIndex = 0; - for (let t = 0; t < line.length; t += 1) { - const token = line[t]; - if (token.content.length + rawIndex < wordStart) { - rawIndex += token.content.length; - continue; - } - for (let i = 0; i < token.content.length; i += 1) { - rawIndex += 1; - if (token.content[i] === markCharacter) { - line.splice( - t, - 1, - { ...token, content: token.content.substring(0, i) }, - { - type: "hat", - hatType, - content: token.content.substring(i, i + 1), - }, - { ...token, content: token.content.substring(i + 1) }, - ); - return; - } - } - throw new Error(`Mark not found`); - } - } - - applyAllSelections() { - if (!this.applySelectionsFromState("flashes")) { - this.applySelectionsFromState("selections"); - } - this.applySelectionsFromState("thatMark"); - this.applySelectionsFromState("sourceMark"); - } - - applySelectionsFromState( - key: "flashes" | "selections" | "thatMark" | "sourceMark", - ): boolean { - const selections = this.state[key]; - if (!selections?.length) { - return false; - } - const selectionParser = new SelectionParser( - this.tokens, - key.replace(/s$/gi, "") as SelectionType, - ); - selections.forEach((selection) => { - if (selection.type === "line") { - return this.applyLineSelection(key, selection); - } - selectionParser.parse(selection); - }); - return true; - } - - getSelectionClasses( - selectionType: keyof typeof this.state, - selection: CursorlessFixtureSelection, - ) { - const classes = [selectionType.replace(/s$/g, "")]; - if (selection.name) { - classes.push(selection.name); - } - return classes; - } - - applyLineSelection( - selectionType: keyof typeof this.state, - selection: CursorlessFixtureSelection, - ) { - const classes = this.getSelectionClasses(selectionType, selection); - const { anchor: start, active: end } = selection; - for (let i = start.line + 1; i <= end.line + 1; i += 1) { - this.lineOptions.push({ - line: i, - classes, - }); - } - } -} - -class SelectionParser { - private lines: Token[][]; - private selectionType: SelectionType; - - constructor(lines: Token[][], selectionType: SelectionType) { - this.lines = lines; - this.selectionType = selectionType; - } - - parse(selection: CursorlessFixtureSelection) { - let start, end; - if (selection.type === "UntypedTarget") { - start = selection.contentRange.start.line; - end = selection.contentRange.end.line; - } else { - start = selection.anchor.line; - end = selection.active.line; - } - for (let l = end.line; l <= start.line; l += 1) { - if (l !== end.line && l !== start.line) { - this.handleInsideLine(l); - continue; - } - this.lines[l] = this.parseLine(l, start, end); - } - } - - parseLine(l: number, start: PositionPlainObject, end: PositionPlainObject) { - const lineParser = new SelectionLineParser( - this.selectionType, - this.lines[l], - ); - if (end.line === start.line) { - return lineParser.parse(start.character, end.character); - } - if (l === end.line) { - return lineParser.parse(0, end.character); - } - return lineParser.parse(start.character, Infinity); - } - - handleInsideLine(currentLine: number) { - this.lines[currentLine] = [ - { - type: "selection", - selection: this.lines[currentLine], - className: this.selectionType, - }, - ]; - } -} -type BaseToken = Exclude; -type SelectionToken = Extract; - -class SelectionLineParser { - selectionType: SelectionType; - line: Token[]; - result: Token[]; - activeSelectionTypes: string[]; - startIndex: number; - endIndex: number; - rawIndex = 0; - - constructor(selectionType: SelectionType, line: Token[]) { - this.selectionType = selectionType; - this.line = [...line]; - this.result = []; - this.activeSelectionTypes = []; - this.startIndex = 0; - this.endIndex = Infinity; - } - - hasRemainingTokens() { - return this.line.length > 0; - } - - getTokenState(tokenStart: number, tokenEnd: number) { - if (tokenEnd <= this.startIndex || this.endIndex <= tokenStart) { - return "outside"; - } - if (tokenStart === this.startIndex && tokenEnd === this.endIndex) { - return "entire"; - } - if (!this.getCurrentSelectionToken() && tokenEnd >= this.endIndex) { - return "inner"; - } - if (!this.getCurrentSelectionToken()) { - return "start"; - } - if (tokenEnd >= this.endIndex) { - return "end"; - } - return "continue"; - } - - getCurrentSelectionToken() { - const lastResult = this.result[this.result.length - 1]; - return lastResult?.type === "selection" ? lastResult : undefined; - } - - parse(startIndex: number, endIndex: number) { - this.startIndex = startIndex; - this.endIndex = endIndex; - this.rawIndex = 0; - while (this.hasRemainingTokens()) { - this.parseToken(this.line.shift()); - } - return this.result; - } - - parseToken(token: Token | undefined) { - if (!token) { - return; - } - if (token.type === "selection") { - return this.parseSelection(token); - } - const tokenStart = this.rawIndex; - this.incrementRawIndex(token); - const tokenEnd = this.rawIndex; - const state = this.getTokenState(tokenStart, tokenEnd); - switch (state) { - case "outside": { - this.result.push(token); - return; - } - case "entire": { - this.createSelection(token); - return; - } - case "start": { - this.startSelection(token); - return; - } - case "continue": { - this.getCurrentSelectionToken()?.selection.push(token); - return; - } - case "end": { - this.endSelection(token); - return; - } - case "inner": { - this.innerSelection(token); - return; - } - } - } - - parseSelection(token: SelectionToken) { - this.activeSelectionTypes.push(token.className); - this.result.push({ - type: "selection", - className: this.activeSelectionTypes.join(" "), - selection: [], - }); - for (const subToken of token.selection) { - this.parseToken(subToken); - } - this.activeSelectionTypes.pop(); - this.result.push({ - type: "selection", - className: this.activeSelectionTypes.join(" "), - selection: [], - }); - } - - getCurrentSelectionClassName() { - return this.selectionType; - } - - incrementRawIndex(token: BaseToken) { - this.rawIndex += token.content.length; - } - - createSelection(token: Token) { - this.activeSelectionTypes.push( - (token as SelectionToken).className || - this.getCurrentSelectionClassName(), - ); - this.result.push({ - type: "selection", - className: this.activeSelectionTypes.join(" "), - selection: [token], - }); - } - - startSelection(token: BaseToken) { - const selectionStartIndex = - token.content.length - (this.rawIndex - this.startIndex); - const preSelectionContent = token.content.substring(0, selectionStartIndex); - const selectionContent = token.content.substring(selectionStartIndex); - if (preSelectionContent.length) { - this.result.push({ - ...token, - content: preSelectionContent, - }); - } - this.createSelection({ ...token, content: selectionContent }); - } - - endSelection(token: BaseToken) { - const selectionStartIndex = - token.content.length - (this.rawIndex - this.endIndex); - const selectionContent = token.content.substring(0, selectionStartIndex); - const postSelectionContent = token.content.substring(selectionStartIndex); - this.getCurrentSelectionToken()?.selection.push({ - ...token, - content: selectionContent, - }); - this.activeSelectionTypes.pop(); - if (postSelectionContent.length) { - this.result.push({ - ...token, - content: postSelectionContent, - }); - } - } - - innerSelection(token: BaseToken) { - const stringStart = - token.content.length - (this.rawIndex - this.startIndex); - const stringEnd = token.content.length - (this.rawIndex - this.endIndex); - const preSelectionContent = token.content.substring(0, stringStart); - const selectionContent = token.content.substring(stringStart, stringEnd); - const postSelectionContent = token.content.substring(stringEnd); - if (preSelectionContent.length) { - this.result.push({ - ...token, - content: preSelectionContent, - }); - } - this.createSelection({ - ...token, - content: selectionContent, - }); - if (postSelectionContent.length) { - this.result.push({ - ...token, - content: postSelectionContent, - }); - } + const marker = await highlighter + const codeBody = marker.codeToHtml(this.state.documentContents, options) + let clipboard = "" + if (this.state.clipboard) { + clipboard = `
clipboard: ${this.state.clipboard}
` + } + const output = clipboard !== "" ? codeBody + clipboard : codeBody + return output + } + + async getDecorations() { + const potentialMarks = this.state.marks || {} + const lines = this.state.documentContents.split("\n") + console.log("💎", this.state.thatMark) + const decorations = createDecorations({ + marks: potentialMarks, + ide: this.ide, + command: this.command, + lines, + selections: this.state.selections, + thatMark: this.state.thatMark + }) + return decorations } } From fb7fdcc7935c858577dee1380cb7a3a31ac0e1d7 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 14:32:24 -0700 Subject: [PATCH 127/211] wip: Adapt old loadFixture to use Shiki --- .../test-case-component/src/loadFixture.ts | 105 ++++++++++-------- 1 file changed, 57 insertions(+), 48 deletions(-) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index 9b282cf31e..56604dd2c8 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -1,13 +1,26 @@ -import type { PositionPlainObject } from "@cursorless/common"; -import type { TestCaseFixture, TestCaseSnapshot } from "@cursorless/common"; -import { generateHtml } from "./generateHtml"; +import type { TargetPlainObject, TestCaseFixture, TestCaseSnapshot } from "@cursorless/common"; +import { generateHtml } from "./generateHtml.js"; +import type { BundledLanguage } from "shiki"; -async function safeGenerateHtml( - ...args: [stateName: string, ...rest: Parameters] -) { - const [stateName, state, languageId] = args; +async function safeGenerateHtml({ + stateName, + state, + languageId, + command, + ide, + thatMarkFinalState +}: { + stateName: string; + state: TestCaseSnapshot; + languageId: BundledLanguage; + command?: any; // Replace `any` with the appropriate type if known + ide?: any; // Replace `any` with the appropriate type if known + thatMarkFinalState?: TargetPlainObject +}) { + console.log("✨" + stateName + "✨"); try { - return await generateHtml(state, languageId); + const genObj = { stateName, state, languageId, command, ide } + return await generateHtml(genObj); } catch (e) { console.error("error in state", stateName, e); console.error(JSON.stringify(state, null, 2)); @@ -17,18 +30,21 @@ async function safeGenerateHtml( interface loadFixtureProps extends TestCaseFixture { filename: string; + languageId: BundledLanguage; + initialState: TestCaseSnapshot; + finalState: TestCaseSnapshot; } export async function loadFixture(data: loadFixtureProps) { try { - const during = await getDuring(data); - const before = await getBefore({ stateName: "initialState", state: data.initialState, languageId: data.languageId, }); + const during = await getDuring(data); + const after = await getAfter({ stateName: "finalState", state: data.finalState, @@ -50,57 +66,50 @@ export async function loadFixture(data: loadFixtureProps) { } } -async function getBefore({ +type Foo = TestCaseSnapshot & TargetPlainObject; + +async function getAfter({ stateName, state, languageId, }: { stateName: string; - state: TestCaseSnapshot; - languageId: string; + state: Foo; + languageId: BundledLanguage; }) { - return await safeGenerateHtml(stateName, state, languageId); + if (!state) { + throw new Error("finalState is undefined"); + } + return await safeGenerateHtml({ stateName, state, languageId }); } -async function getAfter({ +type DataFixture = Partial + +async function getDuring(data: DataFixture) { + const { command, ide } = data + const stateName = "middleState" + const state = data.initialState + const languageId = data.languageId as BundledLanguage + const { thatMark: thatMarkFinalState } = data.finalState + const genObj: TestCaseSnapshot & typeof thatMarkFinalState = { stateName, state, languageId, raw: data } + if (command) { + genObj.command = command + } + if (ide) { + genObj.ide = ide + } + + return await generateHtml(genObj); +} + +async function getBefore({ stateName, state, languageId, }: { stateName: string; state: TestCaseSnapshot; - languageId: string; + languageId: BundledLanguage; }) { - // todo, handle clipboard - return await safeGenerateHtml(stateName, state, languageId); -} - -async function getDuring(data: TestCaseFixture) { - if (!!data.ide && data.ide.flashes) { - return await safeGenerateHtml( - "flashes", - { - ...data.initialState, - flashes: data.ide.flashes.map( - (props: { - name: string; - type: string; - start: PositionPlainObject; - end: PositionPlainObject; - }) => { - const { name, type, start, end } = props; - console.log("🦄", props); - return { - name, - type, - anchor: start, - active: end, - }; - }, - ), - }, - data.languageId, - ); - } - return null; + return await safeGenerateHtml({ stateName, state, languageId }); } \ No newline at end of file From f42d1f22ffc17663eb6a6f8f177576da49b17360 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 22:11:26 -0700 Subject: [PATCH 128/211] chore: Refresh pnpm-lock.yaml during rebase --- pnpm-lock.yaml | 129 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 120 insertions(+), 9 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0bc09dca8a..a0a666d5d2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -963,8 +963,8 @@ importers: specifier: 29.7.0 version: 29.7.0 shiki: - specifier: ^1.4.0 - version: 1.4.0 + specifier: ^3.2.2 + version: 3.6.0 ts-jest: specifier: 29.1.2 version: 29.1.2(@babel/core@7.27.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.5)(jest@29.7.0(@types/node@20.17.50)(ts-node@10.9.2(@types/node@20.17.50)(typescript@5.8.3)))(typescript@5.8.3) @@ -3602,8 +3602,26 @@ packages: '@rushstack/eslint-patch@1.11.0': resolution: {integrity: sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==} - '@shikijs/core@1.4.0': - resolution: {integrity: sha512-CxpKLntAi64h3j+TwWqVIQObPTED0FyXLHTTh3MKXtqiQNn2JGcMQQ362LftDbc9kYbDtrksNMNoVmVXzKFYUQ==} + '@shikijs/core@3.6.0': + resolution: {integrity: sha512-9By7Xb3olEX0o6UeJyPLI1PE1scC4d3wcVepvtv2xbuN9/IThYN4Wcwh24rcFeASzPam11MCq8yQpwwzCgSBRw==} + + '@shikijs/engine-javascript@3.6.0': + resolution: {integrity: sha512-7YnLhZG/TU05IHMG14QaLvTW/9WiK8SEYafceccHUSXs2Qr5vJibUwsDfXDLmRi0zHdzsxrGKpSX6hnqe0k8nA==} + + '@shikijs/engine-oniguruma@3.6.0': + resolution: {integrity: sha512-nmOhIZ9yT3Grd+2plmW/d8+vZ2pcQmo/UnVwXMUXAKTXdi+LK0S08Ancrz5tQQPkxvjBalpMW2aKvwXfelauvA==} + + '@shikijs/langs@3.6.0': + resolution: {integrity: sha512-IdZkQJaLBu1LCYCwkr30hNuSDfllOT8RWYVZK1tD2J03DkiagYKRxj/pDSl8Didml3xxuyzUjgtioInwEQM/TA==} + + '@shikijs/themes@3.6.0': + resolution: {integrity: sha512-Fq2j4nWr1DF4drvmhqKq8x5vVQ27VncF8XZMBuHuQMZvUSS3NBgpqfwz/FoGe36+W6PvniZ1yDlg2d4kmYDU6w==} + + '@shikijs/types@3.6.0': + resolution: {integrity: sha512-cLWFiToxYu0aAzJqhXTQsFiJRTFDAGl93IrMSBNaGSzs7ixkLfdG6pH11HipuWFGW5vyx4X47W8HDQ7eSrmBUg==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -6884,6 +6902,9 @@ packages: hast-util-to-estree@3.1.0: resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + hast-util-to-jsx-runtime@2.3.0: resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} @@ -8933,6 +8954,12 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@4.3.3: + resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} + open@10.1.0: resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} @@ -9838,6 +9865,9 @@ packages: property-information@6.4.1: resolution: {integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==} + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -10101,6 +10131,15 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.0.1: + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -10491,8 +10530,8 @@ packages: engines: {node: '>=4'} hasBin: true - shiki@1.4.0: - resolution: {integrity: sha512-5WIn0OL8PWm7JhnTwRWXniy6eEDY234mRrERVlFa646V2ErQqwIFd2UML7e0Pq9eqSKLoMa3Ke+xbsF+DAuy+Q==} + shiki@3.6.0: + resolution: {integrity: sha512-tKn/Y0MGBTffQoklaATXmTqDU02zx8NYBGQ+F6gy87/YjKbizcLd+Cybh/0ZtOBX9r1NEnAy/GTRDKtOsc1L9w==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -15555,7 +15594,38 @@ snapshots: '@rushstack/eslint-patch@1.11.0': {} - '@shikijs/core@1.4.0': {} + '@shikijs/core@3.6.0': + dependencies: + '@shikijs/types': 3.6.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@3.6.0': + dependencies: + '@shikijs/types': 3.6.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.3 + + '@shikijs/engine-oniguruma@3.6.0': + dependencies: + '@shikijs/types': 3.6.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.6.0': + dependencies: + '@shikijs/types': 3.6.0 + + '@shikijs/themes@3.6.0': + dependencies: + '@shikijs/types': 3.6.0 + + '@shikijs/types@3.6.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} '@sideway/address@4.1.5': dependencies: @@ -19471,6 +19541,20 @@ snapshots: transitivePeerDependencies: - supports-color + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.1.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.3 + zwitch: 2.0.4 + hast-util-to-jsx-runtime@2.3.0: dependencies: '@types/estree': 1.0.5 @@ -22207,6 +22291,14 @@ snapshots: dependencies: mimic-function: 5.0.1 + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@4.3.3: + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.0.1 + regex-recursion: 6.0.2 + open@10.1.0: dependencies: default-browser: 5.2.1 @@ -23134,6 +23226,8 @@ snapshots: property-information@6.4.1: {} + property-information@7.1.0: {} + proto-list@1.2.4: {} proxy-addr@2.0.7: @@ -23444,6 +23538,16 @@ snapshots: regenerator-runtime@0.14.1: {} + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.0.1: + dependencies: + regex-utilities: 2.3.0 + regexp-tree@0.1.27: {} regexp.prototype.flags@1.5.2: @@ -23953,9 +24057,16 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 - shiki@1.4.0: + shiki@3.6.0: dependencies: - '@shikijs/core': 1.4.0 + '@shikijs/core': 3.6.0 + '@shikijs/engine-javascript': 3.6.0 + '@shikijs/engine-oniguruma': 3.6.0 + '@shikijs/langs': 3.6.0 + '@shikijs/themes': 3.6.0 + '@shikijs/types': 3.6.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 side-channel-list@1.0.0: dependencies: From cd47a4f49ec28de1d780b9e538d9451373222a28 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 14:42:18 -0700 Subject: [PATCH 129/211] fix: Update import name in loadFixture --- packages/test-case-component/src/loadFixture.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadFixture.ts index 56604dd2c8..fe4e42d30c 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadFixture.ts @@ -1,5 +1,5 @@ import type { TargetPlainObject, TestCaseFixture, TestCaseSnapshot } from "@cursorless/common"; -import { generateHtml } from "./generateHtml.js"; +import { generateHtml } from "./generateHtml"; import type { BundledLanguage } from "shiki"; async function safeGenerateHtml({ @@ -90,8 +90,7 @@ async function getDuring(data: DataFixture) { const stateName = "middleState" const state = data.initialState const languageId = data.languageId as BundledLanguage - const { thatMark: thatMarkFinalState } = data.finalState - const genObj: TestCaseSnapshot & typeof thatMarkFinalState = { stateName, state, languageId, raw: data } + const genObj: TestCaseSnapshot & { stateName: string } = { stateName, state, languageId, raw: data } if (command) { genObj.command = command } From 9f89a7af80e86fbb0338579127445e0d949f2447 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 14:47:46 -0700 Subject: [PATCH 130/211] refactor: Rename loadFixture to loadTestCaseFixture --- packages/cursorless-org/src/pages/component-sheet.tsx | 4 ++-- packages/test-case-component/src/index.ts | 2 +- .../src/{loadFixture.ts => loadTestCaseFixture.ts} | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename packages/test-case-component/src/{loadFixture.ts => loadTestCaseFixture.ts} (97%) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 9871274068..55736598d4 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -3,7 +3,7 @@ import fs from "fs"; import path from "path"; import Head from "next/head"; -import { loadFixture } from "@cursorless/test-case-component"; +import { loadTestCaseFixture } from "@cursorless/test-case-component"; import { TestCaseComponentPage } from "@cursorless/test-case-component"; import type { TestCaseFixture } from "@cursorless/common"; import { testSelectedFiles } from "./allowList"; @@ -55,7 +55,7 @@ export async function getStaticProps() { [...dataActions, ...dataDecorations].map(async (val) => { try { // const upgraded = upgrade(data); - const fixture = await loadFixture(val); + const fixture = await loadTestCaseFixture(val); return { ...fixture, raw: val }; } catch (err) { console.error(err); diff --git a/packages/test-case-component/src/index.ts b/packages/test-case-component/src/index.ts index 9f7a0db016..a98f0c68a6 100644 --- a/packages/test-case-component/src/index.ts +++ b/packages/test-case-component/src/index.ts @@ -1,2 +1,2 @@ export * from "./components/TestCaseComponentPage"; -export * from "./loadFixture"; \ No newline at end of file +export * from "./loadTestCaseFixture"; \ No newline at end of file diff --git a/packages/test-case-component/src/loadFixture.ts b/packages/test-case-component/src/loadTestCaseFixture.ts similarity index 97% rename from packages/test-case-component/src/loadFixture.ts rename to packages/test-case-component/src/loadTestCaseFixture.ts index fe4e42d30c..4a5e48457a 100644 --- a/packages/test-case-component/src/loadFixture.ts +++ b/packages/test-case-component/src/loadTestCaseFixture.ts @@ -35,7 +35,7 @@ interface loadFixtureProps extends TestCaseFixture { finalState: TestCaseSnapshot; } -export async function loadFixture(data: loadFixtureProps) { +export async function loadTestCaseFixture(data: loadFixtureProps) { try { const before = await getBefore({ stateName: "initialState", From 42491b19e9de8eb3587c928274316f3b563aae5f Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Thu, 17 Apr 2025 14:55:07 -0700 Subject: [PATCH 131/211] wip: Restore more allowList examples for demo --- .../cursorless-org/src/pages/allowList.tsx | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/cursorless-org/src/pages/allowList.tsx b/packages/cursorless-org/src/pages/allowList.tsx index 3170f277c5..6d748b79c3 100644 --- a/packages/cursorless-org/src/pages/allowList.tsx +++ b/packages/cursorless-org/src/pages/allowList.tsx @@ -1,19 +1,19 @@ export const testSelectedFiles = [ "bringArgMadeAfterLook.yml", - // "chuckBlockAirUntilBatt.yml", - // "cutFine.yml", - // "chuckLineFine.yml", - // "bringAirAndBatAndCapToAfterItemEach.yml", - // "carveLineHarp.yml", - // "chuckBlockAir.yml", - // "chuckBlockAirUntilBatt.yml", - // "chuckBlockBatt.yml", - // "chuckBlockBattUntilAir.yml", - // "chuckFine.yml", - // "chuckLineFineBetweenRisk.yml", - // "clearBlockFine.yml", - // "clearFine.yml", - // "clearLineFine.yml", + "chuckBlockAirUntilBatt.yml", + "cutFine.yml", + "chuckLineFine.yml", + "bringAirAndBatAndCapToAfterItemEach.yml", + "carveLineHarp.yml", + "chuckBlockAir.yml", + "chuckBlockAirUntilBatt.yml", + "chuckBlockBatt.yml", + "chuckBlockBattUntilAir.yml", + "chuckFine.yml", + "chuckLineFineBetweenRisk.yml", + "clearBlockFine.yml", + "clearFine.yml", + "clearLineFine.yml", // "bringAirToEndOfAir.yml", // Shiki intersect error // "chuckBlockBatt2.yml", // Shiki intersect error ]; From 3e75862a2387ea9b0da5119043ee8cc49a6902e8 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 19:56:05 -0700 Subject: [PATCH 132/211] wip: Add additional dir for test case rendering --- .../src/pages/component-sheet.tsx | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 55736598d4..bad2bd3cb4 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -41,8 +41,17 @@ async function loadYamlFiles(dir: string, selectedFiles?: string[]) { export async function getStaticProps() { const itemsDirActions = path.join(fixturesDir, "actions"); const itemsDirDecorations = path.join(fixturesDir, "decorations"); + const itemsDirInsertEmptyLines = path.join( + fixturesDir, + "actions/insertEmptyLines", + ); const dataActions = await loadYamlFiles(itemsDirActions, testSelectedFiles); + const dataInsertEmptyLines = await loadYamlFiles( + itemsDirInsertEmptyLines, + testSelectedFiles, + ); + const dataDecorations = await loadYamlFiles( itemsDirDecorations, testSelectedFiles, @@ -52,17 +61,18 @@ export async function getStaticProps() { const data = ( await Promise.all( - [...dataActions, ...dataDecorations].map(async (val) => { - try { - // const upgraded = upgrade(data); - const fixture = await loadTestCaseFixture(val); - return { ...fixture, raw: val }; - } catch (err) { - console.error(err); - data_errors.push(val); - return null; - } - }), + [...dataActions, ...dataDecorations, ...dataInsertEmptyLines].map( + async (val) => { + try { + const fixture = await loadTestCaseFixture(val); + return { ...fixture, raw: val }; + } catch (err) { + console.error(err); + data_errors.push(val); + return null; + } + }, + ), ) ).filter((test) => test !== undefined); From 99848172127a1029865e09bf987ec94750bae837 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 19:56:57 -0700 Subject: [PATCH 133/211] feat: Create TestCaseComponentProps type --- packages/cursorless-org/src/pages/component-sheet.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index bad2bd3cb4..57e29e3fe3 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -83,7 +83,15 @@ export async function getStaticProps() { return { props: { data, bodyClasses: cheatsheetBodyClasses } }; } -export function App({ data }: { data: TestCaseFixture[] }) { +export type TestCaseComponentProps = TestCaseFixture & { + filename: string; + raw: TestCaseFixture; + before: string; + during: string; + after: string; +}; + +export function App({ data }: { data: TestCaseComponentProps[] }) { return ( <> From 5c711935b8717761660ea8f53c32a43cbdd6e927 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 19:57:26 -0700 Subject: [PATCH 134/211] wip: Add more filenames to allowList --- .../cursorless-org/src/pages/allowList.tsx | 81 +++++++++++++++++-- 1 file changed, 75 insertions(+), 6 deletions(-) diff --git a/packages/cursorless-org/src/pages/allowList.tsx b/packages/cursorless-org/src/pages/allowList.tsx index 6d748b79c3..842f4ff5e4 100644 --- a/packages/cursorless-org/src/pages/allowList.tsx +++ b/packages/cursorless-org/src/pages/allowList.tsx @@ -1,19 +1,88 @@ export const testSelectedFiles = [ - "bringArgMadeAfterLook.yml", - "chuckBlockAirUntilBatt.yml", - "cutFine.yml", - "chuckLineFine.yml", "bringAirAndBatAndCapToAfterItemEach.yml", + "bringAirToEndOfAir.yml", // Shiki intersect error + "bringArgMadeAfterLook.yml", "carveLineHarp.yml", "chuckBlockAir.yml", "chuckBlockAirUntilBatt.yml", + "chuckBlockAirUntilBatt.yml", "chuckBlockBatt.yml", + "chuckBlockBatt2.yml", // Shiki intersect error "chuckBlockBattUntilAir.yml", "chuckFine.yml", + "chuckLineFine.yml", "chuckLineFineBetweenRisk.yml", "clearBlockFine.yml", "clearFine.yml", "clearLineFine.yml", - // "bringAirToEndOfAir.yml", // Shiki intersect error - // "chuckBlockBatt2.yml", // Shiki intersect error + "cutFine.yml", + "puffVest.yml", + + "bringAirAfterAir.yml", + "bringAirBeforeAir.yml", + "bringAirToEndOfAir.yml", + "bringAirToStartOfAir.yml", + "bringFineAfterLineVest.yml", + "callFineOnBatt.yml", + "cloneHarp2.yml", + "cloneUpHarp2.yml", + "customHarp.yml", + "drinkLine.yml", + "giveBat2.yml", + "giveDot.yml", + "giveDot2.yml", + "giveEndOfDot.yml", + "giveStartOfDot.yml", + "joinAir.yml", + "joinAir2.yml", + "joinAir3.yml", + "joinAir4.yml", + "joinBatPastEach.yml", + "joinTokenBattPastEach.yml", + "pasteAfterLineSpunAndAfterBlockLookAndBeforeLineSpun.yml", + "pasteAfterLineTrapAndAfterBlockTrap.yml", + "placeHelloAfterAir.yml", + "placeHelloToFine.yml", + "pourLine.yml", + "scoutAir.yml", + "scoutAllAir.yml", + "sortEveryItem.yml", + "sortEveryItem2.yml", + "_bringLineHarpAndWhale.yml", + "cloneArgue.yml", + "cloneHarp.yml", + "cloneToken.yml", + "cloneToken2.yml", + "cloneUpHarp.yml", + "pasteAfterArgueBat.yml", + "chuckBlockBatt2.yml", + "appendPostWhale.yml", + "appendPreWhale.yml", + "bringAirAndBatAndCap.yml", + "bringArgueFineAndZip.yml", + "bringVest.yml", + "cloneArgue2.yml", + "cloneToken3.yml", + "cloneToken4.yml", + "cloneUpArgue2.yml", + "cloneUpToken3.yml", + "cloneUpToken4.yml", + "dedentLine.yml", + "flashToken.yml", + "indentLine.yml", + "joinBlock.yml", + "joinFile.yml", + "joinLineThis.yml", + "joinThreeTokens.yml", + "joinTwoLines.yml", + "moveEveryArgMade.yml", + "moveVest.yml", + "parseTreeFile.yml", + "postVest.yml", + "preeVest.yml", + "roundWrapVest.yml", + "swapWithVest.yml", + "voidWrapAir.yml", + "dropToken.yml", + "floatToken.yml", ]; From c54eccddbcb60e01c090c90e5203a2e31702f3fb Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:00:55 -0700 Subject: [PATCH 135/211] fix: Update display line numbers to start at 0 --- packages/test-case-component/src/styles.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/styles.css b/packages/test-case-component/src/styles.css index eaef0b4343..0907b0e12f 100644 --- a/packages/test-case-component/src/styles.css +++ b/packages/test-case-component/src/styles.css @@ -20,7 +20,7 @@ pre code { } pre { - counter-reset: line; /* Initialize a counter for line numbers */ + counter-reset: line -1; /* Initialize a counter for line numbers */ } .line::before { From 2e021c61a276ae30e9a7488a483de4ff69ee2722 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:01:18 -0700 Subject: [PATCH 136/211] feat: Create thatMark and sourceMark classes --- packages/test-case-component/src/styles.css | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/test-case-component/src/styles.css b/packages/test-case-component/src/styles.css index 0907b0e12f..5dc070508c 100644 --- a/packages/test-case-component/src/styles.css +++ b/packages/test-case-component/src/styles.css @@ -175,3 +175,13 @@ pre.shiki { .hat.wing::after { mask-image: url('data:image/svg+xml;utf8,'); } +.thatMark { + outline: 2px solid yellow; + outline-offset: 4px; /* Adds space between the outline and the element */ + border-radius: 4px; /* Makes the outline rounded */ +} +.sourceMark { + outline: 2px solid teal; + outline-offset: 4px; /* Adds space between the outline and the element */ + border-radius: 4px; /* Makes the outline rounded */ +} From f304e7ea61d8c4c151169104a63055090d436c92 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:01:40 -0700 Subject: [PATCH 137/211] refactor: Change class names to drop word Background --- packages/test-case-component/src/styles.css | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/test-case-component/src/styles.css b/packages/test-case-component/src/styles.css index 5dc070508c..0b6a2f4d5e 100644 --- a/packages/test-case-component/src/styles.css +++ b/packages/test-case-component/src/styles.css @@ -118,35 +118,35 @@ pre.shiki { width: 100%; } -.decoration.pendingDeleteBackground { +.decoration.pendingDelete { background-color: #ff00008a; } -.decoration.referencedBackground { +.decoration.referenced { background-color: #00a2ff4d; } -.decoration.justAddedBackground { +.decoration.justAdded { background-color: #09ff005b; } -.decoration.pendingModification0Background { +.decoration.pendingModification0 { background-color: #8c00ff86; } -.decoration.pendingModification1Background { +.decoration.pendingModification1 { background-color: #ff009d7e; } -.decoration.highlight0Background { +.decoration.highlight0 { background-color: #d449ff42; } -.decoration.highlight1Background { +.decoration.highlight1 { background-color: #60daff7a; } -.decoration.timingCalibrationBackground { +.decoration.timingCalibration { background-color: #230026; } From 92fb4fa26cea787eed01d5a8f017ca8fa35f230d Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:02:12 -0700 Subject: [PATCH 138/211] feat: Update helper class names function object --- packages/test-case-component/src/helpers.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/test-case-component/src/helpers.ts b/packages/test-case-component/src/helpers.ts index a27f05e3c3..14502e5013 100644 --- a/packages/test-case-component/src/helpers.ts +++ b/packages/test-case-component/src/helpers.ts @@ -259,13 +259,20 @@ function isPositionRange( const DEFAULT_HAT_CLASS = "hat default"; const classesMap = { default: DEFAULT_HAT_CLASS, - pendingDelete: "decoration pendingDeleteBackground", - referenced: "decoration referencedBackground", - selection: "selection" + pendingDelete: "decoration pendingDelete", + referenced: "decoration referenced", + selection: "selection", + pendingModification0: "decoration pendingModification0", + pendingModification1: "decoration pendingModification1", + justAdded: "decoration justAdded", + highlight0: "decoration highlight0", + highlight1: "decoration highlight1", + sourceMark: "sourceMark", + thatMark: "thatMark" }; function getDecorationClass(key: keyof typeof classesMap): string { - return classesMap[key] || DEFAULT_HAT_CLASS; + return classesMap[key]; } From 0ef7c4ad25349e11814884b4ce1d65ed97b71e89 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:02:47 -0700 Subject: [PATCH 139/211] feat: Create addContentRangeDecorations helper function --- packages/test-case-component/src/helpers.ts | 22 +++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packages/test-case-component/src/helpers.ts b/packages/test-case-component/src/helpers.ts index 14502e5013..1f450053c9 100644 --- a/packages/test-case-component/src/helpers.ts +++ b/packages/test-case-component/src/helpers.ts @@ -255,6 +255,28 @@ function isPositionRange( && range.type === "character"; } +function addContentRangeDecorations({ + marks, + highlightClass, + decorations, +}: { + marks: TargetPlainObject[]; + highlightClass: keyof typeof classesMap; + decorations: DecorationItem[]; +}): void { + marks.forEach(({ contentRange }) => { + const { start, end } = contentRange; + const decorationItem = { + start, + end, + properties: { + class: getDecorationClass(highlightClass), + }, + alwaysWrap: true, + }; + decorations.push(decorationItem); + }); +} const DEFAULT_HAT_CLASS = "hat default"; const classesMap = { From c8fbd045882fb3e79f4ed8a23a68a75ff0556b70 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:03:38 -0700 Subject: [PATCH 140/211] feat: Update getThatMark function --- packages/test-case-component/src/helpers.ts | 26 ++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/packages/test-case-component/src/helpers.ts b/packages/test-case-component/src/helpers.ts index 1f450053c9..eb709d3021 100644 --- a/packages/test-case-component/src/helpers.ts +++ b/packages/test-case-component/src/helpers.ts @@ -229,11 +229,31 @@ function getSlections( } function getThatMarks({ thatMark }: { thatMark: TargetPlainObject[] }): DecorationItem[] { - console.log("☝️", thatMark) const decorations: DecorationItem[] = []; - if (thatMark === undefined) { - console.warn("thatMarks are undefined. Skipping decoration generation."); + + if (thatMark === undefined || thatMark.length === 0) { + console.warn("finalStateSourceMarks are undefined. Skipping decoration generation."); + return [] + } else { + addContentRangeDecorations({ + marks: thatMark, + highlightClass: "thatMark", decorations + }); + } + + return decorations +} + +function getSourceMarks({ sourceMark }: { sourceMark?: TargetPlainObject[] }): DecorationItem[] { + const decorations: DecorationItem[] = []; + if (sourceMark === undefined || sourceMark.length === 0) { + console.warn("finalStateSourceMarks are undefined. Skipping decoration generation."); return [] + } else { + addContentRangeDecorations({ + marks: sourceMark, + highlightClass: "sourceMark", decorations + }); } return decorations From 91feb720288e22b01b7af6a31fcf57733603d738 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:04:35 -0700 Subject: [PATCH 141/211] chore: Remove console.log statements --- packages/test-case-component/src/helpers.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/test-case-component/src/helpers.ts b/packages/test-case-component/src/helpers.ts index eb709d3021..1938336604 100644 --- a/packages/test-case-component/src/helpers.ts +++ b/packages/test-case-component/src/helpers.ts @@ -87,7 +87,6 @@ function getMarkDecorations({ Object.entries(marks || {}).forEach(([key, { start, end }]) => { const [hatType, letter] = key.split(".") as [keyof typeof classesMap, string]; - console.log("🔑", key, start, end); const markLineStart = start.line @@ -116,7 +115,6 @@ function getMarkDecorations({ alwaysWrap: true, } - console.log("🔑🔑", decorationItem) decorations.push(decorationItem); }); @@ -176,7 +174,6 @@ function getIdeFlashDecorations({ }, alwaysWrap: true, }; - console.log("🔥🔥", decorationItem); decorations.push(decorationItem); } @@ -190,7 +187,6 @@ function getIdeFlashDecorations({ }, alwaysWrap: true, } - console.log("🔥🔥", decorationItem) decorations.push(decorationItem); } else { console.warn(`Unknown range type "${type}". Skipping this flash.`); @@ -222,7 +218,6 @@ function getSlections( alwaysWrap: true, } decorations.push(decorationItem) - console.log("🟦", decorationItem) }) return decorations From 8b43aff2f418a17bbe24e2f74fc7798b40e877a9 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:05:50 -0700 Subject: [PATCH 142/211] feat: Update types in helpers.ts --- packages/test-case-component/src/helpers.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/test-case-component/src/helpers.ts b/packages/test-case-component/src/helpers.ts index 1938336604..f199ac781a 100644 --- a/packages/test-case-component/src/helpers.ts +++ b/packages/test-case-component/src/helpers.ts @@ -1,5 +1,7 @@ import type { - // PositionPlainObject, + Command, + CommandLatest, + PlainSpyIDERecordedValues, SelectionPlainObject, SerializedMarks, TargetPlainObject, @@ -30,18 +32,23 @@ function splitDocumentWithOffsets(documentContents: string): { line: string; off * * @param {Object} options - An object containing optional fields like marks, command, or ide. * @param {SerializedMarks} [options.marks] - An object containing marks with line, start, and end positions. - * @param {any} [options.command] - (Optional) The command object specifying the command details. - * @param {any} [options.ide] - (Optional) The ide object specifying the IDE details. + * @param {CommandLatest | Command} [options.command] - (Optional) The command object specifying the command details. + * @param {PlainSpyIDERecordedValues} [options.ide] - (Optional) The ide object specifying the IDE details. * @returns {DecorationItem[]} An array of decoration objects. */ function createDecorations( options: { marks?: SerializedMarks; - command?: any; - ide?: any; + command?: CommandLatest | Command; + ide?: PlainSpyIDERecordedValues; lines?: string[] selections?: SelectionPlainObject[] thatMark?: TargetPlainObject[] + sourceMark?: TargetPlainObject[] + finalStateMarkHelpers?: { + sourceMark?: TargetPlainObject[] + thatMark?: TargetPlainObject[] + } } = {} // Default to an empty object ): DecorationItem[] { const { marks, ide, lines, selections, thatMark /* command */ } = options From dea04b6bc90dc98b3aaf1f12a5a6be2aa6896a4a Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:06:08 -0700 Subject: [PATCH 143/211] wip: Add continue statement to resolve flashes out of bounds error --- packages/test-case-component/src/helpers.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/test-case-component/src/helpers.ts b/packages/test-case-component/src/helpers.ts index f199ac781a..e42b717f62 100644 --- a/packages/test-case-component/src/helpers.ts +++ b/packages/test-case-component/src/helpers.ts @@ -170,6 +170,9 @@ function getIdeFlashDecorations({ * multiple classes to the same span causing CSS conflicts */ for (let line = lineStart; line <= lineEnd; line++) { + if (line >= lines.length) { + continue + } const contentLine = lines[line]; const startPosition = { line, character: 0 }; const endPosition = { line, character: contentLine.length }; From e1ccb070bf05f3cac673f42ac8d389e5745110b2 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:07:06 -0700 Subject: [PATCH 144/211] feat: Additional type updates in helper.ts --- packages/test-case-component/src/helpers.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/test-case-component/src/helpers.ts b/packages/test-case-component/src/helpers.ts index e42b717f62..6673c3a577 100644 --- a/packages/test-case-component/src/helpers.ts +++ b/packages/test-case-component/src/helpers.ts @@ -141,9 +141,7 @@ function getIdeFlashDecorations({ ide, lines, }: { - ide?: { - flashes?: { style: keyof typeof classesMap; range: RangeType }[]; - }; + ide?: PlainSpyIDERecordedValues; lines?: string[]; } = {}): DecorationItem[] { if (!lines) { From 6ef0ae14cd1b3156d700ae232fa1371609ecc42c Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:07:30 -0700 Subject: [PATCH 145/211] chore: Remove unused variable in getMarkDecorations --- packages/test-case-component/src/helpers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/helpers.ts b/packages/test-case-component/src/helpers.ts index 6673c3a577..8ddb76e41c 100644 --- a/packages/test-case-component/src/helpers.ts +++ b/packages/test-case-component/src/helpers.ts @@ -92,7 +92,7 @@ function getMarkDecorations({ }): DecorationItem[] { const decorations: DecorationItem[] = []; - Object.entries(marks || {}).forEach(([key, { start, end }]) => { + Object.entries(marks || {}).forEach(([key, { start }]) => { const [hatType, letter] = key.split(".") as [keyof typeof classesMap, string]; const markLineStart = start.line From 7b9a08af1f9f9cbe9be04178dbfd04145544ba60 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:08:18 -0700 Subject: [PATCH 146/211] feat: Update return type of createDecorations --- packages/test-case-component/src/helpers.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/test-case-component/src/helpers.ts b/packages/test-case-component/src/helpers.ts index 8ddb76e41c..3584d8653d 100644 --- a/packages/test-case-component/src/helpers.ts +++ b/packages/test-case-component/src/helpers.ts @@ -50,11 +50,8 @@ function createDecorations( thatMark?: TargetPlainObject[] } } = {} // Default to an empty object -): DecorationItem[] { - const { marks, ide, lines, selections, thatMark /* command */ } = options - if (thatMark) { - console.log("📅", thatMark) - } +): DecorationItem[][] { + const { marks, ide, lines, selections, thatMark, sourceMark } = options const decorations: DecorationItem[] = []; const markDecorations = getMarkDecorations({ marks, lines }) From 26eb4fc315a530ff9a106b69a3cb152db7072043 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:08:50 -0700 Subject: [PATCH 147/211] feat: Update returned array order of createDecorations --- packages/test-case-component/src/helpers.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/test-case-component/src/helpers.ts b/packages/test-case-component/src/helpers.ts index 3584d8653d..44ddfc0659 100644 --- a/packages/test-case-component/src/helpers.ts +++ b/packages/test-case-component/src/helpers.ts @@ -53,17 +53,23 @@ function createDecorations( ): DecorationItem[][] { const { marks, ide, lines, selections, thatMark, sourceMark } = options - const decorations: DecorationItem[] = []; + const decorations: DecorationItem[][] = []; + const markDecorations = getMarkDecorations({ marks, lines }) const ideFlashDecorations = getIdeFlashDecorations({ lines, ide }) - decorations.push(...markDecorations); - decorations.push(...ideFlashDecorations); const selectionRanges = getSlections({ selections }) - decorations.push(...selectionRanges); + const sourceMarks_ = getSourceMarks({ sourceMark }) + + decorations.push(markDecorations); + decorations.push(ideFlashDecorations); + decorations.push(selectionRanges); + decorations.push(sourceMarks_); if (thatMark) { - const modificationReferences = getThatMarks({ thatMark }) - decorations.push(...modificationReferences); + const thatMarks = getThatMarks({ thatMark }) + decorations.push(thatMarks); + } else { + decorations.push([]) } return decorations From e46239b721a380393705b6cb91d56a9df98b1a2b Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:09:37 -0700 Subject: [PATCH 148/211] feat: Update prop types of TestCaseComponentPage --- .../src/components/TestCaseComponentPage.tsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/src/components/TestCaseComponentPage.tsx b/packages/test-case-component/src/components/TestCaseComponentPage.tsx index 02ffbc7648..de7b6153ab 100644 --- a/packages/test-case-component/src/components/TestCaseComponentPage.tsx +++ b/packages/test-case-component/src/components/TestCaseComponentPage.tsx @@ -4,7 +4,19 @@ import "../shiki.css"; import "../styles.css"; import type { TestCaseFixture } from "@cursorless/common"; -export function TestCaseComponentPage({ data }: { data: TestCaseFixture[] }) { +export type TestCaseComponentProps = TestCaseFixture & { + filename: string; + raw: TestCaseFixture; + before: string; + during: string; + after: string; +}; + +export function TestCaseComponentPage({ + data, +}: { + data: TestCaseComponentProps[]; +}) { return (

From 52f6cfc0ed750faf714d05f75e5316aee7b21372 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:09:56 -0700 Subject: [PATCH 149/211] feat: Add fallback if rendering with error for TestCaseComponentPage --- .../src/components/TestCaseComponentPage.tsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/test-case-component/src/components/TestCaseComponentPage.tsx b/packages/test-case-component/src/components/TestCaseComponentPage.tsx index de7b6153ab..3a972bdfb5 100644 --- a/packages/test-case-component/src/components/TestCaseComponentPage.tsx +++ b/packages/test-case-component/src/components/TestCaseComponentPage.tsx @@ -29,8 +29,16 @@ export function TestCaseComponentPage({

- {data.map((item: any) => { - return ; + {data.map((item: TestCaseComponentProps) => { + if (!item) { + return

Error: item is null

; + } + const { filename } = item; + if (filename) { + return ; + } else { + return <>; + } })}
); From 74e32a29e5c20e1ea33dd5c5a5f4461799d0fd05 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:10:49 -0700 Subject: [PATCH 150/211] feat: Update types in shikiComponent --- .../src/components/shikiComponent.tsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/src/components/shikiComponent.tsx b/packages/test-case-component/src/components/shikiComponent.tsx index 045b8ea734..82652dacd3 100644 --- a/packages/test-case-component/src/components/shikiComponent.tsx +++ b/packages/test-case-component/src/components/shikiComponent.tsx @@ -1,4 +1,17 @@ -export function ShikiComponent({ data }: { data: any }) { +import type { Command, CommandLatest } from "@cursorless/common"; + +export function ShikiComponent({ + data, +}: { + data: { + before: string; + during: string; + after: string; + command: CommandLatest | Command; + }; +}) { + const { spokenForm } = data.command; + const { before, during, after } = data; return (
From 95830f5bf86603fda604672aa18ded5bce2d0335 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:11:14 -0700 Subject: [PATCH 151/211] chore: Remove console.log statement in shikiComponent --- packages/test-case-component/src/components/shikiComponent.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/test-case-component/src/components/shikiComponent.tsx b/packages/test-case-component/src/components/shikiComponent.tsx index 82652dacd3..d5d007c2b5 100644 --- a/packages/test-case-component/src/components/shikiComponent.tsx +++ b/packages/test-case-component/src/components/shikiComponent.tsx @@ -39,8 +39,6 @@ const Before = ({ content }: { content: string }) => { const During = ({ content }: { content: string }) => { if (content) { - console.log("🧄", content); - return (
); From 9381f9e6b179e2f3173f58dde45f2826d59201c9 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:11:50 -0700 Subject: [PATCH 152/211] feat: Update tailwind classes in shikiComponent children --- .../src/components/shikiComponent.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/test-case-component/src/components/shikiComponent.tsx b/packages/test-case-component/src/components/shikiComponent.tsx index d5d007c2b5..72c9aa04c6 100644 --- a/packages/test-case-component/src/components/shikiComponent.tsx +++ b/packages/test-case-component/src/components/shikiComponent.tsx @@ -13,14 +13,15 @@ export function ShikiComponent({ const { spokenForm } = data.command; const { before, during, after } = data; return ( -
+
-

{data.command}

+

{spokenForm}

+
- -
{data.command}
- - + +
{spokenForm}
+ +
From 1cae875ad5a0feafefecc614fb401b52a388ed06 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:12:28 -0700 Subject: [PATCH 153/211] feat: Create types in loadTestCaseFixture --- .../src/loadTestCaseFixture.ts | 33 +++---------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/packages/test-case-component/src/loadTestCaseFixture.ts b/packages/test-case-component/src/loadTestCaseFixture.ts index 4a5e48457a..73597107c4 100644 --- a/packages/test-case-component/src/loadTestCaseFixture.ts +++ b/packages/test-case-component/src/loadTestCaseFixture.ts @@ -1,40 +1,17 @@ -import type { TargetPlainObject, TestCaseFixture, TestCaseSnapshot } from "@cursorless/common"; +import type { TestCaseFixture, TestCaseSnapshot } from "@cursorless/common"; import { generateHtml } from "./generateHtml"; import type { BundledLanguage } from "shiki"; -async function safeGenerateHtml({ - stateName, - state, - languageId, - command, - ide, - thatMarkFinalState -}: { - stateName: string; - state: TestCaseSnapshot; - languageId: BundledLanguage; - command?: any; // Replace `any` with the appropriate type if known - ide?: any; // Replace `any` with the appropriate type if known - thatMarkFinalState?: TargetPlainObject -}) { - console.log("✨" + stateName + "✨"); - try { - const genObj = { stateName, state, languageId, command, ide } - return await generateHtml(genObj); - } catch (e) { - console.error("error in state", stateName, e); - console.error(JSON.stringify(state, null, 2)); - throw e; - } -} - -interface loadFixtureProps extends TestCaseFixture { +interface loadFixtureProps extends DataFixture { filename: string; languageId: BundledLanguage; initialState: TestCaseSnapshot; finalState: TestCaseSnapshot; } +type StepType = { stepName: "initialState" | "middleState" | "finalState" } +export type DataFixture = TestCaseFixture & StepType + export async function loadTestCaseFixture(data: loadFixtureProps) { try { const before = await getBefore({ From 9bf2243ad74eca27c79c67f456deeb7722d36e73 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:12:49 -0700 Subject: [PATCH 154/211] refactor: Restrucutre html generation method in loadTestCaseFixture --- .../src/loadTestCaseFixture.ts | 77 +++---------------- 1 file changed, 9 insertions(+), 68 deletions(-) diff --git a/packages/test-case-component/src/loadTestCaseFixture.ts b/packages/test-case-component/src/loadTestCaseFixture.ts index 73597107c4..5e2babd20a 100644 --- a/packages/test-case-component/src/loadTestCaseFixture.ts +++ b/packages/test-case-component/src/loadTestCaseFixture.ts @@ -13,79 +13,20 @@ type StepType = { stepName: "initialState" | "middleState" | "finalState" } export type DataFixture = TestCaseFixture & StepType export async function loadTestCaseFixture(data: loadFixtureProps) { - try { - const before = await getBefore({ - stateName: "initialState", - state: data.initialState, - languageId: data.languageId, - }); - - const during = await getDuring(data); - - const after = await getAfter({ - stateName: "finalState", - state: data.finalState, - languageId: data.languageId, - }); - - return { - language: data.languageId, - command: data.command.spokenForm, - during, - before, - after, - filename: data.filename, - }; - } catch (e) { - console.log("error", e); - console.log(JSON.stringify(data, null, 2)); - throw e; - } -} + const { before, during, after } = await generateHtml(data) -type Foo = TestCaseSnapshot & TargetPlainObject; + const { command, filename, languageId: language } = data -async function getAfter({ - stateName, - state, - languageId, -}: { - stateName: string; - state: Foo; - languageId: BundledLanguage; -}) { - if (!state) { - throw new Error("finalState is undefined"); + const returnObj = { + before, during, after, command, filename, language } - return await safeGenerateHtml({ stateName, state, languageId }); -} + try { -type DataFixture = Partial + return returnObj -async function getDuring(data: DataFixture) { - const { command, ide } = data - const stateName = "middleState" - const state = data.initialState - const languageId = data.languageId as BundledLanguage - const genObj: TestCaseSnapshot & { stateName: string } = { stateName, state, languageId, raw: data } - if (command) { - genObj.command = command - } - if (ide) { - genObj.ide = ide + } catch (e) { + console.error("error", e); + throw e; } - - return await generateHtml(genObj); } -async function getBefore({ - stateName, - state, - languageId, -}: { - stateName: string; - state: TestCaseSnapshot; - languageId: BundledLanguage; -}) { - return await safeGenerateHtml({ stateName, state, languageId }); -} \ No newline at end of file From b241c0feb20374f2a590cfb840c8308dc5fdfb78 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:14:46 -0700 Subject: [PATCH 155/211] feat: Update types in generateHtml --- .../test-case-component/src/generateHtml.ts | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index c89dcd39d8..acf26e14e4 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,9 +1,17 @@ import { createHighlighter, createCssVariablesTheme } from "shiki"; import type { BundledLanguage } from "shiki"; -import type { TargetPlainObject, TestCaseSnapshot } from "@cursorless/common"; +import type { + Command, + CommandLatest, + PlainSpyIDERecordedValues, + TargetPlainObject, + TestCaseFixture, + TestCaseSnapshot +} from "@cursorless/common"; import { createDecorations } from "./helpers"; +import type { DataFixture } from "./loadTestCaseFixture"; type Lang = BundledLanguage; @@ -17,10 +25,7 @@ const myTheme = createCssVariablesTheme({ /** * Generates HTML content based on the provided state, language, command, and ide. * - * @param {TestCaseSnapshot} state - The state object containing the necessary data for HTML generation. - * @param {Lang} lang - The language object specifying the language for the HTML content. - * @param {any} [command] - (Optional) The command object specifying the command details. - * @param {any} [ide] - (Optional) The ide object specifying the IDE details. + * @param {DataFixture} data - The state object containing the necessary data for HTML generation. * @returns {Promise} A promise that resolves to the generated HTML content. */ export async function generateHtml({ @@ -46,6 +51,15 @@ const highlighter = createHighlighter({ langs: ["javascript", "typescript"], }); +type StepNameType = "before" | "during" | "after" +type ExtendedTestCaseSnapshot = TestCaseSnapshot & + Partial & +{ + finalStateMarkHelpers?: { + thatMark?: TargetPlainObject[], sourceMark?: TargetPlainObject[] + } +}; + class HTMLGenerator { private state: TestCaseSnapshot; private lang: Lang; From 16d4968a50f978dbb17233c86260d577f5979ab9 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 28 Apr 2025 20:15:59 -0700 Subject: [PATCH 156/211] feat: Update html generation method in generateHtml --- .../test-case-component/src/generateHtml.ts | 191 ++++++++++++------ 1 file changed, 131 insertions(+), 60 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index acf26e14e4..82e40e7dc5 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -28,22 +28,10 @@ const myTheme = createCssVariablesTheme({ * @param {DataFixture} data - The state object containing the necessary data for HTML generation. * @returns {Promise} A promise that resolves to the generated HTML content. */ -export async function generateHtml({ - stateName, - state, - languageId: lang, - command, - ide, - raw -}: { - stateName: string; - state: TestCaseSnapshot; - languageId: BundledLanguage; - command?: any; // Replace `any` with the appropriate type if with - ide?: any; // Replace `any` with the appropriate type if known - raw: any; -}) { - return new HTMLGenerator({ state, lang, command, ide, raw }).generate(); +export async function generateHtml(data: DataFixture) { + const HTMLOBject = await new HTMLGenerator(data) + const returnObject = HTMLOBject.generateAll() + return returnObject; } const highlighter = createHighlighter({ @@ -61,63 +49,146 @@ type ExtendedTestCaseSnapshot = TestCaseSnapshot & }; class HTMLGenerator { - private state: TestCaseSnapshot; + private testCaseStates: { + before: ExtendedTestCaseSnapshot | undefined; + during: ExtendedTestCaseSnapshot | undefined; + after: ExtendedTestCaseSnapshot | undefined; + } private lang: Lang; - private command?: any; - private ide?: any; - private raw: any; - - constructor({ - state, - lang, - command, - ide, - raw - }: { - state: TestCaseSnapshot, - lang: Lang, - command?: any, - ide?: any, - raw?: any - }) { - this.state = state; - this.lang = lang; + private command?: CommandLatest | Command; + private raw: TestCaseFixture; + private rendered: { + before: string; + during: string; + after: string; + } + + constructor(data: DataFixture) { + const { languageId, command } = data; + this.lang = languageId as BundledLanguage; this.command = command; // Optional command parameter - this.ide = ide; // Optional ide parameter - this.raw = raw + this.raw = data + this.rendered = { + before: "", + during: "", + after: "", + } + this.testCaseStates = { + before: data.initialState, + during: { + ...( + /** + * Spread the document state with more lines (finalState vs initialState), + * so Shiki decorations stay in bounds and don't go out of range. + */ + data.finalState && + (data.finalState.documentContents?.split("\n").length > data.initialState.documentContents?.split("\n").length) + ? data.finalState + : data.initialState + ), + ...data.ide, + finalStateMarkHelpers: { + thatMark: data?.finalState?.thatMark, + sourceMark: data?.finalState?.sourceMark + } + }, + after: data.finalState + } } + async generate(stepName: StepNameType) { + const state = this.testCaseStates[stepName] + + if (!state) { + console.error(`Error in ${stepName} ${this.raw.command.spokenForm}`) + return "Error" + } + + const decorations = await this.getDecorations(state); + + const { documentContents } = state + + const htmlArray: string[] = [] + let codeBody; + + const errorLevels = [ + "excludes thatMarks sourceMarks selectionRanges ideFlashes", + "excludes thatMarks sourceMarks selectionRanges", + "excludes thatMarks sourceMarks", + "excludes thatMarks", + "success", + ] + + let errorLevel = errorLevels.length - 1 - async generate() { - const decorations = await this.getDecorations(); - const options = { - theme: "css-variables", - lang: this.lang, - decorations - }; + for (let i = decorations.length - 1; i >= 0; i--) { + const fallbackDecoration = decorations.slice(0, i).flat(); + errorLevel = i + try { + const marker = await highlighter; + const options = { + theme: "css-variables", + lang: this.lang, + decorations: fallbackDecoration + }; + codeBody = marker.codeToHtml(documentContents, options); + htmlArray.push(codeBody) + break; // Exit loop if successful + } catch (error) { + console.warn("Failed with decorations level:", fallbackDecoration, error); + // Continue to the next fallback level + } + } + + if (!codeBody) { + console.error("All fallback levels failed. Unable to generate code body."); + codeBody = ""; // Provide a default empty string or handle as needed + } + + let clipboardRendered = "" + if (state.clipboard) { + clipboardRendered = `
clipboard: ${state.clipboard}
` + if (clipboardRendered !== "") { + htmlArray.push(clipboardRendered) + } + } + + let error = "" + if (errorLevel !== errorLevels.length - 1) { + error = errorLevels[errorLevel] + const errorRendered = `
Omitted due to errors: ${error}
` + htmlArray.push(errorRendered) + } + return htmlArray.join("") + } + + async generateAll() { - const marker = await highlighter - const codeBody = marker.codeToHtml(this.state.documentContents, options) - let clipboard = "" - if (this.state.clipboard) { - clipboard = `
clipboard: ${this.state.clipboard}
` + const output = { + before: await this.generate("before"), + during: await this.generate("during"), + after: await this.generate("after"), } - const output = clipboard !== "" ? codeBody + clipboard : codeBody return output } - async getDecorations() { - const potentialMarks = this.state.marks || {} - const lines = this.state.documentContents.split("\n") - console.log("💎", this.state.thatMark) - const decorations = createDecorations({ + async getDecorations(testCaseState: ExtendedTestCaseSnapshot) { + const { messages, flashes, highlights, finalStateMarkHelpers } = testCaseState + + const potentialMarks = testCaseState.marks || {} + const lines = testCaseState.documentContents.split("\n") + const obj = { marks: potentialMarks, - ide: this.ide, + ide: { messages, flashes, highlights }, command: this.command, lines, - selections: this.state.selections, - thatMark: this.state.thatMark - }) + selections: testCaseState.selections, + thatMark: testCaseState.thatMark, + sourceMark: testCaseState.sourceMark, + finalStateMarkHelpers + } + + const decorations = createDecorations(obj) return decorations } } From a78ec7eb5f9f5d803db90dca5e83a32c821fd629 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 22:12:30 -0700 Subject: [PATCH 157/211] chore: Add dependency shiki-magic-move - Refresh pnpm-lock.yaml --- packages/test-case-component/package.json | 1 + pnpm-lock.yaml | 471 ++++------------------ 2 files changed, 81 insertions(+), 391 deletions(-) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index fdbdc5bd50..c913b8c2f4 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -27,6 +27,7 @@ "js-yaml": "^4.1.0", "prettier": "3.2.5", "react": "^18.2.0", + "shiki-magic-move": "1.1.0", "tsx": "3.12.7", "yaml": "2.2.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0a666d5d2..5f844adb6b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -940,6 +940,9 @@ importers: react: specifier: ^18.2.0 version: 18.2.0 + shiki-magic-move: + specifier: 1.1.0 + version: 1.1.0(react@18.2.0)(shiki@3.6.0) tsx: specifier: 3.12.7 version: 3.12.7 @@ -4665,10 +4668,6 @@ packages: aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - array-buffer-byte-length@1.0.2: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} @@ -4708,10 +4707,6 @@ packages: resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.4: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} @@ -5637,26 +5632,14 @@ packages: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} - data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} - data-view-byte-length@1.0.2: resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} engines: {node: '>= 0.4'} - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} - data-view-byte-offset@1.0.1: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} @@ -5854,6 +5837,9 @@ packages: didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + diff-match-patch-es@1.0.1: + resolution: {integrity: sha512-KhSofrZDERg/NE6Nd+TK53knp2qz0o2Ix8rhkXd3Chfm7Wlo58Eq/juNmkyS6bS+3xS26L3Pstz3BdY/q+e9UQ==} + diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6038,10 +6024,6 @@ packages: error@10.4.0: resolution: {integrity: sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw==} - es-abstract@1.23.2: - resolution: {integrity: sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==} - engines: {node: '>= 0.4'} - es-abstract@1.24.0: resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} engines: {node: '>= 0.4'} @@ -6068,18 +6050,10 @@ packages: es-module-lexer@1.5.0: resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==} - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} - es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} - es-set-tostringtag@2.1.0: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} @@ -6087,10 +6061,6 @@ packages: es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - es-to-primitive@1.3.0: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} @@ -6638,10 +6608,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - function.prototype.name@1.1.8: resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} @@ -6704,10 +6670,6 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} @@ -6779,10 +6741,6 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -7192,10 +7150,6 @@ packages: resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -7233,10 +7187,6 @@ packages: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} @@ -7298,10 +7248,6 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} - is-data-view@1.0.2: resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} engines: {node: '>= 0.4'} @@ -7451,10 +7397,6 @@ packages: is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -7471,10 +7413,6 @@ packages: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.4: resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} @@ -7483,10 +7421,6 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} @@ -7503,10 +7437,6 @@ packages: resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} @@ -7533,9 +7463,6 @@ packages: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - is-weakref@1.1.1: resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} engines: {node: '>= 0.4'} @@ -8932,6 +8859,9 @@ packages: obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -10144,10 +10074,6 @@ packages: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - regexp.prototype.flags@1.5.4: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} @@ -10340,10 +10266,6 @@ packages: rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} - safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} @@ -10362,10 +10284,6 @@ packages: resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} engines: {node: '>= 0.4'} - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - safe-regex-test@1.1.0: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} @@ -10530,6 +10448,26 @@ packages: engines: {node: '>=4'} hasBin: true + shiki-magic-move@1.1.0: + resolution: {integrity: sha512-EdP+0dYXfmyhg6R6O7tpc9CFz+1+WdOkXdsQSbboIEZBtbvYOW20p/7MkdsK7JP24dAG6Mag3qdIcT7fUFtTZw==} + peerDependencies: + react: ^18.2.0 || ^19.0.0 + shiki: ^1.0.0 || ^2.0.0 || ^3.0.0 + solid-js: ^1.9.1 + svelte: ^5.0.0-0 + vue: ^3.4.0 + peerDependenciesMeta: + react: + optional: true + shiki: + optional: true + solid-js: + optional: true + svelte: + optional: true + vue: + optional: true + shiki@3.6.0: resolution: {integrity: sha512-tKn/Y0MGBTffQoklaATXmTqDU02zx8NYBGQ+F6gy87/YjKbizcLd+Cybh/0ZtOBX9r1NEnAy/GTRDKtOsc1L9w==} @@ -10766,10 +10704,6 @@ packages: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} - stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} @@ -10809,10 +10743,6 @@ packages: resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.9: resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} engines: {node: '>= 0.4'} @@ -11289,34 +11219,18 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} - typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.3: resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.4: resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} engines: {node: '>= 0.4'} - typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} - typed-array-length@1.0.7: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} @@ -11329,9 +11243,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -11728,10 +11639,6 @@ packages: resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} engines: {node: '>=8.15'} - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - which-typed-array@1.1.19: resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} engines: {node: '>= 0.4'} @@ -12102,7 +12009,7 @@ snapshots: '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -13080,7 +12987,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.24.1 '@babel/types': 7.24.0 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -16726,11 +16633,6 @@ snapshots: dependencies: dequal: 2.0.3 - array-buffer-byte-length@1.0.1: - dependencies: - call-bind: 1.0.8 - is-array-buffer: 3.0.4 - array-buffer-byte-length@1.0.2: dependencies: call-bound: 1.0.4 @@ -16753,11 +16655,11 @@ snapshots: array.prototype.findlast@1.2.5: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.24.0 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 es-shim-unscopables: 1.0.2 array.prototype.findlastindex@1.2.5: @@ -16785,22 +16687,11 @@ snapshots: array.prototype.tosorted@1.1.4: dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 - - arraybuffer.prototype.slice@1.0.3: - dependencies: - array-buffer-byte-length: 1.0.1 call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.24.0 es-errors: 1.3.0 - get-intrinsic: 1.3.0 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 + es-shim-unscopables: 1.0.2 arraybuffer.prototype.slice@1.0.4: dependencies: @@ -17898,36 +17789,18 @@ snapshots: whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - data-view-buffer@1.0.1: - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - is-data-view: 1.0.1 - data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 - data-view-byte-length@1.0.1: - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - is-data-view: 1.0.1 - data-view-byte-length@1.0.2: dependencies: call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 - data-view-byte-offset@1.0.0: - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - is-data-view: 1.0.1 - data-view-byte-offset@1.0.1: dependencies: call-bound: 1.0.4 @@ -17987,24 +17860,24 @@ snapshots: deep-equal@2.2.3: dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.4 + get-intrinsic: 1.3.0 is-arguments: 1.1.1 - is-array-buffer: 3.0.4 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 + is-array-buffer: 3.0.5 + is-date-object: 1.1.0 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 isarray: 2.0.5 object-is: 1.1.6 object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - side-channel: 1.0.6 - which-boxed-primitive: 1.0.2 + object.assign: 4.1.7 + regexp.prototype.flags: 1.5.4 + side-channel: 1.1.0 + which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.15 + which-typed-array: 1.1.19 deep-extend@0.6.0: {} @@ -18087,6 +17960,8 @@ snapshots: didyoumean@1.2.2: {} + diff-match-patch-es@1.0.1: {} + diff-sequences@29.6.3: {} diff@4.0.2: {} @@ -18250,55 +18125,6 @@ snapshots: error@10.4.0: {} - es-abstract@1.23.2: - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.9 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - es-abstract@1.24.0: dependencies: array-buffer-byte-length: 1.0.2 @@ -18368,13 +18194,13 @@ snapshots: dependencies: call-bind: 1.0.8 get-intrinsic: 1.3.0 - has-symbols: 1.0.3 + has-symbols: 1.1.0 is-arguments: 1.1.1 is-map: 2.0.3 is-set: 2.0.3 is-string: 1.1.1 isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 + stop-iteration-iterator: 1.1.0 es-iterator-helpers@1.2.1: dependencies: @@ -18383,7 +18209,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.24.0 es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 + es-set-tostringtag: 2.1.0 function-bind: 1.1.2 get-intrinsic: 1.3.0 globalthis: 1.0.4 @@ -18397,20 +18223,10 @@ snapshots: es-module-lexer@1.5.0: {} - es-object-atoms@1.0.0: - dependencies: - es-errors: 1.3.0 - es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 - es-set-tostringtag@2.0.3: - dependencies: - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - es-set-tostringtag@2.1.0: dependencies: es-errors: 1.3.0 @@ -18422,12 +18238,6 @@ snapshots: dependencies: hasown: 2.0.2 - es-to-primitive@1.2.1: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - es-to-primitive@1.3.0: dependencies: is-callable: 1.2.7 @@ -18557,7 +18367,7 @@ snapshots: enhanced-resolve: 5.18.1 eslint: 9.28.0(jiti@2.4.2) eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.28.0(jiti@2.4.2)) - fast-glob: 3.3.2 + fast-glob: 3.3.3 get-tsconfig: 4.10.1 is-bun-module: 1.3.0 is-glob: 4.0.3 @@ -18652,7 +18462,7 @@ snapshots: language-tags: 1.0.9 minimatch: 3.1.2 object.fromentries: 2.0.8 - safe-regex-test: 1.0.3 + safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 eslint-plugin-mocha@10.5.0(eslint@9.28.0(jiti@2.4.2)): @@ -19187,13 +18997,6 @@ snapshots: function-bind@1.1.2: {} - function.prototype.name@1.1.6: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - functions-have-names: 1.2.3 - function.prototype.name@1.1.8: dependencies: call-bind: 1.0.8 @@ -19275,12 +19078,6 @@ snapshots: get-stream@6.0.1: {} - get-symbol-description@1.0.2: - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - get-symbol-description@1.1.0: dependencies: call-bound: 1.0.4 @@ -19370,10 +19167,6 @@ snapshots: globals@15.15.0: {} - globalthis@1.0.3: - dependencies: - define-properties: 1.2.1 - globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -19928,12 +19721,6 @@ snapshots: through: 2.3.8 wrap-ansi: 6.2.0 - internal-slot@1.0.7: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.0.6 - internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -19969,11 +19756,6 @@ snapshots: call-bind: 1.0.8 has-tostringtag: 1.0.2 - is-array-buffer@3.0.4: - dependencies: - call-bind: 1.0.8 - get-intrinsic: 1.3.0 - is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 @@ -20038,10 +19820,6 @@ snapshots: dependencies: hasown: 2.0.2 - is-data-view@1.0.1: - dependencies: - is-typed-array: 1.1.13 - is-data-view@1.0.2: dependencies: call-bound: 1.0.4 @@ -20149,11 +19927,6 @@ snapshots: dependencies: '@types/estree': 1.0.5 - is-regex@1.1.4: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -20169,20 +19942,12 @@ snapshots: is-set@2.0.3: {} - is-shared-array-buffer@1.0.3: - dependencies: - call-bind: 1.0.8 - is-shared-array-buffer@1.0.4: dependencies: call-bound: 1.0.4 is-stream@2.0.1: {} - is-string@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - is-string@1.1.1: dependencies: call-bound: 1.0.4 @@ -20202,10 +19967,6 @@ snapshots: has-symbols: 1.1.0 safe-regex-test: 1.1.0 - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.19 @@ -20222,10 +19983,6 @@ snapshots: is-weakmap@2.0.2: {} - is-weakref@1.0.2: - dependencies: - call-bind: 1.0.8 - is-weakref@1.1.1: dependencies: call-bound: 1.0.4 @@ -20305,7 +20062,7 @@ snapshots: iterator.prototype@1.1.5: dependencies: define-data-property: 1.1.4 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 get-proto: 1.0.1 has-symbols: 1.1.0 @@ -20838,7 +20595,7 @@ snapshots: dependencies: array-includes: 3.1.8 array.prototype.flat: 1.3.2 - object.assign: 4.1.5 + object.assign: 4.1.7 object.values: 1.2.0 jszip@3.10.1: @@ -22244,9 +22001,9 @@ snapshots: object.entries@1.1.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 object.fromentries@2.0.8: dependencies: @@ -22269,6 +22026,8 @@ snapshots: obuf@1.1.2: {} + ohash@2.0.11: {} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -23550,13 +23309,6 @@ snapshots: regexp-tree@0.1.27: {} - regexp.prototype.flags@1.5.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - regexp.prototype.flags@1.5.4: dependencies: call-bind: 1.0.8 @@ -23729,7 +23481,7 @@ snapshots: resolve@2.0.0-next.5: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -23786,13 +23538,6 @@ snapshots: dependencies: tslib: 2.6.2 - safe-array-concat@1.1.2: - dependencies: - call-bind: 1.0.8 - get-intrinsic: 1.3.0 - has-symbols: 1.0.3 - isarray: 2.0.5 - safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 @@ -23816,12 +23561,6 @@ snapshots: es-errors: 1.3.0 isarray: 2.0.5 - safe-regex-test@1.0.3: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-regex: 1.1.4 - safe-regex-test@1.1.0: dependencies: call-bound: 1.0.4 @@ -24057,6 +23796,14 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 + shiki-magic-move@1.1.0(react@18.2.0)(shiki@3.6.0): + dependencies: + diff-match-patch-es: 1.0.1 + ohash: 2.0.11 + optionalDependencies: + react: 18.2.0 + shiki: 3.6.0 + shiki@3.6.0: dependencies: '@shikijs/core': 3.6.0 @@ -24338,10 +24085,6 @@ snapshots: stdin-discarder@0.2.2: {} - stop-iteration-iterator@1.0.0: - dependencies: - internal-slot: 1.0.7 - stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 @@ -24374,29 +24117,29 @@ snapshots: string.prototype.includes@2.0.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.24.0 string.prototype.matchall@4.0.11: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.24.0 es-errors: 1.3.0 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.2 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 set-function-name: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 string.prototype.repeat@1.0.0: dependencies: define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.24.0 string.prototype.trim@1.2.10: dependencies: @@ -24408,13 +24151,6 @@ snapshots: es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 - string.prototype.trim@1.2.9: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-object-atoms: 1.1.1 - string.prototype.trimend@1.0.9: dependencies: call-bind: 1.0.8 @@ -24906,26 +24642,12 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - typed-array-buffer@1.0.2: - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - is-typed-array: 1.1.13 - typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 es-errors: 1.3.0 is-typed-array: 1.1.15 - typed-array-byte-length@1.0.1: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - typed-array-byte-length@1.0.3: dependencies: call-bind: 1.0.8 @@ -24934,15 +24656,6 @@ snapshots: has-proto: 1.2.0 is-typed-array: 1.1.15 - typed-array-byte-offset@1.0.2: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - typed-array-byte-offset@1.0.4: dependencies: available-typed-arrays: 1.0.7 @@ -24953,15 +24666,6 @@ snapshots: is-typed-array: 1.1.15 reflect.getprototypeof: 1.0.10 - typed-array-length@1.0.6: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 - typed-array-length@1.0.7: dependencies: call-bind: 1.0.8 @@ -24977,13 +24681,6 @@ snapshots: typescript@5.8.3: {} - unbox-primitive@1.0.2: - dependencies: - call-bind: 1.0.8 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -25594,14 +25291,6 @@ snapshots: load-yaml-file: 0.2.0 path-exists: 4.0.0 - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - which-typed-array@1.1.19: dependencies: available-typed-arrays: 1.0.7 From f76782eb8700425d80c4b27fcd9f44e1e4aca4ae Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 20 May 2025 07:49:31 -0700 Subject: [PATCH 158/211] feat: Add animated code block to shikiComponent --- .../src/components/shikiComponent.tsx | 183 ++++++++++++++++-- 1 file changed, 169 insertions(+), 14 deletions(-) diff --git a/packages/test-case-component/src/components/shikiComponent.tsx b/packages/test-case-component/src/components/shikiComponent.tsx index 72c9aa04c6..ba162b2824 100644 --- a/packages/test-case-component/src/components/shikiComponent.tsx +++ b/packages/test-case-component/src/components/shikiComponent.tsx @@ -1,29 +1,41 @@ import type { Command, CommandLatest } from "@cursorless/common"; +import { useState, useEffect, useRef } from "react"; +import clsx from "clsx"; export function ShikiComponent({ data, + debug, }: { data: { - before: string; - during: string; - after: string; + before: { html: string; data: string[] }; + during: { html: string; data: string[] }; + after: { html: string; data: string[] }; command: CommandLatest | Command; }; + debug?: boolean; }) { const { spokenForm } = data.command; const { before, during, after } = data; return ( -
-
+
+

{spokenForm}

-
- -
{spokenForm}
- - -
+ {debug && ( +
+ +
{spokenForm}
+ + +
+ )} + + + + +
+
JSON
@@ -35,13 +47,21 @@ export function ShikiComponent({
 }
 
 const Before = ({ content }: { content: string }) => {
-  return 
; + return ( +
+ ); }; const During = ({ content }: { content: string }) => { if (content) { return ( -
+
); } return <>; @@ -50,8 +70,143 @@ const During = ({ content }: { content: string }) => { const After = ({ content }: { content: string }) => { return (
); }; + +const STEP_DURATIONS = [1500, 500, 2000]; // milliseconds + +function Carousel({ children }: { children: React.ReactNode[] }) { + const [activeIndex, setActiveIndex] = useState(0); + + const handleNext = () => { + setActiveIndex((prevIndex) => (prevIndex + 1) % children.length); + }; + + const handlePrev = () => { + setActiveIndex((prevIndex) => + prevIndex === 0 ? children.length - 1 : prevIndex - 1, + ); + }; + + const handleIndicatorClick = (index: number) => { + setActiveIndex(index); + }; + + const timeoutRef = useRef(null); + + useEffect(() => { + const duration = STEP_DURATIONS[activeIndex] || 3000; + + timeoutRef.current = setTimeout(() => { + setActiveIndex((prevIndex) => (prevIndex + 1) % children.length); + }, duration); + + return () => clearTimeout(timeoutRef.current); + }, [activeIndex, children.length]); + + const CarouselItem = ({ + child, + isActive, + }: { + child: React.ReactNode; + isActive: boolean; + }) => { + return ( +
+ {child} +
+ ); + }; + + return ( + + ); +} + +const SliderButton = ({ + additionalClasses, + callback, +}: { + additionalClasses?: string; + callback: React.MouseEventHandler; +}) => { + return ( + + ); +}; From 398596ea972767a488ad6b9e77e0cb450e304936 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 20 May 2025 07:51:03 -0700 Subject: [PATCH 159/211] feat: Add `debug` prop to test case component functions --- .../src/pages/component-sheet.tsx | 17 ++++++++++++----- .../src/components/TestCaseComponentPage.tsx | 12 ++++++++---- .../test-case-component/src/generateHtml.ts | 2 +- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 57e29e3fe3..b504c923b1 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -86,18 +86,25 @@ export async function getStaticProps() { export type TestCaseComponentProps = TestCaseFixture & { filename: string; raw: TestCaseFixture; - before: string; - during: string; - after: string; + before: { html: string; data: string[] }; + during: { html: string; data: string[] }; + after: { html: string; data: string[] }; + debug?: boolean; }; -export function App({ data }: { data: TestCaseComponentProps[] }) { +export function App({ + data, + debug, +}: { + data: TestCaseComponentProps[]; + debug?: boolean; +}) { return ( <> Cursorless Test Case Component Page - + ); } diff --git a/packages/test-case-component/src/components/TestCaseComponentPage.tsx b/packages/test-case-component/src/components/TestCaseComponentPage.tsx index 3a972bdfb5..9a1b8b802d 100644 --- a/packages/test-case-component/src/components/TestCaseComponentPage.tsx +++ b/packages/test-case-component/src/components/TestCaseComponentPage.tsx @@ -7,15 +7,17 @@ import type { TestCaseFixture } from "@cursorless/common"; export type TestCaseComponentProps = TestCaseFixture & { filename: string; raw: TestCaseFixture; - before: string; - during: string; - after: string; + before: { html: string; data: string[] }; + during: { html: string; data: string[] }; + after: { html: string; data: string[] }; }; export function TestCaseComponentPage({ data, + debug, }: { data: TestCaseComponentProps[]; + debug?: boolean; }) { return (
@@ -35,7 +37,9 @@ export function TestCaseComponentPage({ } const { filename } = item; if (filename) { - return ; + return ( + + ); } else { return <>; } diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index 82e40e7dc5..5e57d74e02 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -159,7 +159,7 @@ class HTMLGenerator { const errorRendered = `
Omitted due to errors: ${error}
` htmlArray.push(errorRendered) } - return htmlArray.join("") + return { html: htmlArray.join(""), data: [] } } async generateAll() { From 4f2ada0806d5c19dd95f538fc7d537b7ed87bed2 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 20 May 2025 07:51:47 -0700 Subject: [PATCH 160/211] feat: Create component-sheet-debug page --- .../src/pages/component-sheet-debug.tsx | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 packages/cursorless-org/src/pages/component-sheet-debug.tsx diff --git a/packages/cursorless-org/src/pages/component-sheet-debug.tsx b/packages/cursorless-org/src/pages/component-sheet-debug.tsx new file mode 100644 index 0000000000..6e7ff7ee21 --- /dev/null +++ b/packages/cursorless-org/src/pages/component-sheet-debug.tsx @@ -0,0 +1,97 @@ +import * as yaml from "js-yaml"; +import fs from "fs"; +import path from "path"; +import Head from "next/head"; + +import { loadTestCaseFixture } from "@cursorless/test-case-component"; +import { TestCaseComponentPage } from "@cursorless/test-case-component"; +import type { TestCaseComponentProps } from "@cursorless/test-case-component"; +import { testSelectedFiles } from "./allowList"; + +import { cheatsheetBodyClasses } from "@cursorless/cheatsheet"; + +const fixturesDir = path.join("../", "../", "data", "fixtures", "recorded"); + +async function loadYamlFiles(dir: string, selectedFiles?: string[]) { + const directoryPath = path.join(process.cwd(), dir); + const files = fs.readdirSync(directoryPath); + const data: any[] = []; + + files.forEach((file) => { + if ( + path.extname(file) === ".yml" && + (!selectedFiles || selectedFiles.includes(file)) + ) { + try { + const filePath = path.join(directoryPath, file); + const fileContents = fs.readFileSync(filePath, "utf8"); + const yamlData: any = yaml.load(fileContents); + yamlData.filename = file; + data.push(yamlData); + } catch { + console.error("File load failure", file); + } + } + }); + + return data; +} + +// See https://github.com/vercel/next.js/discussions/12325#discussioncomment-1116108 +export async function getStaticProps() { + const itemsDirActions = path.join(fixturesDir, "actions"); + const itemsDirDecorations = path.join(fixturesDir, "decorations"); + const itemsDirInsertEmptyLines = path.join( + fixturesDir, + "actions/insertEmptyLines", + ); + + const dataActions = await loadYamlFiles(itemsDirActions, testSelectedFiles); + const dataInsertEmptyLines = await loadYamlFiles( + itemsDirInsertEmptyLines, + testSelectedFiles, + ); + + const dataDecorations = await loadYamlFiles( + itemsDirDecorations, + testSelectedFiles, + ); + + const data_errors: any[] = []; + + const data = ( + await Promise.all( + [...dataActions, ...dataDecorations, ...dataInsertEmptyLines].map( + async (val) => { + try { + const fixture = await loadTestCaseFixture(val); + return { ...fixture, raw: val }; + } catch (err) { + console.error(err); + data_errors.push(val); + return null; + } + }, + ), + ) + ).filter((test) => test !== undefined); + + if (data_errors.length > 0) { + console.error("data errors:", data_errors); + } + + return { props: { data, bodyClasses: cheatsheetBodyClasses } }; +} + +export function App({ data }: { data: TestCaseComponentProps[] }) { + return ( + <> + + Cursorless Test Case Component Page + + + + ); +} + +export default App; From c1951eb67a4fd4c82074a0b32a1c59d205ce1eda Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 20 May 2025 07:53:15 -0700 Subject: [PATCH 161/211] style: Update CSS for .selection, .decoration --- packages/test-case-component/src/styles.css | 25 +++++++++++++-------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/packages/test-case-component/src/styles.css b/packages/test-case-component/src/styles.css index 0b6a2f4d5e..944b04ce34 100644 --- a/packages/test-case-component/src/styles.css +++ b/packages/test-case-component/src/styles.css @@ -84,22 +84,22 @@ pre.shiki { @keyframes blink { 0%, - 60% { - border-color: #667f; + 50% { + background: #667f; } - 61%, + 51%, 100% { - border-color: #6670; + background: #6670; } } .selection { - /* display: inline-block; */ - border-right: 2px solid #00b; - animation: blink 1400ms infinite; - padding: 0px 0.5px 0px 0; - margin: 0 0px 0 -1px; + position: absolute; + width: 2px; height: var(--line-height); + background: #00b; + animation: blink 1000ms infinite; + /* margin-left: -3px; */ } .selection:not(:empty) { @@ -108,12 +108,19 @@ pre.shiki { } .decoration { display: inline-block; + line-height: 0; + font-size: 0; + /* vertical-align: middle; */ /* padding: 0px 0.5px 0px 0.5px; */ /* margin: 0 0px 0 -1px; */ /* height: var(--line-height); */ /* width: 100%; */ } +.decoration:empty { + display: block; +} + .full { width: 100%; } From d77b331cc80838cbad5d24f1bf7213c159ef8d67 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 20 May 2025 07:53:46 -0700 Subject: [PATCH 162/211] style: Update shiki-background to be tailwind-gray-900 --- packages/test-case-component/src/shiki.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/shiki.css b/packages/test-case-component/src/shiki.css index 3ff520baf7..775818707b 100644 --- a/packages/test-case-component/src/shiki.css +++ b/packages/test-case-component/src/shiki.css @@ -1,7 +1,7 @@ :root { --shiki-foreground: #eeeeee; --shiki-color-text: #eeeeee; - --shiki-background: #1f1f1f; + --shiki-background: #111827; /* Tailwind's gray-900 */ --shiki-token-constant: #ff6666; --shiki-token-string: #c2ff6d; --shiki-token-comment: #15bc28; From c0ab5713cca333fd36defd6a539b21f32e12608c Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 1 Jun 2025 13:16:51 -0700 Subject: [PATCH 163/211] feat: Add dependency clsx to test-case-component --- packages/test-case-component/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index c913b8c2f4..6580a52153 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -27,6 +27,7 @@ "js-yaml": "^4.1.0", "prettier": "3.2.5", "react": "^18.2.0", + "clsx": "^2.1.1", "shiki-magic-move": "1.1.0", "tsx": "3.12.7", "yaml": "2.2.1" From 16fc2846d1d6ea4f08f08a661132292987f0a734 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 1 Jun 2025 13:20:45 -0700 Subject: [PATCH 164/211] feat: Add additional languages to highlighter --- packages/test-case-component/src/generateHtml.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index 5e57d74e02..758fff0067 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -36,7 +36,7 @@ export async function generateHtml(data: DataFixture) { const highlighter = createHighlighter({ themes: [myTheme], - langs: ["javascript", "typescript"], + langs: ["javascript", "typescript", "python", "markdown"], }); type StepNameType = "before" | "during" | "after" From 291d7635afaf1e2af712405a53e1a1b850387054 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 1 Jun 2025 13:22:02 -0700 Subject: [PATCH 165/211] chore: Refine console warnings in generateHtml --- packages/test-case-component/src/generateHtml.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index 758fff0067..d575007a87 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -135,7 +135,8 @@ class HTMLGenerator { htmlArray.push(codeBody) break; // Exit loop if successful } catch (error) { - console.warn("Failed with decorations level:", fallbackDecoration, error); + console.warn(`"Failed with decorations level ${i}:"`, this.command); + console.warn(fallbackDecoration, error); // Continue to the next fallback level } } @@ -159,7 +160,7 @@ class HTMLGenerator { const errorRendered = `
Omitted due to errors: ${error}
` htmlArray.push(errorRendered) } - return { html: htmlArray.join(""), data: [] } + return { html: htmlArray.join(""), data: [decorations] } } async generateAll() { From 862acdc86aec6857e847b55b741cfb99e01537a4 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 1 Jun 2025 13:25:59 -0700 Subject: [PATCH 166/211] style: Decrease display time and step three of shikiComponent --- packages/test-case-component/src/components/shikiComponent.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-case-component/src/components/shikiComponent.tsx b/packages/test-case-component/src/components/shikiComponent.tsx index ba162b2824..a2a5e986ee 100644 --- a/packages/test-case-component/src/components/shikiComponent.tsx +++ b/packages/test-case-component/src/components/shikiComponent.tsx @@ -76,7 +76,7 @@ const After = ({ content }: { content: string }) => { ); }; -const STEP_DURATIONS = [1500, 500, 2000]; // milliseconds +const STEP_DURATIONS = [1500, 500, 1500]; // milliseconds function Carousel({ children }: { children: React.ReactNode[] }) { const [activeIndex, setActiveIndex] = useState(0); From c957aadce5df288f4b0ae26a51cdadc6d94b76eb Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 01:02:28 -0700 Subject: [PATCH 167/211] chore: Delete unused generateHtml.spec.ts file --- .../src/generateHtml.spec.ts | 314 ------------------ 1 file changed, 314 deletions(-) delete mode 100644 packages/test-case-component/src/generateHtml.spec.ts diff --git a/packages/test-case-component/src/generateHtml.spec.ts b/packages/test-case-component/src/generateHtml.spec.ts deleted file mode 100644 index a6bdaa1bea..0000000000 --- a/packages/test-case-component/src/generateHtml.spec.ts +++ /dev/null @@ -1,314 +0,0 @@ -import prettier from "prettier"; -import { generateHtml as unformettedFunc } from "./generateHtml"; - -async function generateHtml(...args: Parameters) { - return prettier.format(await unformettedFunc(...args), { - singleAttributePerLine: true, - htmlWhitespaceSensitivity: "ignore", - parser: "babel", - }); -} - -// uses mocha for most tests -// okay to stick with Jest if needed -// cheatsheet might use Jest? - -describe("generateHtml", () => { - it("should select whole line", async () => { - expect( - await generateHtml( - { - documentContents: " const oneLine = 1;\nconst line2 = 2;", - selections: [ - { - type: "line", - anchor: { line: 1, character: 0 }, - active: { line: 1, character: 22 }, - }, - ], - }, - - "typescript", - ), - ).toMatchInlineSnapshot(` - "
-        
-          
-             
-            const
-             
-            oneLine
-             
-            =
-             
-            1
-            ;
-          
-          
-            const
-             
-            line2
-             
-            =
-             
-            2
-            ;
-          
-        
-      
; - " - `); - }); - it("should select single token", async () => { - expect( - await generateHtml( - { - documentContents: " const oneLine = 1;\nconst line2 = 2;", - selections: [ - { - type: "selection", - anchor: { line: 0, character: 8 }, - active: { line: 0, character: 15 }, - }, - ], - }, - - "typescript", - ), - ).toMatchInlineSnapshot(` - "
-        
-          
-             
-            const
-             
-            
-              oneLine
-            
-             
-            =
-             
-            1
-            ;
-          
-          
-            const
-             
-            line2
-             
-            =
-             
-            2
-            ;
-          
-        
-      
; - " - `); - }); - - it("should select multiple tokens", async () => { - expect( - await generateHtml( - { - documentContents: "const oneLine = 1;", - selections: [ - { - type: "selection", - anchor: { line: 0, character: 6 }, - active: { line: 0, character: 17 }, - }, - ], - }, - - "typescript", - ), - ).toMatchInlineSnapshot(` - "
-        
-          
-            const
-             
-            
-              oneLine
-               
-              =
-               
-              1
-            
-            ;
-          
-        
-      
; - " - `); - }); - - it("should select inside tokens", async () => { - expect( - await generateHtml( - { - documentContents: 'const oneLine = "line";', - selections: [ - { - type: "selection", - anchor: { line: 0, character: 9 }, - active: { line: 0, character: 19 }, - }, - ], - }, - - "typescript", - ), - ).toMatchInlineSnapshot(` - "
-        
-          
-            const
-             
-            one
-            
-              Line
-               
-              =
-               
-              
-                "li
-              
-            
-            ne"
-            ;
-          
-        
-      
; - " - `); - }); - - it("should select inside single token", async () => { - expect( - await generateHtml( - { - documentContents: "const oneLine = 1;", - selections: [ - { - type: "selection", - anchor: { line: 0, character: 9 }, - active: { line: 0, character: 11 }, - }, - ], - }, - - "typescript", - ), - ).toMatchInlineSnapshot(` - "
-        
-          
-            const
-             
-            one
-            
-              Li
-            
-            ne
-             
-            =
-             
-            1
-            ;
-          
-        
-      
; - " - `); - }); - it("should select superset ranges", async () => { - expect( - await generateHtml( - { - documentContents: "const oneLine = 1;", - selections: [ - { - type: "selection", - anchor: { line: 0, character: 9 }, - active: { line: 0, character: 11 }, - }, - ], - thatMark: [ - { - type: "selection", - anchor: { line: 0, character: 6 }, - active: { line: 0, character: 13 }, - }, - ], - }, - - "typescript", - ), - ).toMatchInlineSnapshot(` - "
-        
-          
-            const
-             
-            
-              one
-            
-            
-              Li
-            
-            
-              ne
-            
-             
-            =
-             
-            1
-            ;
-          
-        
-      
; - " - `); - }); -}); From b3fbcf79a848f65143f2753f9af6d8ff293bd649 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 01:37:31 -0700 Subject: [PATCH 168/211] refactor(helpers): Reorganize and add helper to their own utility files --- packages/test-case-component/src/helpers.ts | 330 ------------------ .../src/helpers/addContentRangeDecorations.ts | 28 ++ .../src/helpers/classesMap.ts | 19 + .../src/helpers/createDecorations.ts | 54 +++ .../src/helpers/getIdeFlashDecorations.ts | 68 ++++ .../src/helpers/getMarkDecorations.ts | 51 +++ .../src/helpers/getSelections.ts | 32 ++ .../src/helpers/getSourceMarks.ts | 20 ++ .../src/helpers/getThatMarks.ts | 21 ++ .../test-case-component/src/helpers/index.ts | 10 + .../mergeOverlappingDecorations.test.ts | 96 +++++ .../src/helpers/splitDocumentWithOffsets.ts | 19 + .../src/helpers/typeGuards.ts | 20 ++ 13 files changed, 438 insertions(+), 330 deletions(-) delete mode 100644 packages/test-case-component/src/helpers.ts create mode 100644 packages/test-case-component/src/helpers/addContentRangeDecorations.ts create mode 100644 packages/test-case-component/src/helpers/classesMap.ts create mode 100644 packages/test-case-component/src/helpers/createDecorations.ts create mode 100644 packages/test-case-component/src/helpers/getIdeFlashDecorations.ts create mode 100644 packages/test-case-component/src/helpers/getMarkDecorations.ts create mode 100644 packages/test-case-component/src/helpers/getSelections.ts create mode 100644 packages/test-case-component/src/helpers/getSourceMarks.ts create mode 100644 packages/test-case-component/src/helpers/getThatMarks.ts create mode 100644 packages/test-case-component/src/helpers/index.ts create mode 100644 packages/test-case-component/src/helpers/mergeOverlappingDecorations.test.ts create mode 100644 packages/test-case-component/src/helpers/splitDocumentWithOffsets.ts create mode 100644 packages/test-case-component/src/helpers/typeGuards.ts diff --git a/packages/test-case-component/src/helpers.ts b/packages/test-case-component/src/helpers.ts deleted file mode 100644 index 44ddfc0659..0000000000 --- a/packages/test-case-component/src/helpers.ts +++ /dev/null @@ -1,330 +0,0 @@ -import type { - Command, - CommandLatest, - PlainSpyIDERecordedValues, - SelectionPlainObject, - SerializedMarks, - TargetPlainObject, -} from "@cursorless/common"; - -import type { DecorationItem } from "shiki" - -/** - * Splits a string into an array of objects containing the line content - * and the cumulative offset from the start of the string. - * - * @param {string} documentContents - The string to split into lines. - * @returns {{ line: string, offset: number }[]} An array of objects with line content and cumulative offset. - */ -function splitDocumentWithOffsets(documentContents: string): { line: string; offset: number }[] { - const lines = documentContents.split("\n"); - let cumulativeOffset = 0; - - return lines.map((line) => { - const result = { line, offset: cumulativeOffset }; - cumulativeOffset += line.length + 1; // +1 for the newline character - return result; - }); -} - -/** - * Creates decorations based on the split document with offsets and marks. - * - * @param {Object} options - An object containing optional fields like marks, command, or ide. - * @param {SerializedMarks} [options.marks] - An object containing marks with line, start, and end positions. - * @param {CommandLatest | Command} [options.command] - (Optional) The command object specifying the command details. - * @param {PlainSpyIDERecordedValues} [options.ide] - (Optional) The ide object specifying the IDE details. - * @returns {DecorationItem[]} An array of decoration objects. - */ -function createDecorations( - options: { - marks?: SerializedMarks; - command?: CommandLatest | Command; - ide?: PlainSpyIDERecordedValues; - lines?: string[] - selections?: SelectionPlainObject[] - thatMark?: TargetPlainObject[] - sourceMark?: TargetPlainObject[] - finalStateMarkHelpers?: { - sourceMark?: TargetPlainObject[] - thatMark?: TargetPlainObject[] - } - } = {} // Default to an empty object -): DecorationItem[][] { - const { marks, ide, lines, selections, thatMark, sourceMark } = options - - const decorations: DecorationItem[][] = []; - - const markDecorations = getMarkDecorations({ marks, lines }) - const ideFlashDecorations = getIdeFlashDecorations({ lines, ide }) - const selectionRanges = getSlections({ selections }) - const sourceMarks_ = getSourceMarks({ sourceMark }) - - decorations.push(markDecorations); - decorations.push(ideFlashDecorations); - decorations.push(selectionRanges); - decorations.push(sourceMarks_); - - if (thatMark) { - const thatMarks = getThatMarks({ thatMark }) - decorations.push(thatMarks); - } else { - decorations.push([]) - } - - return decorations - -} - -/** - * Generates Shiki decorations for marks on a specific line. - * - * @param {Object} params - The parameters for generating decorations. - * @param {SerializedMarks} [params.marks] - An object containing serialized marks with start and end positions. - * @param {number} params.index - The index of the current line being processed. - * @param {{ line: string; offset: number }} params.lineData - The line content and its cumulative offset. - * @returns {DecorationItem[]} An array of Shiki decorations for the specified line. - * - */ -function getMarkDecorations({ - marks, - lines -}: { - marks?: SerializedMarks; - lines?: string[] -}): DecorationItem[] { - const decorations: DecorationItem[] = []; - - Object.entries(marks || {}).forEach(([key, { start }]) => { - const [hatType, letter] = key.split(".") as [keyof typeof classesMap, string]; - - const markLineStart = start.line - - if (!lines) { - console.warn("Lines are undefined. Skipping decoration generation."); - return []; - } - const currentLine = lines[markLineStart] - - const searchStart = start.character; - const nextLetterIndex = currentLine.indexOf(letter, searchStart); - - if (nextLetterIndex === -1) { - console.warn( - `Letter "${letter}" not found after position ${searchStart} in line: "${currentLine}"` - ); - return; // Skip this mark if the letter is not found - } - - const decorationItem: DecorationItem = { - start, - end: { line: start.line, character: nextLetterIndex + 1 }, - properties: { - class: getDecorationClass(hatType), // Replace with the desired class name for marks - }, - alwaysWrap: true, - } - - - decorations.push(decorationItem); - }); - - return decorations; -} - -type LineRange = { type: string; start: number; end: number } -type PositionRange = { type: string; start: { line: number; character: number }; end: { line: number; character: number } }; - -type RangeType = - | LineRange - | PositionRange - - -function getIdeFlashDecorations({ - ide, - lines, -}: { - ide?: PlainSpyIDERecordedValues; - lines?: string[]; -} = {}): DecorationItem[] { - if (!lines) { - console.warn("Lines are undefined. Skipping line decorations."); - return []; - } - - if (!ide?.flashes || !Array.isArray(ide.flashes)) { - console.warn("No flashes found in IDE. Skipping line decorations."); - return []; - } - - const decorations: DecorationItem[] = []; - - const { flashes } = ide - - flashes.forEach(({ style, range }) => { - const { type } = range; - - if (isLineRange(range)) { - const { start: lineStart, end: lineEnd } = range - - /* Split a multi-line range into single lines so that shiki doesn't add - * multiple classes to the same span causing CSS conflicts - */ - for (let line = lineStart; line <= lineEnd; line++) { - if (line >= lines.length) { - continue - } - const contentLine = lines[line]; - const startPosition = { line, character: 0 }; - const endPosition = { line, character: contentLine.length }; - const decorationItem = { - start: startPosition, - end: endPosition, - properties: { - class: `${getDecorationClass(style)} full`, - }, - alwaysWrap: true, - }; - decorations.push(decorationItem); - } - - } else if (isPositionRange(range)) { - const { start: rangeStart, end: rangeEnd } = range; - const decorationItem = { - start: rangeStart, - end: rangeEnd, - properties: { - class: getDecorationClass(style), - }, - alwaysWrap: true, - } - decorations.push(decorationItem); - } else { - console.warn(`Unknown range type "${type}". Skipping this flash.`); - } - }); - - return decorations; -} - -function getSlections( - { - selections, - }: { - selections?: SelectionPlainObject[]; - lines?: string[] - }): DecorationItem[] { - const decorations: DecorationItem[] = []; - if (selections === undefined || selections.length === 0) { - console.warn("Lines are undefined. Skipping decoration generation."); - return [] - } - selections.forEach(({ anchor, active }) => { - const decorationItem = { - start: anchor, - end: active, - properties: { - class: getDecorationClass("selection"), - }, - alwaysWrap: true, - } - decorations.push(decorationItem) - }) - - return decorations -} - -function getThatMarks({ thatMark }: { thatMark: TargetPlainObject[] }): DecorationItem[] { - const decorations: DecorationItem[] = []; - - if (thatMark === undefined || thatMark.length === 0) { - console.warn("finalStateSourceMarks are undefined. Skipping decoration generation."); - return [] - } else { - addContentRangeDecorations({ - marks: thatMark, - highlightClass: "thatMark", decorations - }); - } - - return decorations -} - -function getSourceMarks({ sourceMark }: { sourceMark?: TargetPlainObject[] }): DecorationItem[] { - const decorations: DecorationItem[] = []; - if (sourceMark === undefined || sourceMark.length === 0) { - console.warn("finalStateSourceMarks are undefined. Skipping decoration generation."); - return [] - } else { - addContentRangeDecorations({ - marks: sourceMark, - highlightClass: "sourceMark", decorations - }); - } - - return decorations -} - -// Type guard for line range -function isLineRange(range: RangeType): range is LineRange { - return typeof range.start === "number" - && typeof range.end === "number" - && range.type === "line"; -} - -// Type guard for position range -function isPositionRange( - range: RangeType -): range is PositionRange { - return typeof range.start === "object" - && typeof range.end === "object" - && range.type === "character"; -} - -function addContentRangeDecorations({ - marks, - highlightClass, - decorations, -}: { - marks: TargetPlainObject[]; - highlightClass: keyof typeof classesMap; - decorations: DecorationItem[]; -}): void { - marks.forEach(({ contentRange }) => { - const { start, end } = contentRange; - const decorationItem = { - start, - end, - properties: { - class: getDecorationClass(highlightClass), - }, - alwaysWrap: true, - }; - decorations.push(decorationItem); - }); -} - -const DEFAULT_HAT_CLASS = "hat default"; -const classesMap = { - default: DEFAULT_HAT_CLASS, - pendingDelete: "decoration pendingDelete", - referenced: "decoration referenced", - selection: "selection", - pendingModification0: "decoration pendingModification0", - pendingModification1: "decoration pendingModification1", - justAdded: "decoration justAdded", - highlight0: "decoration highlight0", - highlight1: "decoration highlight1", - sourceMark: "sourceMark", - thatMark: "thatMark" -}; - -function getDecorationClass(key: keyof typeof classesMap): string { - return classesMap[key]; -} - - -export { - splitDocumentWithOffsets, - createDecorations -} \ No newline at end of file diff --git a/packages/test-case-component/src/helpers/addContentRangeDecorations.ts b/packages/test-case-component/src/helpers/addContentRangeDecorations.ts new file mode 100644 index 0000000000..61c37aeb97 --- /dev/null +++ b/packages/test-case-component/src/helpers/addContentRangeDecorations.ts @@ -0,0 +1,28 @@ +import type { TargetPlainObject } from "@cursorless/common"; +import type { DecorationItem } from "shiki"; +import { getDecorationClass, type classesMap } from "./classesMap"; + +function addContentRangeDecorations({ + marks, + highlightClass, + decorations, +}: { + marks: TargetPlainObject[]; + highlightClass: keyof typeof classesMap + decorations: DecorationItem[]; +}): void { + marks.forEach(({ contentRange }) => { + const { start, end } = contentRange; + const decorationItem = { + start, + end, + properties: { + class: getDecorationClass(highlightClass), + }, + alwaysWrap: true, + }; + decorations.push(decorationItem); + }); +} + +export { addContentRangeDecorations } diff --git a/packages/test-case-component/src/helpers/classesMap.ts b/packages/test-case-component/src/helpers/classesMap.ts new file mode 100644 index 0000000000..5e4c14e3bb --- /dev/null +++ b/packages/test-case-component/src/helpers/classesMap.ts @@ -0,0 +1,19 @@ +const DEFAULT_HAT_CLASS = "hat default"; +export const classesMap = { + default: DEFAULT_HAT_CLASS, + pendingDelete: "decoration pendingDelete", + referenced: "decoration referenced", + selection: "selection", + pendingModification0: "decoration pendingModification0", + pendingModification1: "decoration pendingModification1", + justAdded: "decoration justAdded", + highlight0: "decoration highlight0", + highlight1: "decoration highlight1", + sourceMark: "sourceMark", + thatMark: "thatMark" +}; + +export function getDecorationClass(key: keyof typeof classesMap): string { + return classesMap[key]; +} + diff --git a/packages/test-case-component/src/helpers/createDecorations.ts b/packages/test-case-component/src/helpers/createDecorations.ts new file mode 100644 index 0000000000..1887bc2b9e --- /dev/null +++ b/packages/test-case-component/src/helpers/createDecorations.ts @@ -0,0 +1,54 @@ +import type { + Command, + CommandLatest, + PlainSpyIDERecordedValues, + SelectionPlainObject, + SerializedMarks, + TargetPlainObject, +} from "@cursorless/common"; +import type { DecorationItem } from "shiki" +import { getMarkDecorations } from "./getMarkDecorations"; +import { getIdeFlashDecorations } from "./getIdeFlashDecorations"; +import { getSlections } from "./getSelections"; +import { getSourceMarks } from "./getSourceMarks"; +import { getThatMarks } from "./getThatMarks"; + +export function createDecorations( + options: { + marks?: SerializedMarks; + command?: CommandLatest | Command; + ide?: PlainSpyIDERecordedValues; + lines?: string[] + selections?: SelectionPlainObject[] + thatMark?: TargetPlainObject[] + sourceMark?: TargetPlainObject[] + finalStateMarkHelpers?: { + sourceMark?: TargetPlainObject[] + thatMark?: TargetPlainObject[] + } + } = {} +): DecorationItem[][] { + const { marks, ide, lines, selections, thatMark, sourceMark } = options + + const decorations: DecorationItem[][] = []; + + const markDecorations = getMarkDecorations({ marks, lines }) + const ideFlashDecorations = getIdeFlashDecorations({ lines, ide }) + const selectionRanges = getSlections({ selections }) + const sourceMarks_ = getSourceMarks({ sourceMark }) + + decorations.push(markDecorations); + decorations.push(ideFlashDecorations); + decorations.push(selectionRanges); + decorations.push(sourceMarks_); + + if (thatMark) { + const thatMarks = getThatMarks({ thatMark }) + decorations.push(thatMarks); + } else { + decorations.push([]) + } + + return decorations +} + diff --git a/packages/test-case-component/src/helpers/getIdeFlashDecorations.ts b/packages/test-case-component/src/helpers/getIdeFlashDecorations.ts new file mode 100644 index 0000000000..5a2590621b --- /dev/null +++ b/packages/test-case-component/src/helpers/getIdeFlashDecorations.ts @@ -0,0 +1,68 @@ +import type { PlainSpyIDERecordedValues } from "@cursorless/common"; +import type { DecorationItem } from "shiki"; +import { isLineRange, isPositionRange } from "./typeGuards"; +import { getDecorationClass } from "./classesMap"; + +function getIdeFlashDecorations({ + ide, + lines, +}: { + ide?: PlainSpyIDERecordedValues; + lines?: string[]; +} = {}): DecorationItem[] { + if (!lines) { + console.warn("Lines are undefined. Skipping line decorations."); + return []; + } + + if (!ide?.flashes || !Array.isArray(ide.flashes)) { + console.warn("No flashes found in IDE. Skipping line decorations."); + return []; + } + + const decorations: DecorationItem[] = []; + + const { flashes } = ide + + flashes.forEach(({ style, range }) => { + const { type } = range; + + if (isLineRange(range)) { + const { start: lineStart, end: lineEnd } = range + for (let line = lineStart; line <= lineEnd; line++) { + if (line >= lines.length) { + continue + } + const contentLine = lines[line]; + const startPosition = { line, character: 0 }; + const endPosition = { line, character: contentLine.length }; + const decorationItem = { + start: startPosition, + end: endPosition, + properties: { + class: `${getDecorationClass(style)} full`, + }, + alwaysWrap: true, + }; + decorations.push(decorationItem); + } + } else if (isPositionRange(range)) { + const { start: rangeStart, end: rangeEnd } = range; + const decorationItem = { + start: rangeStart, + end: rangeEnd, + properties: { + class: getDecorationClass(style), + }, + alwaysWrap: true, + } + decorations.push(decorationItem); + } else { + console.warn(`Unknown range type "${type}". Skipping this flash.`); + } + }); + + return decorations; +} + +export { getIdeFlashDecorations } diff --git a/packages/test-case-component/src/helpers/getMarkDecorations.ts b/packages/test-case-component/src/helpers/getMarkDecorations.ts new file mode 100644 index 0000000000..1af951254d --- /dev/null +++ b/packages/test-case-component/src/helpers/getMarkDecorations.ts @@ -0,0 +1,51 @@ +import type { SerializedMarks } from "@cursorless/common"; +import type { DecorationItem } from "shiki"; +import type { classesMap } from "./classesMap"; +import { getDecorationClass } from "./classesMap"; + +function getMarkDecorations({ + marks, + lines +}: { + marks?: SerializedMarks; + lines?: string[] +}): DecorationItem[] { + const decorations: DecorationItem[] = []; + + Object.entries(marks || {}).forEach(([key, { start }]) => { + const [hatType, letter] = key.split(".") as [keyof typeof classesMap, string]; + + const markLineStart = start.line + + if (!lines) { + console.warn("Lines are undefined. Skipping decoration generation."); + return []; + } + const currentLine = lines[markLineStart] + + const searchStart = start.character; + const nextLetterIndex = currentLine.indexOf(letter, searchStart); + + if (nextLetterIndex === -1) { + console.warn( + `Letter"${letter}" not found after position ${searchStart} in line:"${currentLine}"` + ); + return; // Skip this mark if the letter is not found + } + + const decorationItem: DecorationItem = { + start, + end: { line: start.line, character: nextLetterIndex + 1 }, + properties: { + class: getDecorationClass(hatType), + }, + alwaysWrap: true, + } + + decorations.push(decorationItem); + }); + + return decorations; +} + +export { getMarkDecorations } diff --git a/packages/test-case-component/src/helpers/getSelections.ts b/packages/test-case-component/src/helpers/getSelections.ts new file mode 100644 index 0000000000..ee55a2a12d --- /dev/null +++ b/packages/test-case-component/src/helpers/getSelections.ts @@ -0,0 +1,32 @@ +import type { SelectionPlainObject } from "@cursorless/common"; +import type { DecorationItem } from "shiki"; +import { getDecorationClass } from "./classesMap"; + +function getSlections( + { + selections, + }: { + selections?: SelectionPlainObject[]; + lines?: string[] + }): DecorationItem[] { + const decorations: DecorationItem[] = []; + if (selections === undefined || selections.length === 0) { + console.warn("Lines are undefined. Skipping decoration generation."); + return [] + } + selections.forEach(({ anchor, active }) => { + const decorationItem = { + start: anchor, + end: active, + properties: { + class: getDecorationClass("selection"), + }, + alwaysWrap: true, + } + decorations.push(decorationItem) + }) + + return decorations +} + +export { getSlections } diff --git a/packages/test-case-component/src/helpers/getSourceMarks.ts b/packages/test-case-component/src/helpers/getSourceMarks.ts new file mode 100644 index 0000000000..5119d70812 --- /dev/null +++ b/packages/test-case-component/src/helpers/getSourceMarks.ts @@ -0,0 +1,20 @@ +import type { TargetPlainObject } from "@cursorless/common"; +import type { DecorationItem } from "shiki"; +import { addContentRangeDecorations } from "./addContentRangeDecorations"; + +function getSourceMarks({ sourceMark }: { sourceMark?: TargetPlainObject[] }): DecorationItem[] { + const decorations: DecorationItem[] = []; + if (sourceMark === undefined || sourceMark.length === 0) { + console.warn("finalStateSourceMarks are undefined. Skipping decoration generation."); + return [] + } else { + addContentRangeDecorations({ + marks: sourceMark, + highlightClass: "sourceMark", decorations + }); + } + + return decorations +} + +export { getSourceMarks } diff --git a/packages/test-case-component/src/helpers/getThatMarks.ts b/packages/test-case-component/src/helpers/getThatMarks.ts new file mode 100644 index 0000000000..fbfd903030 --- /dev/null +++ b/packages/test-case-component/src/helpers/getThatMarks.ts @@ -0,0 +1,21 @@ +import type { TargetPlainObject } from "@cursorless/common"; +import type { DecorationItem } from "shiki"; +import { addContentRangeDecorations } from "./addContentRangeDecorations"; + +function getThatMarks({ thatMark }: { thatMark: TargetPlainObject[] }): DecorationItem[] { + const decorations: DecorationItem[] = []; + + if (thatMark === undefined || thatMark.length === 0) { + console.warn("finalStateSourceMarks are undefined. Skipping decoration generation."); + return [] + } else { + addContentRangeDecorations({ + marks: thatMark, + highlightClass: "thatMark", decorations + }); + } + + return decorations +} + +export { getThatMarks } diff --git a/packages/test-case-component/src/helpers/index.ts b/packages/test-case-component/src/helpers/index.ts new file mode 100644 index 0000000000..dd6c985b34 --- /dev/null +++ b/packages/test-case-component/src/helpers/index.ts @@ -0,0 +1,10 @@ +export * from "./splitDocumentWithOffsets"; +export * from "./createDecorations"; +export * from "./getMarkDecorations"; +export * from "./getIdeFlashDecorations"; +export * from "./getSelections"; +export * from "./getThatMarks"; +export * from "./getSourceMarks"; +export * from "./addContentRangeDecorations"; +export * from "./typeGuards"; +export * from "./classesMap"; diff --git a/packages/test-case-component/src/helpers/mergeOverlappingDecorations.test.ts b/packages/test-case-component/src/helpers/mergeOverlappingDecorations.test.ts new file mode 100644 index 0000000000..87339e1648 --- /dev/null +++ b/packages/test-case-component/src/helpers/mergeOverlappingDecorations.test.ts @@ -0,0 +1,96 @@ +import { mergeOverlappingDecorations } from "./mergeOverlappingDecorations.ts"; + +describe("mergeOverlappingDecorations", () => { + it("merges overlapping decorations and adds 'overlap' to class", () => { + const input = [ + { + start: { line: 0, character: 0 }, + end: { line: 0, character: 1 }, + properties: { class: "hat default" }, + alwaysWrap: true, + }, + { + start: { line: 0, character: 1 }, + end: { line: 0, character: 1 }, + properties: { class: "selection" }, + alwaysWrap: true, + }, + ]; + const result = mergeOverlappingDecorations(input); + // Only the first decoration should be present, as there is no true overlap + expect(result).toEqual([ + { + start: { line: 0, character: 0 }, + end: { line: 0, character: 1 }, + properties: { class: "hat default" }, + alwaysWrap: true, + }, + ]); + }); + + it("returns non-overlapping decorations unchanged", () => { + const input = [ + { + start: { line: 0, character: 0 }, + end: { line: 0, character: 1 }, + properties: { class: "hat default" }, + }, + { + start: { line: 1, character: 0 }, + end: { line: 1, character: 1 }, + properties: { class: "selection" }, + }, + ]; + const result = mergeOverlappingDecorations(input); + expect(result).toEqual([ + { + start: { line: 0, character: 0 }, + end: { line: 0, character: 1 }, + properties: { class: "hat default" }, + alwaysWrap: undefined, + }, + { + start: { line: 1, character: 0 }, + end: { line: 1, character: 1 }, + properties: { class: "selection" }, + alwaysWrap: undefined, + }, + ]); + }); + + it("separates overlapping sections into their own items", () => { + // item A: 1 to 4 + // item B: 2 to 5 + // returns three items: 1-2 (A), 2-4 (A+B+overlap), 4-5 (B) + const input = [ + { + start: { line: 0, character: 1 }, + end: { line: 0, character: 4 }, + properties: { class: "A" }, + }, + { + start: { line: 0, character: 2 }, + end: { line: 0, character: 5 }, + properties: { class: "B" }, + }, + ]; + const result = mergeOverlappingDecorations(input); + expect(result.length).toBe(3); + expect(result[0]).toMatchObject({ + start: { line: 0, character: 1 }, + end: { line: 0, character: 2 }, + properties: { class: "A" }, + }); + // Defensive: ensure class is a string before splitting + const classValue = result[1].properties?.class; + const overlapClasses = typeof classValue === "string" ? classValue.split(" ") : []; + expect(overlapClasses).toEqual(expect.arrayContaining(["A", "B", "overlap"])); + expect(result[1].start).toEqual({ line: 0, character: 2 }); + expect(result[1].end).toEqual({ line: 0, character: 4 }); + expect(result[2]).toMatchObject({ + start: { line: 0, character: 4 }, + end: { line: 0, character: 5 }, + properties: { class: "B" }, + }); + }); +}); diff --git a/packages/test-case-component/src/helpers/splitDocumentWithOffsets.ts b/packages/test-case-component/src/helpers/splitDocumentWithOffsets.ts new file mode 100644 index 0000000000..8af25885fe --- /dev/null +++ b/packages/test-case-component/src/helpers/splitDocumentWithOffsets.ts @@ -0,0 +1,19 @@ +/** + * Splits a string into an array of objects containing the line content + * and the cumulative offset from the start of the string. + * + * @param {string} documentContents - The string to split into lines. + * @returns {{ line: string, offset: number }[]} An array of objects with line content and cumulative offset. + */ +function splitDocumentWithOffsets(documentContents: string): { line: string; offset: number }[] { + const lines = documentContents.split("\n"); + let cumulativeOffset = 0; + + return lines.map((line) => { + const result = { line, offset: cumulativeOffset }; + cumulativeOffset += line.length + 1; // +1 for the newline character + return result; + }); +} + +export { splitDocumentWithOffsets } diff --git a/packages/test-case-component/src/helpers/typeGuards.ts b/packages/test-case-component/src/helpers/typeGuards.ts new file mode 100644 index 0000000000..d18d671864 --- /dev/null +++ b/packages/test-case-component/src/helpers/typeGuards.ts @@ -0,0 +1,20 @@ +type LineRange = { type: string; start: number; end: number } +type PositionRange = { type: string; start: { line: number; character: number }; end: { line: number; character: number } }; +type RangeType = LineRange | PositionRange; + +function isLineRange(range: RangeType): range is LineRange { + return typeof range.start === "number" + && typeof range.end === "number" + && range.type === "line"; +} + +function isPositionRange( + range: RangeType +): range is PositionRange { + return typeof range.start === "object" + && typeof range.end === "object" + && range.type === "character"; +} + +export { isLineRange, isPositionRange } +export type { PositionRange, RangeType } From 845944717d2a23273cc69b38486aeafe94039193 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 10:03:42 -0700 Subject: [PATCH 169/211] feat: Create mergeOverlappingDecorations helper function --- .../helpers/mergeOverlappingDecorations.ts.ts | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 packages/test-case-component/src/helpers/mergeOverlappingDecorations.ts.ts diff --git a/packages/test-case-component/src/helpers/mergeOverlappingDecorations.ts.ts b/packages/test-case-component/src/helpers/mergeOverlappingDecorations.ts.ts new file mode 100644 index 0000000000..2300a78956 --- /dev/null +++ b/packages/test-case-component/src/helpers/mergeOverlappingDecorations.ts.ts @@ -0,0 +1,70 @@ +import type { DecorationItem } from "shiki"; +import type { Position } from "@cursorless/common"; + +/** + * Merges overlapping decorations. If two decorations overlap, merges their classes and adds "overlap" to the class list. + * @param decorations Array of decoration objects + * @returns Array of merged decorations + */ +export function mergeOverlappingDecorations(decorations: DecorationItem[]): DecorationItem[] { + if (decorations.length === 0) { return []; } + + // Helper to normalize positions (in case shiki uses offset numbers) + function isPosition(obj: any): obj is Position { + return obj && typeof obj.line === "number" && typeof obj.character === "number"; + } + + // Collect all unique boundary points + const points: Position[] = []; + for (const deco of decorations) { + if (isPosition(deco.start) && isPosition(deco.end)) { + points.push(deco.start, deco.end); + } + } + points.sort((a, b) => a.line !== b.line ? a.line - b.line : a.character - b.character); + // Remove duplicates + const uniquePoints: Position[] = []; + for (const p of points) { + if (!uniquePoints.length || uniquePoints[uniquePoints.length - 1].line !== p.line || uniquePoints[uniquePoints.length - 1].character !== p.character) { + uniquePoints.push(p); + } + } + + const result: DecorationItem[] = []; + for (let i = 0; i < uniquePoints.length - 1; ++i) { + const segStart = uniquePoints[i]; + const segEnd = uniquePoints[i + 1]; + // Find all decorations covering this segment + const covering = decorations.filter(d => + isPosition(d.start) && isPosition(d.end) && + (d.start.line < segEnd.line || (d.start.line === segEnd.line && d.start.character < segEnd.character)) && + (d.end.line > segStart.line || (d.end.line === segStart.line && d.end.character > segStart.character)) + ); + if (covering.length === 0) { continue; } + if (covering.length === 1) { + const c = covering[0]; + result.push({ + start: segStart, + end: segEnd, + properties: { class: c && c.properties ? c.properties.class : "" }, + alwaysWrap: c && c.alwaysWrap, + }); + } else { + // Merge classes and add overlap + let classNames = covering + .map(d => (d && d.properties ? d.properties.class : "")) + .join(" ") + .split(" ") + .filter(Boolean); + classNames = Array.from(new Set(classNames)); + classNames.push("overlap"); + result.push({ + start: segStart, + end: segEnd, + properties: { class: classNames.join(" ") }, + alwaysWrap: covering.some(d => d && d.alwaysWrap), + }); + } + } + return result; +} From 2b27fd5debdc817f341dc073f1ac45f910f21c0e Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 10:50:59 -0700 Subject: [PATCH 170/211] fix: Correct console.warn message in getThatMarks --- packages/test-case-component/src/helpers/getThatMarks.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/test-case-component/src/helpers/getThatMarks.ts b/packages/test-case-component/src/helpers/getThatMarks.ts index fbfd903030..2187945b31 100644 --- a/packages/test-case-component/src/helpers/getThatMarks.ts +++ b/packages/test-case-component/src/helpers/getThatMarks.ts @@ -4,9 +4,8 @@ import { addContentRangeDecorations } from "./addContentRangeDecorations"; function getThatMarks({ thatMark }: { thatMark: TargetPlainObject[] }): DecorationItem[] { const decorations: DecorationItem[] = []; - if (thatMark === undefined || thatMark.length === 0) { - console.warn("finalStateSourceMarks are undefined. Skipping decoration generation."); + console.warn("finalStateThatMarks are undefined. Skipping decoration generation."); return [] } else { addContentRangeDecorations({ @@ -14,7 +13,6 @@ function getThatMarks({ thatMark }: { thatMark: TargetPlainObject[] }): Decorati highlightClass: "thatMark", decorations }); } - return decorations } From 9fa757a557c0001339dcb6af85611216aac67de8 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 10:52:17 -0700 Subject: [PATCH 171/211] chore: Create folder for test-case exmaple files --- .../bringAirAndBatAndCapToAfterItemEach.yml | 84 +++++++++++++++++++ data/example-files/bringAirToEndOfAir.yml | 46 ++++++++++ 2 files changed, 130 insertions(+) create mode 100644 data/example-files/bringAirAndBatAndCapToAfterItemEach.yml create mode 100644 data/example-files/bringAirToEndOfAir.yml diff --git a/data/example-files/bringAirAndBatAndCapToAfterItemEach.yml b/data/example-files/bringAirAndBatAndCapToAfterItemEach.yml new file mode 100644 index 0000000000..5224cce4be --- /dev/null +++ b/data/example-files/bringAirAndBatAndCapToAfterItemEach.yml @@ -0,0 +1,84 @@ +languageId: typescript +command: + version: 6 + spokenForm: bring air and bat and cap after item each + action: + name: replaceWithTarget + source: + type: list + elements: + - type: primitive + mark: {type: decoratedSymbol, symbolColor: default, character: a} + - type: primitive + mark: {type: decoratedSymbol, symbolColor: default, character: b} + - type: primitive + mark: {type: decoratedSymbol, symbolColor: default, character: c} + destination: + type: primitive + insertionMode: after + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + mark: {type: decoratedSymbol, symbolColor: default, character: e} + usePrePhraseSnapshot: false +initialState: + documentContents: | + a + b + c + + const values = [e] + selections: + - anchor: {line: 5, character: 0} + active: {line: 5, character: 0} + marks: + default.a: + start: {line: 0, character: 0} + end: {line: 0, character: 1} + default.b: + start: {line: 1, character: 0} + end: {line: 1, character: 1} + default.c: + start: {line: 2, character: 0} + end: {line: 2, character: 1} + default.e: + start: {line: 4, character: 16} + end: {line: 4, character: 17} +finalState: + documentContents: | + a + b + c + + const values = [e, a, b, c] + selections: + - anchor: {line: 5, character: 0} + active: {line: 5, character: 0} + thatMark: + - type: UntypedTarget + contentRange: + start: {line: 4, character: 19} + end: {line: 4, character: 26} + isReversed: false + hasExplicitRange: true + sourceMark: + - type: UntypedTarget + contentRange: + start: {line: 0, character: 0} + end: {line: 0, character: 1} + isReversed: false + hasExplicitRange: true + - type: UntypedTarget + contentRange: + start: {line: 1, character: 0} + end: {line: 1, character: 1} + isReversed: false + hasExplicitRange: true + - type: UntypedTarget + contentRange: + start: {line: 2, character: 0} + end: {line: 2, character: 1} + isReversed: false + hasExplicitRange: true diff --git a/data/example-files/bringAirToEndOfAir.yml b/data/example-files/bringAirToEndOfAir.yml new file mode 100644 index 0000000000..e227aca4f6 --- /dev/null +++ b/data/example-files/bringAirToEndOfAir.yml @@ -0,0 +1,46 @@ +languageId: plaintext +command: + version: 6 + spokenForm: bring air to end of air + action: + name: replaceWithTarget + source: + type: primitive + mark: {type: decoratedSymbol, symbolColor: default, character: a} + destination: + type: primitive + insertionMode: to + target: + type: primitive + modifiers: + - {type: endOf} + mark: {type: decoratedSymbol, symbolColor: default, character: a} + usePrePhraseSnapshot: true +initialState: + documentContents: a + selections: + - anchor: {line: 0, character: 1} + active: {line: 0, character: 1} + marks: + default.a: + start: {line: 0, character: 0} + end: {line: 0, character: 1} +finalState: + documentContents: aa + selections: + - anchor: {line: 0, character: 2} + active: {line: 0, character: 2} + thatMark: + - type: UntypedTarget + contentRange: + start: {line: 0, character: 1} + end: {line: 0, character: 2} + isReversed: false + hasExplicitRange: true + sourceMark: + - type: UntypedTarget + contentRange: + start: {line: 0, character: 0} + end: {line: 0, character: 1} + isReversed: false + hasExplicitRange: true From c56ec761bd3bdc79aed737296ab16be0b4791f4a Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 10:53:02 -0700 Subject: [PATCH 172/211] refactor: Use test case example folder in component-sheet --- .../src/pages/component-sheet.tsx | 42 ++++++------------- 1 file changed, 12 insertions(+), 30 deletions(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index b504c923b1..f92a30b67a 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -10,7 +10,7 @@ import { testSelectedFiles } from "./allowList"; import { cheatsheetBodyClasses } from "@cursorless/cheatsheet"; -const fixturesDir = path.join("../", "../", "data", "fixtures", "recorded"); +const fixturesDir = path.join("../", "../", "data", "example-files"); async function loadYamlFiles(dir: string, selectedFiles?: string[]) { const directoryPath = path.join(process.cwd(), dir); @@ -39,40 +39,22 @@ async function loadYamlFiles(dir: string, selectedFiles?: string[]) { // See https://github.com/vercel/next.js/discussions/12325#discussioncomment-1116108 export async function getStaticProps() { - const itemsDirActions = path.join(fixturesDir, "actions"); - const itemsDirDecorations = path.join(fixturesDir, "decorations"); - const itemsDirInsertEmptyLines = path.join( - fixturesDir, - "actions/insertEmptyLines", - ); - - const dataActions = await loadYamlFiles(itemsDirActions, testSelectedFiles); - const dataInsertEmptyLines = await loadYamlFiles( - itemsDirInsertEmptyLines, - testSelectedFiles, - ); - - const dataDecorations = await loadYamlFiles( - itemsDirDecorations, - testSelectedFiles, - ); + const dataActions = await loadYamlFiles(fixturesDir, testSelectedFiles); const data_errors: any[] = []; const data = ( await Promise.all( - [...dataActions, ...dataDecorations, ...dataInsertEmptyLines].map( - async (val) => { - try { - const fixture = await loadTestCaseFixture(val); - return { ...fixture, raw: val }; - } catch (err) { - console.error(err); - data_errors.push(val); - return null; - } - }, - ), + [...dataActions].map(async (val) => { + try { + const fixture = await loadTestCaseFixture(val); + return { ...fixture, raw: val }; + } catch (err) { + console.error(err); + data_errors.push(val); + return null; + } + }), ) ).filter((test) => test !== undefined); From b042b38ae86a92d7d065ea5a75e4dd148e0e183a Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 11:09:54 -0700 Subject: [PATCH 173/211] refactor: Move types into single file in test-case-component --- .../test-case-component/src/generateHtml.ts | 23 +- .../src/helpers/typeGuards.ts | 5 +- .../src/loadTestCaseFixture.ts | 15 +- packages/test-case-component/src/types.ts | 242 +++--------------- 4 files changed, 34 insertions(+), 251 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index d575007a87..ff3fb2bd62 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,19 +1,9 @@ import { createHighlighter, createCssVariablesTheme } from "shiki"; import type { BundledLanguage } from "shiki"; - -import type { - Command, - CommandLatest, - PlainSpyIDERecordedValues, - TargetPlainObject, - TestCaseFixture, - TestCaseSnapshot -} from "@cursorless/common"; +import type { Lang, StepNameType, ExtendedTestCaseSnapshot, DataFixture } from "./types"; +import type { Command, CommandLatest, TestCaseFixture } from "@cursorless/common"; import { createDecorations } from "./helpers"; -import type { DataFixture } from "./loadTestCaseFixture"; - -type Lang = BundledLanguage; const myTheme = createCssVariablesTheme({ name: "css-variables", @@ -39,15 +29,6 @@ const highlighter = createHighlighter({ langs: ["javascript", "typescript", "python", "markdown"], }); -type StepNameType = "before" | "during" | "after" -type ExtendedTestCaseSnapshot = TestCaseSnapshot & - Partial & -{ - finalStateMarkHelpers?: { - thatMark?: TargetPlainObject[], sourceMark?: TargetPlainObject[] - } -}; - class HTMLGenerator { private testCaseStates: { before: ExtendedTestCaseSnapshot | undefined; diff --git a/packages/test-case-component/src/helpers/typeGuards.ts b/packages/test-case-component/src/helpers/typeGuards.ts index d18d671864..0b9b5e3d85 100644 --- a/packages/test-case-component/src/helpers/typeGuards.ts +++ b/packages/test-case-component/src/helpers/typeGuards.ts @@ -1,6 +1,4 @@ -type LineRange = { type: string; start: number; end: number } -type PositionRange = { type: string; start: { line: number; character: number }; end: { line: number; character: number } }; -type RangeType = LineRange | PositionRange; +import type { LineRange, PositionRange, RangeType } from "../types"; function isLineRange(range: RangeType): range is LineRange { return typeof range.start === "number" @@ -17,4 +15,3 @@ function isPositionRange( } export { isLineRange, isPositionRange } -export type { PositionRange, RangeType } diff --git a/packages/test-case-component/src/loadTestCaseFixture.ts b/packages/test-case-component/src/loadTestCaseFixture.ts index 5e2babd20a..b616e9513d 100644 --- a/packages/test-case-component/src/loadTestCaseFixture.ts +++ b/packages/test-case-component/src/loadTestCaseFixture.ts @@ -1,18 +1,7 @@ -import type { TestCaseFixture, TestCaseSnapshot } from "@cursorless/common"; import { generateHtml } from "./generateHtml"; -import type { BundledLanguage } from "shiki"; +import type { LoadFixtureProps } from "./types"; -interface loadFixtureProps extends DataFixture { - filename: string; - languageId: BundledLanguage; - initialState: TestCaseSnapshot; - finalState: TestCaseSnapshot; -} - -type StepType = { stepName: "initialState" | "middleState" | "finalState" } -export type DataFixture = TestCaseFixture & StepType - -export async function loadTestCaseFixture(data: loadFixtureProps) { +export async function loadTestCaseFixture(data: LoadFixtureProps) { const { before, during, after } = await generateHtml(data) const { command, filename, languageId: language } = data diff --git a/packages/test-case-component/src/types.ts b/packages/test-case-component/src/types.ts index 16a03c7680..feac02a542 100644 --- a/packages/test-case-component/src/types.ts +++ b/packages/test-case-component/src/types.ts @@ -1,213 +1,29 @@ -export type Lang = - | "abap" - | "actionscript-3" - | "ada" - | "apache" - | "apex" - | "apl" - | "applescript" - | "ara" - | "asm" - | "astro" - | "awk" - | "ballerina" - | "bat" - | "batch" - | "beancount" - | "berry" - | "be" - | "bibtex" - | "bicep" - | "blade" - | "c" - | "cadence" - | "cdc" - | "clarity" - | "clojure" - | "clj" - | "cmake" - | "cobol" - | "codeql" - | "ql" - | "coffee" - | "cpp" - | "crystal" - | "csharp" - | "c#" - | "cs" - | "css" - | "cue" - | "cypher" - | "cql" - | "d" - | "dart" - | "dax" - | "diff" - | "docker" - | "dockerfile" - | "dream-maker" - | "elixir" - | "elm" - | "erb" - | "erlang" - | "erl" - | "fish" - | "fsharp" - | "f#" - | "fs" - | "gdresource" - | "gdscript" - | "gdshader" - | "gherkin" - | "git-commit" - | "git-rebase" - | "glimmer-js" - | "gjs" - | "glimmer-ts" - | "gts" - | "glsl" - | "gnuplot" - | "go" - | "graphql" - | "groovy" - | "hack" - | "haml" - | "handlebars" - | "hbs" - | "haskell" - | "hs" - | "hcl" - | "hjson" - | "hlsl" - | "html" - | "http" - | "imba" - | "ini" - | "properties" - | "java" - | "javascript" - | "js" - | "jinja-html" - | "jison" - | "json" - | "json5" - | "jsonc" - | "jsonl" - | "jsonnet" - | "jssm" - | "fsl" - | "jsx" - | "julia" - | "kotlin" - | "kusto" - | "kql" - | "latex" - | "less" - | "liquid" - | "lisp" - | "logo" - | "lua" - | "make" - | "makefile" - | "markdown" - | "md" - | "marko" - | "matlab" - | "mdx" - | "mermaid" - | "narrat" - | "nar" - | "nextflow" - | "nf" - | "nginx" - | "nim" - | "nix" - | "objective-c" - | "objc" - | "objective-cpp" - | "ocaml" - | "pascal" - | "perl" - | "php" - | "plsql" - | "postcss" - | "powerquery" - | "powershell" - | "ps" - | "ps1" - | "prisma" - | "prolog" - | "proto" - | "pug" - | "jade" - | "puppet" - | "purescript" - | "python" - | "py" - | "r" - | "raku" - | "perl6" - | "razor" - | "reg" - | "rel" - | "riscv" - | "rst" - | "ruby" - | "rb" - | "rust" - | "rs" - | "sas" - | "sass" - | "scala" - | "scheme" - | "scss" - | "shaderlab" - | "shader" - | "shellscript" - | "bash" - | "console" - | "sh" - | "shell" - | "zsh" - | "smalltalk" - | "solidity" - | "sparql" - | "sql" - | "ssh-config" - | "stata" - | "stylus" - | "styl" - | "svelte" - | "swift" - | "system-verilog" - | "tasl" - | "tcl" - | "tex" - | "toml" - | "tsx" - | "turtle" - | "twig" - | "typescript" - | "ts" - | "v" - | "vb" - | "cmd" - | "verilog" - | "vhdl" - | "viml" - | "vim" - | "vimscript" - | "vue-html" - | "vue" - | "vyper" - | "vy" - | "wasm" - | "wenyan" - | "文言" - | "wgsl" - | "wolfram" - | "xml" - | "xsl" - | "yaml" - | "yml" - | "zenscript"; +import type { TestCaseFixture, TestCaseSnapshot, PlainSpyIDERecordedValues, TargetPlainObject } from "@cursorless/common"; +import type { BundledLanguage } from "shiki"; + + + +export type StepType = { stepName: "initialState" | "middleState" | "finalState" }; +export type DataFixture = TestCaseFixture & StepType; + +export interface LoadFixtureProps extends DataFixture { + filename: string; + languageId: BundledLanguage; + initialState: TestCaseSnapshot; + finalState: TestCaseSnapshot; +} + +export type Lang = BundledLanguage; +export type StepNameType = "before" | "during" | "after"; + +export type ExtendedTestCaseSnapshot = TestCaseSnapshot & + Partial & { + finalStateMarkHelpers?: { + thatMark?: TargetPlainObject[]; + sourceMark?: TargetPlainObject[]; + }; + }; + +export type LineRange = { type: string; start: number; end: number }; +export type PositionRange = { type: string; start: { line: number; character: number }; end: { line: number; character: number } }; +export type RangeType = LineRange | PositionRange; From 3f44f13d58ddd4aa46e0f24aa8ca4dbdbb3a368c Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 11:36:57 -0700 Subject: [PATCH 174/211] fix: Typo getSlections -> getSelections --- packages/test-case-component/src/helpers/createDecorations.ts | 4 ++-- packages/test-case-component/src/helpers/getSelections.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/test-case-component/src/helpers/createDecorations.ts b/packages/test-case-component/src/helpers/createDecorations.ts index 1887bc2b9e..0725485713 100644 --- a/packages/test-case-component/src/helpers/createDecorations.ts +++ b/packages/test-case-component/src/helpers/createDecorations.ts @@ -9,7 +9,7 @@ import type { import type { DecorationItem } from "shiki" import { getMarkDecorations } from "./getMarkDecorations"; import { getIdeFlashDecorations } from "./getIdeFlashDecorations"; -import { getSlections } from "./getSelections"; +import { getSelections } from "./getSelections"; import { getSourceMarks } from "./getSourceMarks"; import { getThatMarks } from "./getThatMarks"; @@ -34,7 +34,7 @@ export function createDecorations( const markDecorations = getMarkDecorations({ marks, lines }) const ideFlashDecorations = getIdeFlashDecorations({ lines, ide }) - const selectionRanges = getSlections({ selections }) + const selectionRanges = getSelections({ selections }) const sourceMarks_ = getSourceMarks({ sourceMark }) decorations.push(markDecorations); diff --git a/packages/test-case-component/src/helpers/getSelections.ts b/packages/test-case-component/src/helpers/getSelections.ts index ee55a2a12d..4fb769900d 100644 --- a/packages/test-case-component/src/helpers/getSelections.ts +++ b/packages/test-case-component/src/helpers/getSelections.ts @@ -2,7 +2,7 @@ import type { SelectionPlainObject } from "@cursorless/common"; import type { DecorationItem } from "shiki"; import { getDecorationClass } from "./classesMap"; -function getSlections( +function getSelections( { selections, }: { @@ -29,4 +29,4 @@ function getSlections( return decorations } -export { getSlections } +export { getSelections } From 9eaaed3405c0653b458ed085af6fe91fb8111ee3 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 15:13:48 -0700 Subject: [PATCH 175/211] refactor: Move decorations related helpers to /decorations --- .../addContentRangeDecorations.ts | 2 +- .../{ => decorations}/createDecorations.ts | 0 .../decorations/getIdeFlashDecorations.ts | 68 +++++++++++++++++++ .../{ => decorations}/getMarkDecorations.ts | 4 +- .../{ => decorations}/getSelections.ts | 2 +- .../{ => decorations}/getSourceMarks.ts | 1 - .../helpers/{ => decorations}/getThatMarks.ts | 0 .../mergeOverlappingDecorations.test.ts | 2 +- .../mergeOverlappingDecorations.ts} | 0 .../test-case-component/src/helpers/index.ts | 9 +-- 10 files changed, 75 insertions(+), 13 deletions(-) rename packages/test-case-component/src/helpers/{ => decorations}/addContentRangeDecorations.ts (91%) rename packages/test-case-component/src/helpers/{ => decorations}/createDecorations.ts (100%) create mode 100644 packages/test-case-component/src/helpers/decorations/getIdeFlashDecorations.ts rename packages/test-case-component/src/helpers/{ => decorations}/getMarkDecorations.ts (93%) rename packages/test-case-component/src/helpers/{ => decorations}/getSelections.ts (94%) rename packages/test-case-component/src/helpers/{ => decorations}/getSourceMarks.ts (99%) rename packages/test-case-component/src/helpers/{ => decorations}/getThatMarks.ts (100%) rename packages/test-case-component/src/helpers/{ => decorations}/mergeOverlappingDecorations.test.ts (99%) rename packages/test-case-component/src/helpers/{mergeOverlappingDecorations.ts.ts => decorations/mergeOverlappingDecorations.ts} (100%) diff --git a/packages/test-case-component/src/helpers/addContentRangeDecorations.ts b/packages/test-case-component/src/helpers/decorations/addContentRangeDecorations.ts similarity index 91% rename from packages/test-case-component/src/helpers/addContentRangeDecorations.ts rename to packages/test-case-component/src/helpers/decorations/addContentRangeDecorations.ts index 61c37aeb97..c73261c55c 100644 --- a/packages/test-case-component/src/helpers/addContentRangeDecorations.ts +++ b/packages/test-case-component/src/helpers/decorations/addContentRangeDecorations.ts @@ -1,6 +1,6 @@ import type { TargetPlainObject } from "@cursorless/common"; import type { DecorationItem } from "shiki"; -import { getDecorationClass, type classesMap } from "./classesMap"; +import { getDecorationClass, type classesMap } from "../classesMap"; function addContentRangeDecorations({ marks, diff --git a/packages/test-case-component/src/helpers/createDecorations.ts b/packages/test-case-component/src/helpers/decorations/createDecorations.ts similarity index 100% rename from packages/test-case-component/src/helpers/createDecorations.ts rename to packages/test-case-component/src/helpers/decorations/createDecorations.ts diff --git a/packages/test-case-component/src/helpers/decorations/getIdeFlashDecorations.ts b/packages/test-case-component/src/helpers/decorations/getIdeFlashDecorations.ts new file mode 100644 index 0000000000..1287e27c37 --- /dev/null +++ b/packages/test-case-component/src/helpers/decorations/getIdeFlashDecorations.ts @@ -0,0 +1,68 @@ +import type { PlainSpyIDERecordedValues } from "@cursorless/common"; +import type { DecorationItem } from "shiki"; +import { isLineRange, isPositionRange } from "../typeGuards"; +import { getDecorationClass } from "../classesMap"; + +function getIdeFlashDecorations({ + ide, + lines, +}: { + ide?: PlainSpyIDERecordedValues; + lines?: string[]; +} = {}): DecorationItem[] { + if (!lines) { + console.warn("Lines are undefined. Skipping line decorations."); + return []; + } + + if (!ide?.flashes || !Array.isArray(ide.flashes)) { + console.warn("No flashes found in IDE. Skipping line decorations."); + return []; + } + + const decorations: DecorationItem[] = []; + + const { flashes } = ide + + flashes.forEach(({ style, range }) => { + const { type } = range; + + if (isLineRange(range)) { + const { start: lineStart, end: lineEnd } = range + for (let line = lineStart; line <= lineEnd; line++) { + if (line >= lines.length) { + continue + } + const contentLine = lines[line]; + const startPosition = { line, character: 0 }; + const endPosition = { line, character: contentLine.length }; + const decorationItem = { + start: startPosition, + end: endPosition, + properties: { + class: `${getDecorationClass(style)} full`, + }, + alwaysWrap: true, + }; + decorations.push(decorationItem); + } + } else if (isPositionRange(range)) { + const { start: rangeStart, end: rangeEnd } = range; + const decorationItem = { + start: rangeStart, + end: rangeEnd, + properties: { + class: getDecorationClass(style), + }, + alwaysWrap: true, + } + decorations.push(decorationItem); + } else { + console.warn(`Unknown range type "${type}". Skipping this flash.`); + } + }); + + return decorations; +} + +export { getIdeFlashDecorations } diff --git a/packages/test-case-component/src/helpers/getMarkDecorations.ts b/packages/test-case-component/src/helpers/decorations/getMarkDecorations.ts similarity index 93% rename from packages/test-case-component/src/helpers/getMarkDecorations.ts rename to packages/test-case-component/src/helpers/decorations/getMarkDecorations.ts index 1af951254d..7f9fb8c7f6 100644 --- a/packages/test-case-component/src/helpers/getMarkDecorations.ts +++ b/packages/test-case-component/src/helpers/decorations/getMarkDecorations.ts @@ -1,7 +1,7 @@ import type { SerializedMarks } from "@cursorless/common"; import type { DecorationItem } from "shiki"; -import type { classesMap } from "./classesMap"; -import { getDecorationClass } from "./classesMap"; +import type { classesMap } from "../classesMap"; +import { getDecorationClass } from "../classesMap"; function getMarkDecorations({ marks, diff --git a/packages/test-case-component/src/helpers/getSelections.ts b/packages/test-case-component/src/helpers/decorations/getSelections.ts similarity index 94% rename from packages/test-case-component/src/helpers/getSelections.ts rename to packages/test-case-component/src/helpers/decorations/getSelections.ts index 4fb769900d..b1cc387d68 100644 --- a/packages/test-case-component/src/helpers/getSelections.ts +++ b/packages/test-case-component/src/helpers/decorations/getSelections.ts @@ -1,6 +1,6 @@ import type { SelectionPlainObject } from "@cursorless/common"; import type { DecorationItem } from "shiki"; -import { getDecorationClass } from "./classesMap"; +import { getDecorationClass } from "../classesMap"; function getSelections( { diff --git a/packages/test-case-component/src/helpers/getSourceMarks.ts b/packages/test-case-component/src/helpers/decorations/getSourceMarks.ts similarity index 99% rename from packages/test-case-component/src/helpers/getSourceMarks.ts rename to packages/test-case-component/src/helpers/decorations/getSourceMarks.ts index 5119d70812..3935c8709c 100644 --- a/packages/test-case-component/src/helpers/getSourceMarks.ts +++ b/packages/test-case-component/src/helpers/decorations/getSourceMarks.ts @@ -13,7 +13,6 @@ function getSourceMarks({ sourceMark }: { sourceMark?: TargetPlainObject[] }): D highlightClass: "sourceMark", decorations }); } - return decorations } diff --git a/packages/test-case-component/src/helpers/getThatMarks.ts b/packages/test-case-component/src/helpers/decorations/getThatMarks.ts similarity index 100% rename from packages/test-case-component/src/helpers/getThatMarks.ts rename to packages/test-case-component/src/helpers/decorations/getThatMarks.ts diff --git a/packages/test-case-component/src/helpers/mergeOverlappingDecorations.test.ts b/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.test.ts similarity index 99% rename from packages/test-case-component/src/helpers/mergeOverlappingDecorations.test.ts rename to packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.test.ts index 87339e1648..4e0c718723 100644 --- a/packages/test-case-component/src/helpers/mergeOverlappingDecorations.test.ts +++ b/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.test.ts @@ -1,4 +1,4 @@ -import { mergeOverlappingDecorations } from "./mergeOverlappingDecorations.ts"; +import { mergeOverlappingDecorations } from "./mergeOverlappingDecorations"; describe("mergeOverlappingDecorations", () => { it("merges overlapping decorations and adds 'overlap' to class", () => { diff --git a/packages/test-case-component/src/helpers/mergeOverlappingDecorations.ts.ts b/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.ts similarity index 100% rename from packages/test-case-component/src/helpers/mergeOverlappingDecorations.ts.ts rename to packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.ts diff --git a/packages/test-case-component/src/helpers/index.ts b/packages/test-case-component/src/helpers/index.ts index dd6c985b34..c3cf79bcf3 100644 --- a/packages/test-case-component/src/helpers/index.ts +++ b/packages/test-case-component/src/helpers/index.ts @@ -1,10 +1,5 @@ export * from "./splitDocumentWithOffsets"; -export * from "./createDecorations"; -export * from "./getMarkDecorations"; -export * from "./getIdeFlashDecorations"; -export * from "./getSelections"; -export * from "./getThatMarks"; -export * from "./getSourceMarks"; -export * from "./addContentRangeDecorations"; +export * from "./decorations/createDecorations"; +export * from "./decorations/mergeOverlappingDecorations"; export * from "./typeGuards"; export * from "./classesMap"; From beb1eb3aa9622ea9cab97f443476ce6e768bd6af Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 15:33:00 -0700 Subject: [PATCH 176/211] refactor: Move createHighlighter functions to own file --- .../src/createHighlighter.ts | 15 ++++++++++ .../test-case-component/src/generateHtml.ts | 30 +++---------------- 2 files changed, 19 insertions(+), 26 deletions(-) create mode 100644 packages/test-case-component/src/createHighlighter.ts diff --git a/packages/test-case-component/src/createHighlighter.ts b/packages/test-case-component/src/createHighlighter.ts new file mode 100644 index 0000000000..54697bb218 --- /dev/null +++ b/packages/test-case-component/src/createHighlighter.ts @@ -0,0 +1,15 @@ +import { createHighlighter as shikiCreateHighlighter, createCssVariablesTheme } from "shiki"; + +const myTheme = createCssVariablesTheme({ + name: "css-variables", + variablePrefix: "--shiki-", + variableDefaults: {}, + fontStyle: true, +}); + +export function createHighlighter() { + return shikiCreateHighlighter({ + themes: [myTheme], + langs: ["javascript", "typescript", "python", "markdown"], + }); +} diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index ff3fb2bd62..451c139ed9 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,33 +1,21 @@ -import { createHighlighter, createCssVariablesTheme } from "shiki"; +import { createHighlighter } from "./createHighlighter"; import type { BundledLanguage } from "shiki"; import type { Lang, StepNameType, ExtendedTestCaseSnapshot, DataFixture } from "./types"; import type { Command, CommandLatest, TestCaseFixture } from "@cursorless/common"; import { createDecorations } from "./helpers"; -const myTheme = createCssVariablesTheme({ - name: "css-variables", - variablePrefix: "--shiki-", - variableDefaults: {}, - fontStyle: true, -}); - /** * Generates HTML content based on the provided state, language, command, and ide. * * @param {DataFixture} data - The state object containing the necessary data for HTML generation. - * @returns {Promise} A promise that resolves to the generated HTML content. + * @returns {Promise<{ before: string; during: string; after: string }>} A promise that resolves to the generated HTML content for each step. */ export async function generateHtml(data: DataFixture) { - const HTMLOBject = await new HTMLGenerator(data) - const returnObject = HTMLOBject.generateAll() - return returnObject; + return new HTMLGenerator(data).generateAll() } -const highlighter = createHighlighter({ - themes: [myTheme], - langs: ["javascript", "typescript", "python", "markdown"], -}); +const highlighter = createHighlighter(); class HTMLGenerator { private testCaseStates: { @@ -38,22 +26,12 @@ class HTMLGenerator { private lang: Lang; private command?: CommandLatest | Command; private raw: TestCaseFixture; - private rendered: { - before: string; - during: string; - after: string; - } constructor(data: DataFixture) { const { languageId, command } = data; this.lang = languageId as BundledLanguage; this.command = command; // Optional command parameter this.raw = data - this.rendered = { - before: "", - during: "", - after: "", - } this.testCaseStates = { before: data.initialState, during: { From b15f8a34e2305c64f49c796c1544878bd9279569 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 15:43:39 -0700 Subject: [PATCH 177/211] refactor: Replace HTMLGenerator to closure-based factory function --- .../test-case-component/src/generateHtml.ts | 158 ++++++++---------- 1 file changed, 66 insertions(+), 92 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index 451c139ed9..ceaa55b98d 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,7 +1,6 @@ import { createHighlighter } from "./createHighlighter"; import type { BundledLanguage } from "shiki"; -import type { Lang, StepNameType, ExtendedTestCaseSnapshot, DataFixture } from "./types"; -import type { Command, CommandLatest, TestCaseFixture } from "@cursorless/common"; +import type { StepNameType, ExtendedTestCaseSnapshot, DataFixture } from "./types"; import { createDecorations } from "./helpers"; @@ -12,143 +11,118 @@ import { createDecorations } from "./helpers"; * @returns {Promise<{ before: string; during: string; after: string }>} A promise that resolves to the generated HTML content for each step. */ export async function generateHtml(data: DataFixture) { - return new HTMLGenerator(data).generateAll() + return createHtmlGenerator(data).generateAll(); } const highlighter = createHighlighter(); -class HTMLGenerator { - private testCaseStates: { - before: ExtendedTestCaseSnapshot | undefined; - during: ExtendedTestCaseSnapshot | undefined; - after: ExtendedTestCaseSnapshot | undefined; - } - private lang: Lang; - private command?: CommandLatest | Command; - private raw: TestCaseFixture; - - constructor(data: DataFixture) { - const { languageId, command } = data; - this.lang = languageId as BundledLanguage; - this.command = command; // Optional command parameter - this.raw = data - this.testCaseStates = { - before: data.initialState, - during: { - ...( - /** - * Spread the document state with more lines (finalState vs initialState), - * so Shiki decorations stay in bounds and don't go out of range. - */ - data.finalState && - (data.finalState.documentContents?.split("\n").length > data.initialState.documentContents?.split("\n").length) - ? data.finalState - : data.initialState - ), - ...data.ide, - finalStateMarkHelpers: { - thatMark: data?.finalState?.thatMark, - sourceMark: data?.finalState?.sourceMark - } - }, - after: data.finalState - } - } - - async generate(stepName: StepNameType) { - const state = this.testCaseStates[stepName] +function createHtmlGenerator(data: DataFixture) { + const lang = data.languageId as BundledLanguage; + const command = data.command; + const raw = data; + const testCaseStates = { + before: data.initialState, + during: { + ...( + /** + * Spread the document state with more lines (finalState vs initialState), + * so Shiki decorations stay in bounds and don't go out of range. + */ + data.finalState && + (data.finalState.documentContents?.split("\n").length > data.initialState.documentContents?.split("\n").length) + ? data.finalState + : data.initialState + ), + ...data.ide, + finalStateMarkHelpers: { + thatMark: data?.finalState?.thatMark, + sourceMark: data?.finalState?.sourceMark + } + }, + after: data.finalState + }; + async function generate(stepName: StepNameType) { + const state = testCaseStates[stepName]; if (!state) { - console.error(`Error in ${stepName} ${this.raw.command.spokenForm}`) - return "Error" + console.error(`Error in ${stepName} ${raw.command.spokenForm}`); + return "Error"; } - - const decorations = await this.getDecorations(state); - - const { documentContents } = state - - const htmlArray: string[] = [] + const decorations = await getDecorations(state); + const { documentContents } = state; + const htmlArray: string[] = []; let codeBody; - const errorLevels = [ "excludes thatMarks sourceMarks selectionRanges ideFlashes", "excludes thatMarks sourceMarks selectionRanges", "excludes thatMarks sourceMarks", "excludes thatMarks", "success", - ] - - let errorLevel = errorLevels.length - 1 - + ]; + let errorLevel = errorLevels.length - 1; for (let i = decorations.length - 1; i >= 0; i--) { const fallbackDecoration = decorations.slice(0, i).flat(); - errorLevel = i + errorLevel = i; try { const marker = await highlighter; const options = { theme: "css-variables", - lang: this.lang, + lang, decorations: fallbackDecoration }; codeBody = marker.codeToHtml(documentContents, options); - htmlArray.push(codeBody) - break; // Exit loop if successful + htmlArray.push(codeBody); + break; } catch (error) { - console.warn(`"Failed with decorations level ${i}:"`, this.command); + console.warn(`"Failed with decorations level ${i}:"`, command); console.warn(fallbackDecoration, error); - // Continue to the next fallback level } } - if (!codeBody) { console.error("All fallback levels failed. Unable to generate code body."); - codeBody = ""; // Provide a default empty string or handle as needed + codeBody = ""; } - - let clipboardRendered = "" + let clipboardRendered = ""; if (state.clipboard) { - clipboardRendered = `
clipboard: ${state.clipboard}
` + clipboardRendered = `
clipboard: ${state.clipboard}
`; if (clipboardRendered !== "") { - htmlArray.push(clipboardRendered) + htmlArray.push(clipboardRendered); } } - - let error = "" + let error = ""; if (errorLevel !== errorLevels.length - 1) { - error = errorLevels[errorLevel] - const errorRendered = `
Omitted due to errors: ${error}
` - htmlArray.push(errorRendered) + error = errorLevels[errorLevel]; + const errorRendered = `
Omitted due to errors: ${error}
`; + htmlArray.push(errorRendered); } - return { html: htmlArray.join(""), data: [decorations] } + return { html: htmlArray.join(""), data: [decorations] }; } - async generateAll() { - - const output = { - before: await this.generate("before"), - during: await this.generate("during"), - after: await this.generate("after"), - } - return output + async function generateAll() { + return { + before: await generate("before"), + during: await generate("during"), + after: await generate("after"), + }; } - async getDecorations(testCaseState: ExtendedTestCaseSnapshot) { - const { messages, flashes, highlights, finalStateMarkHelpers } = testCaseState - - const potentialMarks = testCaseState.marks || {} - const lines = testCaseState.documentContents.split("\n") + async function getDecorations(testCaseState: ExtendedTestCaseSnapshot) { + const { messages, flashes, highlights, finalStateMarkHelpers } = testCaseState; + const potentialMarks = testCaseState.marks || {}; + const lines = testCaseState.documentContents.split("\n"); const obj = { marks: potentialMarks, ide: { messages, flashes, highlights }, - command: this.command, + command, lines, selections: testCaseState.selections, thatMark: testCaseState.thatMark, sourceMark: testCaseState.sourceMark, finalStateMarkHelpers - } - - const decorations = createDecorations(obj) - return decorations + }; + const decorations = createDecorations(obj); + return decorations; } + + return { generate, generateAll, getDecorations }; } From d4f2f1abf746864955b1e3f1523e1690edf0c244 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 15:49:52 -0700 Subject: [PATCH 178/211] chore: Add JSDoc comments --- .../test-case-component/src/generateHtml.ts | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index ceaa55b98d..e277faffe2 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -16,6 +16,12 @@ export async function generateHtml(data: DataFixture) { const highlighter = createHighlighter(); +/** + * Closure-based HTML generator for test case data. + * + * @param {DataFixture} data - The state object containing the necessary data for HTML generation. + * @returns {Object} An object with generate, generateAll, and getDecorations async functions. + */ function createHtmlGenerator(data: DataFixture) { const lang = data.languageId as BundledLanguage; const command = data.command; @@ -42,6 +48,12 @@ function createHtmlGenerator(data: DataFixture) { after: data.finalState }; + /** + * Generates HTML for a specific test case step (before, during, after). + * + * @param {StepNameType} stepName - The step to generate HTML for. + * @returns {Promise<{ html: string; data: any[] } | string>} The generated HTML and decoration data, or an error string. + */ async function generate(stepName: StepNameType) { const state = testCaseStates[stepName]; if (!state) { @@ -98,6 +110,11 @@ function createHtmlGenerator(data: DataFixture) { return { html: htmlArray.join(""), data: [decorations] }; } + /** + * Generates HTML for all test case steps (before, during, after). + * + * @returns {Promise<{ before: any; during: any; after: any }>} The generated HTML and decoration data for each step. + */ async function generateAll() { return { before: await generate("before"), @@ -106,6 +123,12 @@ function createHtmlGenerator(data: DataFixture) { }; } + /** + * Computes code decorations for a given test case state. + * + * @param {ExtendedTestCaseSnapshot} testCaseState - The test case state to decorate. + * @returns {Promise} The computed decorations for the state. + */ async function getDecorations(testCaseState: ExtendedTestCaseSnapshot) { const { messages, flashes, highlights, finalStateMarkHelpers } = testCaseState; const potentialMarks = testCaseState.marks || {}; From 6cd985902b3c82c2382f6433fba24f4af965b080 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 16:19:46 -0700 Subject: [PATCH 179/211] refactor: Extract and type utility functions in generateHtml - Move renderClipboard, renderError, and getDecorations out of the closure - Minor code cleanup and improved type safety for decoration handling --- .../test-case-component/src/generateHtml.ts | 109 +++++++++++------- 1 file changed, 69 insertions(+), 40 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index e277faffe2..8c46f012b6 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,6 +1,7 @@ import { createHighlighter } from "./createHighlighter"; -import type { BundledLanguage } from "shiki"; +import type { BundledLanguage, DecorationItem } from "shiki"; import type { StepNameType, ExtendedTestCaseSnapshot, DataFixture } from "./types"; +import type { Command } from "@cursorless/common"; import { createDecorations } from "./helpers"; @@ -14,7 +15,61 @@ export async function generateHtml(data: DataFixture) { return createHtmlGenerator(data).generateAll(); } -const highlighter = createHighlighter(); +/** + * Renders the clipboard HTML if clipboard content exists. + * + * @param {string | undefined} clipboard - The clipboard string or undefined. + * @returns {string} The HTML string for the clipboard, or an empty string if clipboard is undefined. + */ +function renderClipboard(clipboard: string | undefined): string { + if (!clipboard) { + return ""; + } + return `
clipboard: ${clipboard}
`; +} + +/** + * Renders the error HTML if an error occurred. + * + * @param {number} errorLevel - The error level index. + * @param {string[]} errorLevels - The array of error level descriptions. + * @returns {string} The HTML string for the error, or an empty string if no error. + */ +function renderError(errorLevel: number, errorLevels: string[]): string { + if (errorLevel === errorLevels.length - 1) { + return ""; + } + const error = errorLevels[errorLevel]; + return `
Omitted due to errors: ${error}
`; +} + +/** + * Computes code decorations for a given test case state. + * + * @param {ExtendedTestCaseSnapshot} testCaseState - The test case state to decorate. + * @param {Command} command - The command object for the test case. + * @returns {Promise} The computed decorations for the state. + */ +async function getDecorations( + testCaseState: ExtendedTestCaseSnapshot, + command: Command +): Promise { + const { messages, flashes, highlights, finalStateMarkHelpers } = testCaseState; + const potentialMarks = testCaseState.marks || {}; + const lines = testCaseState.documentContents.split("\n"); + const obj = { + marks: potentialMarks, + ide: { messages, flashes, highlights }, + command, + lines, + selections: testCaseState.selections, + thatMark: testCaseState.thatMark, + sourceMark: testCaseState.sourceMark, + finalStateMarkHelpers + }; + const decorations = createDecorations(obj); + return decorations; +} /** * Closure-based HTML generator for test case data. @@ -60,7 +115,7 @@ function createHtmlGenerator(data: DataFixture) { console.error(`Error in ${stepName} ${raw.command.spokenForm}`); return "Error"; } - const decorations = await getDecorations(state); + const decorations = await getDecorations(state, command); const { documentContents } = state; const htmlArray: string[] = []; let codeBody; @@ -76,7 +131,7 @@ function createHtmlGenerator(data: DataFixture) { const fallbackDecoration = decorations.slice(0, i).flat(); errorLevel = i; try { - const marker = await highlighter; + const marker = await createHighlighter(); const options = { theme: "css-variables", lang, @@ -94,26 +149,24 @@ function createHtmlGenerator(data: DataFixture) { console.error("All fallback levels failed. Unable to generate code body."); codeBody = ""; } - let clipboardRendered = ""; - if (state.clipboard) { - clipboardRendered = `
clipboard: ${state.clipboard}
`; - if (clipboardRendered !== "") { - htmlArray.push(clipboardRendered); - } + + const clipboardRendered = renderClipboard(state.clipboard); + if (clipboardRendered !== "") { + htmlArray.push(clipboardRendered); } - let error = ""; - if (errorLevel !== errorLevels.length - 1) { - error = errorLevels[errorLevel]; - const errorRendered = `
Omitted due to errors: ${error}
`; + + const errorRendered = renderError(errorLevel, errorLevels); + if (errorRendered !== "") { htmlArray.push(errorRendered); } + return { html: htmlArray.join(""), data: [decorations] }; } /** * Generates HTML for all test case steps (before, during, after). * - * @returns {Promise<{ before: any; during: any; after: any }>} The generated HTML and decoration data for each step. + * @returns {Promise<{ before: string; during: string; after: string }>} The generated HTML and decoration data for each step. */ async function generateAll() { return { @@ -123,29 +176,5 @@ function createHtmlGenerator(data: DataFixture) { }; } - /** - * Computes code decorations for a given test case state. - * - * @param {ExtendedTestCaseSnapshot} testCaseState - The test case state to decorate. - * @returns {Promise} The computed decorations for the state. - */ - async function getDecorations(testCaseState: ExtendedTestCaseSnapshot) { - const { messages, flashes, highlights, finalStateMarkHelpers } = testCaseState; - const potentialMarks = testCaseState.marks || {}; - const lines = testCaseState.documentContents.split("\n"); - const obj = { - marks: potentialMarks, - ide: { messages, flashes, highlights }, - command, - lines, - selections: testCaseState.selections, - thatMark: testCaseState.thatMark, - sourceMark: testCaseState.sourceMark, - finalStateMarkHelpers - }; - const decorations = createDecorations(obj); - return decorations; - } - - return { generate, generateAll, getDecorations }; + return { generate, generateAll }; } From 384a05559bd046df36ad918fa5ee1910ff80d615 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 16:32:08 -0700 Subject: [PATCH 180/211] refactor: Separate out functions from generateHtml - getDecorations - renderClipboard - renderClipboardAndError - renderError --- .../test-case-component/src/generateHtml.ts | 64 ++----------------- .../src/helpers/decorations/getDecorations.ts | 32 ++++++++++ .../src/helpers/decorations/index.ts | 1 + .../src/renderHtml/index.ts | 2 + .../src/renderHtml/renderClipboard.ts | 12 ++++ .../src/renderHtml/renderClipboardAndError.ts | 1 + .../src/renderHtml/renderError.ts | 14 ++++ 7 files changed, 66 insertions(+), 60 deletions(-) create mode 100644 packages/test-case-component/src/helpers/decorations/getDecorations.ts create mode 100644 packages/test-case-component/src/helpers/decorations/index.ts create mode 100644 packages/test-case-component/src/renderHtml/index.ts create mode 100644 packages/test-case-component/src/renderHtml/renderClipboard.ts create mode 100644 packages/test-case-component/src/renderHtml/renderClipboardAndError.ts create mode 100644 packages/test-case-component/src/renderHtml/renderError.ts diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index 8c46f012b6..54fa12deda 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,9 +1,9 @@ import { createHighlighter } from "./createHighlighter"; -import type { BundledLanguage, DecorationItem } from "shiki"; -import type { StepNameType, ExtendedTestCaseSnapshot, DataFixture } from "./types"; -import type { Command } from "@cursorless/common"; +import type { BundledLanguage } from "shiki"; +import type { StepNameType, DataFixture } from "./types"; -import { createDecorations } from "./helpers"; +import { renderClipboard, renderError } from "./renderHtml"; +import { getDecorations } from "./helpers/decorations"; /** * Generates HTML content based on the provided state, language, command, and ide. @@ -15,62 +15,6 @@ export async function generateHtml(data: DataFixture) { return createHtmlGenerator(data).generateAll(); } -/** - * Renders the clipboard HTML if clipboard content exists. - * - * @param {string | undefined} clipboard - The clipboard string or undefined. - * @returns {string} The HTML string for the clipboard, or an empty string if clipboard is undefined. - */ -function renderClipboard(clipboard: string | undefined): string { - if (!clipboard) { - return ""; - } - return `
clipboard: ${clipboard}
`; -} - -/** - * Renders the error HTML if an error occurred. - * - * @param {number} errorLevel - The error level index. - * @param {string[]} errorLevels - The array of error level descriptions. - * @returns {string} The HTML string for the error, or an empty string if no error. - */ -function renderError(errorLevel: number, errorLevels: string[]): string { - if (errorLevel === errorLevels.length - 1) { - return ""; - } - const error = errorLevels[errorLevel]; - return `
Omitted due to errors: ${error}
`; -} - -/** - * Computes code decorations for a given test case state. - * - * @param {ExtendedTestCaseSnapshot} testCaseState - The test case state to decorate. - * @param {Command} command - The command object for the test case. - * @returns {Promise} The computed decorations for the state. - */ -async function getDecorations( - testCaseState: ExtendedTestCaseSnapshot, - command: Command -): Promise { - const { messages, flashes, highlights, finalStateMarkHelpers } = testCaseState; - const potentialMarks = testCaseState.marks || {}; - const lines = testCaseState.documentContents.split("\n"); - const obj = { - marks: potentialMarks, - ide: { messages, flashes, highlights }, - command, - lines, - selections: testCaseState.selections, - thatMark: testCaseState.thatMark, - sourceMark: testCaseState.sourceMark, - finalStateMarkHelpers - }; - const decorations = createDecorations(obj); - return decorations; -} - /** * Closure-based HTML generator for test case data. * diff --git a/packages/test-case-component/src/helpers/decorations/getDecorations.ts b/packages/test-case-component/src/helpers/decorations/getDecorations.ts new file mode 100644 index 0000000000..f1abf7de96 --- /dev/null +++ b/packages/test-case-component/src/helpers/decorations/getDecorations.ts @@ -0,0 +1,32 @@ +/** + * Computes code decorations for a given test case state. + * + * @param {ExtendedTestCaseSnapshot} testCaseState - The test case state to decorate. + * @param {Command} command - The command object for the test case. + * @returns {Promise} The computed decorations for the state. + */ +import type { ExtendedTestCaseSnapshot } from "../../types"; +import type { Command } from "@cursorless/common"; +import type { DecorationItem } from "shiki"; +import { createDecorations } from "../index"; + +export async function getDecorations( + testCaseState: ExtendedTestCaseSnapshot, + command: Command +): Promise { + const { messages, flashes, highlights, finalStateMarkHelpers } = testCaseState; + const potentialMarks = testCaseState.marks || {}; + const lines = testCaseState.documentContents.split("\n"); + const obj = { + marks: potentialMarks, + ide: { messages, flashes, highlights }, + command, + lines, + selections: testCaseState.selections, + thatMark: testCaseState.thatMark, + sourceMark: testCaseState.sourceMark, + finalStateMarkHelpers + }; + const decorations = createDecorations(obj); + return decorations; +} diff --git a/packages/test-case-component/src/helpers/decorations/index.ts b/packages/test-case-component/src/helpers/decorations/index.ts new file mode 100644 index 0000000000..0af6f41765 --- /dev/null +++ b/packages/test-case-component/src/helpers/decorations/index.ts @@ -0,0 +1 @@ +export * from "./getDecorations"; diff --git a/packages/test-case-component/src/renderHtml/index.ts b/packages/test-case-component/src/renderHtml/index.ts new file mode 100644 index 0000000000..5cff7f788a --- /dev/null +++ b/packages/test-case-component/src/renderHtml/index.ts @@ -0,0 +1,2 @@ +export * from "./renderClipboard"; +export * from "./renderError"; diff --git a/packages/test-case-component/src/renderHtml/renderClipboard.ts b/packages/test-case-component/src/renderHtml/renderClipboard.ts new file mode 100644 index 0000000000..26938ba2af --- /dev/null +++ b/packages/test-case-component/src/renderHtml/renderClipboard.ts @@ -0,0 +1,12 @@ +/** + * Renders the clipboard HTML if clipboard content exists. + * + * @param {string | undefined} clipboard - The clipboard string or undefined. + * @returns {string} The HTML string for the clipboard, or an empty string if clipboard is undefined. + */ +export function renderClipboard(clipboard: string | undefined): string { + if (!clipboard) { + return ""; + } + return `
clipboard: ${clipboard}
`; +} diff --git a/packages/test-case-component/src/renderHtml/renderClipboardAndError.ts b/packages/test-case-component/src/renderHtml/renderClipboardAndError.ts new file mode 100644 index 0000000000..135a19bd6f --- /dev/null +++ b/packages/test-case-component/src/renderHtml/renderClipboardAndError.ts @@ -0,0 +1 @@ +// Remove the old renderClipboardAndError.ts file since the functions are now in their own files diff --git a/packages/test-case-component/src/renderHtml/renderError.ts b/packages/test-case-component/src/renderHtml/renderError.ts new file mode 100644 index 0000000000..a9e844d2ec --- /dev/null +++ b/packages/test-case-component/src/renderHtml/renderError.ts @@ -0,0 +1,14 @@ +/** + * Renders the error HTML if an error occurred. + * + * @param {number} errorLevel - The error level index. + * @param {string[]} errorLevels - The array of error level descriptions. + * @returns {string} The HTML string for the error, or an empty string if no error. + */ +export function renderError(errorLevel: number, errorLevels: string[]): string { + if (errorLevel === errorLevels.length - 1) { + return ""; + } + const error = errorLevels[errorLevel]; + return `
Omitted due to errors: ${error}
`; +} From f3c8cd6be9d93fce2bd9c35835eab994fd98dc0b Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 16:39:53 -0700 Subject: [PATCH 181/211] refactor: Rename testCaseState to snapshot in getDecorations --- .../test-case-component/src/generateHtml.ts | 2 +- .../src/helpers/decorations/getDecorations.ts | 23 +++++++++++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index 54fa12deda..aff554d1f6 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -59,7 +59,7 @@ function createHtmlGenerator(data: DataFixture) { console.error(`Error in ${stepName} ${raw.command.spokenForm}`); return "Error"; } - const decorations = await getDecorations(state, command); + const decorations = await getDecorations({ snapshot: state, command }); const { documentContents } = state; const htmlArray: string[] = []; let codeBody; diff --git a/packages/test-case-component/src/helpers/decorations/getDecorations.ts b/packages/test-case-component/src/helpers/decorations/getDecorations.ts index f1abf7de96..1916937bb6 100644 --- a/packages/test-case-component/src/helpers/decorations/getDecorations.ts +++ b/packages/test-case-component/src/helpers/decorations/getDecorations.ts @@ -10,21 +10,24 @@ import type { Command } from "@cursorless/common"; import type { DecorationItem } from "shiki"; import { createDecorations } from "../index"; -export async function getDecorations( - testCaseState: ExtendedTestCaseSnapshot, - command: Command -): Promise { - const { messages, flashes, highlights, finalStateMarkHelpers } = testCaseState; - const potentialMarks = testCaseState.marks || {}; - const lines = testCaseState.documentContents.split("\n"); +export async function getDecorations({ + snapshot, + command +}: { + snapshot: ExtendedTestCaseSnapshot; + command: Command; +}): Promise { + const { messages, flashes, highlights, finalStateMarkHelpers } = snapshot; + const potentialMarks = snapshot.marks || {}; + const lines = snapshot.documentContents.split("\n"); const obj = { marks: potentialMarks, ide: { messages, flashes, highlights }, command, lines, - selections: testCaseState.selections, - thatMark: testCaseState.thatMark, - sourceMark: testCaseState.sourceMark, + selections: snapshot.selections, + thatMark: snapshot.thatMark, + sourceMark: snapshot.sourceMark, finalStateMarkHelpers }; const decorations = createDecorations(obj); From dfcae0c3b78e70bb09f52eb9cef354691814e773 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 16:56:20 -0700 Subject: [PATCH 182/211] refactor: Create getDuringSnapshot function --- .../test-case-component/src/generateHtml.ts | 45 ++++++++++++------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index aff554d1f6..f128410b1b 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -1,6 +1,7 @@ import { createHighlighter } from "./createHighlighter"; import type { BundledLanguage } from "shiki"; import type { StepNameType, DataFixture } from "./types"; +import type { ExtendedTestCaseSnapshot } from "./types"; import { renderClipboard, renderError } from "./renderHtml"; import { getDecorations } from "./helpers/decorations"; @@ -27,23 +28,7 @@ function createHtmlGenerator(data: DataFixture) { const raw = data; const testCaseStates = { before: data.initialState, - during: { - ...( - /** - * Spread the document state with more lines (finalState vs initialState), - * so Shiki decorations stay in bounds and don't go out of range. - */ - data.finalState && - (data.finalState.documentContents?.split("\n").length > data.initialState.documentContents?.split("\n").length) - ? data.finalState - : data.initialState - ), - ...data.ide, - finalStateMarkHelpers: { - thatMark: data?.finalState?.thatMark, - sourceMark: data?.finalState?.sourceMark - } - }, + during: getDuringSnapshot(data), after: data.finalState }; @@ -122,3 +107,29 @@ function createHtmlGenerator(data: DataFixture) { return { generate, generateAll }; } + +/** + * Selects the appropriate snapshot for the "during" step of a test case. + * If the final state has more lines than the initial state, it uses the final state as the base; + * otherwise, it uses the initial state. It then merges in IDE state and final mark helpers. + * + * @param {DataFixture} data - The test case data containing initialState, finalState, and ide info. + * @returns {ExtendedTestCaseSnapshot} The snapshot to use for the "during" step. + */ +function getDuringSnapshot(data: DataFixture): ExtendedTestCaseSnapshot { + // Spread the document state with more lines (finalState vs initialState), + // so Shiki decorations stay in bounds and don't go out of range. + const base = + data.finalState && + (data.finalState.documentContents?.split("\n").length > data.initialState.documentContents?.split("\n").length) + ? data.finalState + : data.initialState; + return { + ...base, + ...data.ide, + finalStateMarkHelpers: { + thatMark: data?.finalState?.thatMark, + sourceMark: data?.finalState?.sourceMark + } + }; +} From 0151bd16cf79cca6407ad64766beb579b47fbe79 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 20:13:15 -0700 Subject: [PATCH 183/211] style: Create selectionLeft and selectionRight styles Create these to avoid shiki intersect error for zero width decorations --- packages/test-case-component/src/styles.css | 24 ++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/packages/test-case-component/src/styles.css b/packages/test-case-component/src/styles.css index 944b04ce34..e7f4b5601b 100644 --- a/packages/test-case-component/src/styles.css +++ b/packages/test-case-component/src/styles.css @@ -102,10 +102,28 @@ pre.shiki { /* margin-left: -3px; */ } -.selection:not(:empty) { - background: #55f2; - padding-left: 0.5px; +.selectionLeft::before { + content: ""; + position: absolute; + width: 2px; + height: var(--line-height); + background: #0b0; + animation: blink 1000ms infinite; + left: -2px; + border-radius: 2px 0 0 2px; } + +.selectionRight::before { + content: ""; + position: absolute; + width: 2px; + height: var(--line-height); + background: #b00; + animation: blink 1000ms infinite; + right: -2px; + border-radius: 0 2px 2px 0; +} + .decoration { display: inline-block; line-height: 0; From ca0b43ec76421b32c738eeeefa96ed248850d230 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 20:14:15 -0700 Subject: [PATCH 184/211] feat: Stop advancing if user presses one of the Carousel buttons --- .../src/components/shikiComponent.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/src/components/shikiComponent.tsx b/packages/test-case-component/src/components/shikiComponent.tsx index a2a5e986ee..51ce1c73fb 100644 --- a/packages/test-case-component/src/components/shikiComponent.tsx +++ b/packages/test-case-component/src/components/shikiComponent.tsx @@ -80,24 +80,31 @@ const STEP_DURATIONS = [1500, 500, 1500]; // milliseconds function Carousel({ children }: { children: React.ReactNode[] }) { const [activeIndex, setActiveIndex] = useState(0); + const [paused, setPaused] = useState(false); const handleNext = () => { setActiveIndex((prevIndex) => (prevIndex + 1) % children.length); + setPaused(true); // Pause on manual navigation }; const handlePrev = () => { setActiveIndex((prevIndex) => prevIndex === 0 ? children.length - 1 : prevIndex - 1, ); + setPaused(true); // Pause on manual navigation }; const handleIndicatorClick = (index: number) => { setActiveIndex(index); + setPaused(true); // Pause on manual navigation }; const timeoutRef = useRef(null); useEffect(() => { + if (paused) { + return; // Don't auto-rotate if paused + } const duration = STEP_DURATIONS[activeIndex] || 3000; timeoutRef.current = setTimeout(() => { @@ -105,7 +112,7 @@ function Carousel({ children }: { children: React.ReactNode[] }) { }, duration); return () => clearTimeout(timeoutRef.current); - }, [activeIndex, children.length]); + }, [activeIndex, children.length, paused]); const CarouselItem = ({ child, From 0f54caf483b1c6853dc5d9ebca6b90e4b95f2675 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 20:16:52 -0700 Subject: [PATCH 185/211] refactor: Add stepName to snapshot type for easier debugging --- packages/test-case-component/src/generateHtml.ts | 5 +---- .../src/helpers/decorations/createDecorations.ts | 4 +++- .../src/helpers/decorations/getDecorations.ts | 6 ++++-- packages/test-case-component/src/types.ts | 7 +++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index f128410b1b..e82ad0c606 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -127,9 +127,6 @@ function getDuringSnapshot(data: DataFixture): ExtendedTestCaseSnapshot { return { ...base, ...data.ide, - finalStateMarkHelpers: { - thatMark: data?.finalState?.thatMark, - sourceMark: data?.finalState?.sourceMark - } + stepName: "during", }; } diff --git a/packages/test-case-component/src/helpers/decorations/createDecorations.ts b/packages/test-case-component/src/helpers/decorations/createDecorations.ts index 0725485713..b3a5d6cfb6 100644 --- a/packages/test-case-component/src/helpers/decorations/createDecorations.ts +++ b/packages/test-case-component/src/helpers/decorations/createDecorations.ts @@ -12,6 +12,7 @@ import { getIdeFlashDecorations } from "./getIdeFlashDecorations"; import { getSelections } from "./getSelections"; import { getSourceMarks } from "./getSourceMarks"; import { getThatMarks } from "./getThatMarks"; +import type { StepNameType } from "../../types"; export function createDecorations( options: { @@ -22,13 +23,14 @@ export function createDecorations( selections?: SelectionPlainObject[] thatMark?: TargetPlainObject[] sourceMark?: TargetPlainObject[] + stepName?: StepNameType finalStateMarkHelpers?: { sourceMark?: TargetPlainObject[] thatMark?: TargetPlainObject[] } } = {} ): DecorationItem[][] { - const { marks, ide, lines, selections, thatMark, sourceMark } = options + const { marks, ide, lines, selections, thatMark, sourceMark, stepName } = options const decorations: DecorationItem[][] = []; diff --git a/packages/test-case-component/src/helpers/decorations/getDecorations.ts b/packages/test-case-component/src/helpers/decorations/getDecorations.ts index 1916937bb6..259ee5eb1c 100644 --- a/packages/test-case-component/src/helpers/decorations/getDecorations.ts +++ b/packages/test-case-component/src/helpers/decorations/getDecorations.ts @@ -5,7 +5,7 @@ * @param {Command} command - The command object for the test case. * @returns {Promise} The computed decorations for the state. */ -import type { ExtendedTestCaseSnapshot } from "../../types"; +import type { ExtendedTestCaseSnapshot, StepNameType } from "../../types"; import type { Command } from "@cursorless/common"; import type { DecorationItem } from "shiki"; import { createDecorations } from "../index"; @@ -20,6 +20,8 @@ export async function getDecorations({ const { messages, flashes, highlights, finalStateMarkHelpers } = snapshot; const potentialMarks = snapshot.marks || {}; const lines = snapshot.documentContents.split("\n"); + // Use StepNameType for stepName, and provide a fallback if undefined + const stepName: StepNameType = snapshot.stepName ?? "error"; const obj = { marks: potentialMarks, ide: { messages, flashes, highlights }, @@ -28,7 +30,7 @@ export async function getDecorations({ selections: snapshot.selections, thatMark: snapshot.thatMark, sourceMark: snapshot.sourceMark, - finalStateMarkHelpers + stepName, }; const decorations = createDecorations(obj); return decorations; diff --git a/packages/test-case-component/src/types.ts b/packages/test-case-component/src/types.ts index feac02a542..6f3d0ec695 100644 --- a/packages/test-case-component/src/types.ts +++ b/packages/test-case-component/src/types.ts @@ -18,10 +18,9 @@ export type StepNameType = "before" | "during" | "after"; export type ExtendedTestCaseSnapshot = TestCaseSnapshot & Partial & { - finalStateMarkHelpers?: { - thatMark?: TargetPlainObject[]; - sourceMark?: TargetPlainObject[]; - }; + thatMark?: TargetPlainObject[]; + sourceMark?: TargetPlainObject[]; + stepName: StepNameType; }; export type LineRange = { type: string; start: number; end: number }; From 9a429aac48b839e5b4e5eae1fa3b3785e2ed37bd Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 20:20:05 -0700 Subject: [PATCH 186/211] feat: Remove badly designed error handling code --- .../test-case-component/src/generateHtml.ts | 50 ++++++------------- .../helpers/decorations/createDecorations.ts | 10 ++-- .../src/helpers/decorations/getDecorations.ts | 4 +- 3 files changed, 23 insertions(+), 41 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index e82ad0c606..2c37c7cf9d 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -3,7 +3,7 @@ import type { BundledLanguage } from "shiki"; import type { StepNameType, DataFixture } from "./types"; import type { ExtendedTestCaseSnapshot } from "./types"; -import { renderClipboard, renderError } from "./renderHtml"; +import { renderClipboard } from "./renderHtml"; import { getDecorations } from "./helpers/decorations"; /** @@ -44,38 +44,23 @@ function createHtmlGenerator(data: DataFixture) { console.error(`Error in ${stepName} ${raw.command.spokenForm}`); return "Error"; } - const decorations = await getDecorations({ snapshot: state, command }); + const extendedState = { ...state, stepName }; + const decorations = await getDecorations({ snapshot: extendedState, command }); const { documentContents } = state; const htmlArray: string[] = []; let codeBody; - const errorLevels = [ - "excludes thatMarks sourceMarks selectionRanges ideFlashes", - "excludes thatMarks sourceMarks selectionRanges", - "excludes thatMarks sourceMarks", - "excludes thatMarks", - "success", - ]; - let errorLevel = errorLevels.length - 1; - for (let i = decorations.length - 1; i >= 0; i--) { - const fallbackDecoration = decorations.slice(0, i).flat(); - errorLevel = i; - try { - const marker = await createHighlighter(); - const options = { - theme: "css-variables", - lang, - decorations: fallbackDecoration - }; - codeBody = marker.codeToHtml(documentContents, options); - htmlArray.push(codeBody); - break; - } catch (error) { - console.warn(`"Failed with decorations level ${i}:"`, command); - console.warn(fallbackDecoration, error); - } - } - if (!codeBody) { - console.error("All fallback levels failed. Unable to generate code body."); + // Simplified: just try rendering once with all decorations + try { + const marker = await createHighlighter(); + const options = { + theme: "css-variables", + lang, + decorations, + }; + codeBody = marker.codeToHtml(documentContents, options); + htmlArray.push(codeBody); + } catch (error) { + console.error("Failed to generate code body:", error); codeBody = ""; } @@ -84,11 +69,6 @@ function createHtmlGenerator(data: DataFixture) { htmlArray.push(clipboardRendered); } - const errorRendered = renderError(errorLevel, errorLevels); - if (errorRendered !== "") { - htmlArray.push(errorRendered); - } - return { html: htmlArray.join(""), data: [decorations] }; } diff --git a/packages/test-case-component/src/helpers/decorations/createDecorations.ts b/packages/test-case-component/src/helpers/decorations/createDecorations.ts index b3a5d6cfb6..01290bc425 100644 --- a/packages/test-case-component/src/helpers/decorations/createDecorations.ts +++ b/packages/test-case-component/src/helpers/decorations/createDecorations.ts @@ -12,7 +12,9 @@ import { getIdeFlashDecorations } from "./getIdeFlashDecorations"; import { getSelections } from "./getSelections"; import { getSourceMarks } from "./getSourceMarks"; import { getThatMarks } from "./getThatMarks"; + import type { StepNameType } from "../../types"; +import { mergeOverlappingDecorations } from "./mergeOverlappingDecorations"; export function createDecorations( options: { @@ -29,8 +31,8 @@ export function createDecorations( thatMark?: TargetPlainObject[] } } = {} -): DecorationItem[][] { - const { marks, ide, lines, selections, thatMark, sourceMark, stepName } = options +): DecorationItem[] { + const { marks, ide, lines, selections, thatMark, sourceMark } = options const decorations: DecorationItem[][] = []; @@ -50,7 +52,7 @@ export function createDecorations( } else { decorations.push([]) } - - return decorations + const merged = mergeOverlappingDecorations(decorations.flat()); + return merged; } diff --git a/packages/test-case-component/src/helpers/decorations/getDecorations.ts b/packages/test-case-component/src/helpers/decorations/getDecorations.ts index 259ee5eb1c..5e82f65f5b 100644 --- a/packages/test-case-component/src/helpers/decorations/getDecorations.ts +++ b/packages/test-case-component/src/helpers/decorations/getDecorations.ts @@ -16,8 +16,8 @@ export async function getDecorations({ }: { snapshot: ExtendedTestCaseSnapshot; command: Command; -}): Promise { - const { messages, flashes, highlights, finalStateMarkHelpers } = snapshot; +}): Promise { + const { messages, flashes, highlights } = snapshot; const potentialMarks = snapshot.marks || {}; const lines = snapshot.documentContents.split("\n"); // Use StepNameType for stepName, and provide a fallback if undefined From ec4cfc625b3cc4e6a49736efd97cea9d0ae0a233 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 20:21:49 -0700 Subject: [PATCH 187/211] feat: Update mergeOverlappingDecorations to handle 0 width decoration --- .../mergeOverlappingDecorations.test.ts | 151 ++++++++++++++++-- .../mergeOverlappingDecorations.ts | 71 +++++++- 2 files changed, 210 insertions(+), 12 deletions(-) diff --git a/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.test.ts b/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.test.ts index 4e0c718723..5fb833836d 100644 --- a/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.test.ts +++ b/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.test.ts @@ -17,15 +17,19 @@ describe("mergeOverlappingDecorations", () => { }, ]; const result = mergeOverlappingDecorations(input); - // Only the first decoration should be present, as there is no true overlap - expect(result).toEqual([ - { - start: { line: 0, character: 0 }, - end: { line: 0, character: 1 }, - properties: { class: "hat default" }, - alwaysWrap: true, - }, - ]); + // The zero-width selection should be merged into the previous mark as selectionRight + expect(result).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + start: { line: 0, character: 0 }, + end: { line: 0, character: 1 }, + properties: { class: expect.stringContaining("hat default selectionRight") }, + alwaysWrap: true, + }), + ]) + ); + // Should not include the zero-width selection + expect(result.some(d => d.properties?.class === "selection")).toBe(false); }); it("returns non-overlapping decorations unchanged", () => { @@ -93,4 +97,133 @@ describe("mergeOverlappingDecorations", () => { properties: { class: "B" }, }); }); + + it("preserves zero-width (selection) decorations alongside others", () => { + const input = [ + { + start: { line: 0, character: 0 }, + end: { line: 0, character: 1 }, + properties: { class: "sourceMark" }, + alwaysWrap: true, + }, + { + start: { line: 0, character: 1 }, + end: { line: 0, character: 2 }, + properties: { class: "thatMark" }, + alwaysWrap: true, + }, + { + start: { line: 0, character: 2 }, + end: { line: 0, character: 2 }, // zero-width selection + properties: { class: "selection" }, + alwaysWrap: true, + }, + ]; + const result = mergeOverlappingDecorations(input); + // The zero-width selection should be merged into the previous mark as selectionRight + expect(result).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + start: { line: 0, character: 0 }, + end: { line: 0, character: 1 }, + properties: { class: "sourceMark" }, + alwaysWrap: true, + }), + expect.objectContaining({ + start: { line: 0, character: 1 }, + end: { line: 0, character: 2 }, + properties: { class: expect.stringContaining("thatMark selectionRight") }, + alwaysWrap: true, + }), + ]) + ); + // Should not include the zero-width selection + expect(result.some(d => d.properties?.class === "selection")).toBe(false); + }); + + it("merges zero-width selection at end into previous mark as selectionRight", () => { + const input = [ + { + start: { line: 0, character: 0 }, + end: { line: 0, character: 1 }, + properties: { class: "sourceMark" }, + alwaysWrap: true, + }, + { + start: { line: 0, character: 1 }, + end: { line: 0, character: 2 }, + properties: { class: "thatMark" }, + alwaysWrap: true, + }, + { + start: { line: 0, character: 2 }, + end: { line: 0, character: 2 }, // zero-width selection + properties: { class: "selection" }, + alwaysWrap: true, + }, + ]; + const result = mergeOverlappingDecorations(input); + // The zero-width selection should be deleted, and the thatMark should have selectionRight + expect(result).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + start: { line: 0, character: 0 }, + end: { line: 0, character: 1 }, + properties: { class: "sourceMark" }, + alwaysWrap: true, + }), + expect.objectContaining({ + start: { line: 0, character: 1 }, + end: { line: 0, character: 2 }, + properties: { class: expect.stringContaining("thatMark selectionRight") }, + alwaysWrap: true, + }), + ]) + ); + // Should not include the zero-width selection + expect(result.some(d => d.properties?.class === "selection")).toBe(false); + }); + + it("merges zero-width selection at start into next mark as selectionLeft", () => { + const input = [ + { + start: { line: 0, character: 0 }, + end: { line: 0, character: 1 }, + properties: { class: "sourceMark" }, + alwaysWrap: true, + }, + { + start: { line: 0, character: 1 }, + end: { line: 0, character: 2 }, + properties: { class: "thatMark" }, + alwaysWrap: true, + }, + { + start: { line: 0, character: 1 }, + end: { line: 0, character: 1 }, // zero-width selection at start of thatMark + properties: { class: "selection" }, + alwaysWrap: true, + }, + ]; + const result = mergeOverlappingDecorations(input); + // The zero-width selection should be merged into the next mark as selectionLeft + expect(result).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + start: { line: 0, character: 0 }, + end: { line: 0, character: 1 }, + properties: { class: "sourceMark" }, + alwaysWrap: true, + }), + expect.objectContaining({ + start: { line: 0, character: 1 }, + end: { line: 0, character: 2 }, + properties: { class: expect.stringContaining("thatMark selectionLeft") }, + alwaysWrap: true, + }), + ]) + ); + // Should not include the zero-width selection + expect(result.some(d => d.properties?.class === "selection")).toBe(false); + }); }); diff --git a/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.ts b/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.ts index 2300a78956..2f539715ce 100644 --- a/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.ts +++ b/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.ts @@ -14,9 +14,20 @@ export function mergeOverlappingDecorations(decorations: DecorationItem[]): Deco return obj && typeof obj.line === "number" && typeof obj.character === "number"; } + // Always include zero-width decorations (start == end) + const zeroWidth = decorations.filter( + d => isPosition(d.start) && isPosition(d.end) && d.start.line === d.end.line && d.start.character === d.end.character + ); + // Remove zero-width from main processing + const nonZeroWidth = decorations.filter( + d => !( + isPosition(d.start) && isPosition(d.end) && d.start.line === d.end.line && d.start.character === d.end.character + ) + ); + // Collect all unique boundary points const points: Position[] = []; - for (const deco of decorations) { + for (const deco of nonZeroWidth) { if (isPosition(deco.start) && isPosition(deco.end)) { points.push(deco.start, deco.end); } @@ -35,7 +46,7 @@ export function mergeOverlappingDecorations(decorations: DecorationItem[]): Deco const segStart = uniquePoints[i]; const segEnd = uniquePoints[i + 1]; // Find all decorations covering this segment - const covering = decorations.filter(d => + const covering = nonZeroWidth.filter(d => isPosition(d.start) && isPosition(d.end) && (d.start.line < segEnd.line || (d.start.line === segEnd.line && d.start.character < segEnd.character)) && (d.end.line > segStart.line || (d.end.line === segStart.line && d.end.character > segStart.character)) @@ -66,5 +77,59 @@ export function mergeOverlappingDecorations(decorations: DecorationItem[]): Deco }); } } - return result; + // Instead of outputting a zero-width selection at the start or end of a range, merge it into the next or previous mark as selectionLeft/selectionRight + const endPosToIdx = new Map(); // end position -> index in result + const startPosToIdx = new Map(); // start position -> index in result + for (let i = 0; i < result.length; ++i) { + const deco = result[i]; + if (isPosition(deco.end)) { + endPosToIdx.set(`${deco.end.line}:${deco.end.character}`, i); + } + if (isPosition(deco.start)) { + startPosToIdx.set(`${deco.start.line}:${deco.start.character}`, i); + } + } + function handleZeroWidthDecoration( + d: DecorationItem, + result: DecorationItem[], + endPosToIdx: Map, + startPosToIdx: Map + ): boolean { + const className = d.properties?.class; + if (className === "selection") { + const pos = isPosition(d.start) ? `${d.start.line}:${d.start.character}` : String(d.start); + const prevIdx = endPosToIdx.get(pos); + const nextIdx = startPosToIdx.get(pos); + // Prioritize merging into the next mark (selectionLeft) before previous (selectionRight) + if (nextIdx !== undefined) { + // Merge selectionLeft into the next mark + const next = result[nextIdx]; + const nextClass = next.properties?.class ?? ""; + const newClass = typeof nextClass === "string" && nextClass.split(" ").includes("selectionLeft") + ? nextClass + : (typeof nextClass === "string" ? (nextClass + " selectionLeft").trim() : "selectionLeft"); + result[nextIdx] = { ...next, properties: { ...next.properties, class: newClass } }; + return true; // handled + } else if (prevIdx !== undefined) { + // Merge selectionRight into the previous mark + const prev = result[prevIdx]; + const prevClass = prev.properties?.class ?? ""; + const newClass = typeof prevClass === "string" && prevClass.split(" ").includes("selectionRight") + ? prevClass + : (typeof prevClass === "string" ? (prevClass + " selectionRight").trim() : "selectionRight"); + result[prevIdx] = { ...prev, properties: { ...prev.properties, class: newClass } }; + return true; // handled + } + return false; // not handled + } else { + throw new Error(`Unhandled zero-width decoration class: ${className}`); + } + } + const filteredZeroWidth: DecorationItem[] = []; + for (const d of zeroWidth) { + if (!handleZeroWidthDecoration(d, result, endPosToIdx, startPosToIdx)) { + filteredZeroWidth.push(d); + } + } + return result.concat(filteredZeroWidth); } From ae15398110f3d5ff6854d81db5c83f86eed115e6 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 20:34:11 -0700 Subject: [PATCH 188/211] feat: Allow decorations with class 'full' to pass overlap --- .../helpers/decorations/mergeOverlappingDecorations.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.ts b/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.ts index 2f539715ce..941ba297af 100644 --- a/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.ts +++ b/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.ts @@ -9,6 +9,8 @@ import type { Position } from "@cursorless/common"; export function mergeOverlappingDecorations(decorations: DecorationItem[]): DecorationItem[] { if (decorations.length === 0) { return []; } + console.debug("[mergeOverlappingDecorations] decorations:", JSON.stringify(decorations, null, 2)); + // Helper to normalize positions (in case shiki uses offset numbers) function isPosition(obj: any): obj is Position { return obj && typeof obj.line === "number" && typeof obj.character === "number"; @@ -25,6 +27,9 @@ export function mergeOverlappingDecorations(decorations: DecorationItem[]): Deco ) ); + console.debug("[mergeOverlappingDecorations] zeroWidth:", JSON.stringify(zeroWidth, null, 2)); + console.debug("[mergeOverlappingDecorations] nonZeroWidth:", JSON.stringify(nonZeroWidth, null, 2)); + // Collect all unique boundary points const points: Position[] = []; for (const deco of nonZeroWidth) { @@ -96,6 +101,7 @@ export function mergeOverlappingDecorations(decorations: DecorationItem[]): Deco startPosToIdx: Map ): boolean { const className = d.properties?.class; + console.debug("[handleZeroWidthDecoration] className:", className, "decoration:", JSON.stringify(d, null, 2)); if (className === "selection") { const pos = isPosition(d.start) ? `${d.start.line}:${d.start.character}` : String(d.start); const prevIdx = endPosToIdx.get(pos); @@ -121,7 +127,11 @@ export function mergeOverlappingDecorations(decorations: DecorationItem[]): Deco return true; // handled } return false; // not handled + } else if (typeof className === "string" && className.includes("full")) { + // Allow decoration classes (e.g., decoration justAdded full) to pass through + return false; // not handled, will be added to filteredZeroWidth } else { + console.error("[handleZeroWidthDecoration] Unhandled zero-width decoration class:", className, d); throw new Error(`Unhandled zero-width decoration class: ${className}`); } } From ac62b67a98d974e59c1039a9e6e19a74d81c8b92 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 20:37:32 -0700 Subject: [PATCH 189/211] fix: Remove thatMark, sourceMark from during phase --- packages/test-case-component/src/generateHtml.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index 2c37c7cf9d..6b5f8b8fd9 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -104,8 +104,10 @@ function getDuringSnapshot(data: DataFixture): ExtendedTestCaseSnapshot { (data.finalState.documentContents?.split("\n").length > data.initialState.documentContents?.split("\n").length) ? data.finalState : data.initialState; + // Exclude sourceMark and thatMark from the DURING snapshot + const { sourceMark, thatMark, ...restBase } = base; return { - ...base, + ...restBase, ...data.ide, stepName: "during", }; From 339e4f38d305fc5b5a01831de1a15dbf461480e6 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 2 Jun 2025 20:47:44 -0700 Subject: [PATCH 190/211] feat: Allow zero width thatMarks and sourceMark to pass --- .../src/helpers/decorations/mergeOverlappingDecorations.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.ts b/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.ts index 941ba297af..24cd9e8d48 100644 --- a/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.ts +++ b/packages/test-case-component/src/helpers/decorations/mergeOverlappingDecorations.ts @@ -102,7 +102,11 @@ export function mergeOverlappingDecorations(decorations: DecorationItem[]): Deco ): boolean { const className = d.properties?.class; console.debug("[handleZeroWidthDecoration] className:", className, "decoration:", JSON.stringify(d, null, 2)); - if (className === "selection") { + if (className === "selection" || className === "thatMark" || className === "sourceMark") { + // For zero-width thatMark or sourceMark, just pass (do not merge or throw) + if (className === "thatMark" || className === "sourceMark") { + return false; // not handled, will be added to filteredZeroWidth + } const pos = isPosition(d.start) ? `${d.start.line}:${d.start.character}` : String(d.start); const prevIdx = endPosToIdx.get(pos); const nextIdx = startPosToIdx.get(pos); From 9663799c64133382ba80051aca8a91b1b2288b00 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 3 Jun 2025 14:28:26 -0700 Subject: [PATCH 191/211] refactor: Move import and process logic into standalone function --- .../src/pages/component-sheet.tsx | 39 +++++++++++++++---- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index f92a30b67a..9b994d1f4a 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -12,7 +12,7 @@ import { cheatsheetBodyClasses } from "@cursorless/cheatsheet"; const fixturesDir = path.join("../", "../", "data", "example-files"); -async function loadYamlFiles(dir: string, selectedFiles?: string[]) { +async function loadYamlFiles(dir: string, allowList?: string[]) { const directoryPath = path.join(process.cwd(), dir); const files = fs.readdirSync(directoryPath); const data: any[] = []; @@ -20,7 +20,7 @@ async function loadYamlFiles(dir: string, selectedFiles?: string[]) { files.forEach((file) => { if ( path.extname(file) === ".yml" && - (!selectedFiles || selectedFiles.includes(file)) + (!allowList || allowList.includes(file)) ) { try { const filePath = path.join(directoryPath, file); @@ -37,15 +37,31 @@ async function loadYamlFiles(dir: string, selectedFiles?: string[]) { return data; } -// See https://github.com/vercel/next.js/discussions/12325#discussioncomment-1116108 -export async function getStaticProps() { - const dataActions = await loadYamlFiles(fixturesDir, testSelectedFiles); +// Change argument to a single object for loadAndProcessFixtures +interface LoadAndProcessFixturesOptions { + fixturesDir: string; + allowList?: string[]; +} +/** + * Loads YAML test case files from a directory, processes them into fixtures, and returns an array of processed test case data. + * Optionally filters which files to load using an allow list. + * + * @param {Object} options - Options for loading and processing fixtures. + * @param {string} options.fixturesDir - Directory containing YAML fixture files. + * @param {string[]=} options.allowList - Optional list of filenames to include. + * @returns {Promise} Array of processed test case data, each with a `raw` property containing the original YAML object. + */ +async function loadAndProcessFixtures({ + fixturesDir, + allowList, +}: LoadAndProcessFixturesOptions) { + const dataActions = await loadYamlFiles(fixturesDir, allowList); const data_errors: any[] = []; const data = ( await Promise.all( - [...dataActions].map(async (val) => { + dataActions.map(async (val) => { try { const fixture = await loadTestCaseFixture(val); return { ...fixture, raw: val }; @@ -56,12 +72,21 @@ export async function getStaticProps() { } }), ) - ).filter((test) => test !== undefined); + ).filter((test) => test != null); if (data_errors.length > 0) { console.error("data errors:", data_errors); } + return data; +} + +// See https://github.com/vercel/next.js/discussions/12325#discussioncomment-1116108 +export async function getStaticProps() { + const data = await loadAndProcessFixtures({ + fixturesDir, + allowList: testSelectedFiles, + }); return { props: { data, bodyClasses: cheatsheetBodyClasses } }; } From 24e29e81d08ad397de30aed0b35ac61d98c57219 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Tue, 3 Jun 2025 16:51:30 -0700 Subject: [PATCH 192/211] refactor: Render JSON data element based on debug var in shikiComponent --- .../src/components/shikiComponent.tsx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/test-case-component/src/components/shikiComponent.tsx b/packages/test-case-component/src/components/shikiComponent.tsx index 51ce1c73fb..927751522d 100644 --- a/packages/test-case-component/src/components/shikiComponent.tsx +++ b/packages/test-case-component/src/components/shikiComponent.tsx @@ -36,12 +36,14 @@ export function ShikiComponent({
-
- JSON -
-          {JSON.stringify(data, null, 2)}
-        
-
+ {debug && ( +
+ JSON +
+            {JSON.stringify(data, null, 2)}
+          
+
+ )}
); } From e185dde94cd90b780f57be747d722c63723770a5 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 4 Jun 2025 16:04:01 -0700 Subject: [PATCH 193/211] feat: Add dependency test-case-component to cursorless-org-docs --- packages/cursorless-org-docs/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/cursorless-org-docs/package.json b/packages/cursorless-org-docs/package.json index 14e8cf28cd..abb819f150 100644 --- a/packages/cursorless-org-docs/package.json +++ b/packages/cursorless-org-docs/package.json @@ -41,6 +41,7 @@ "dependencies": { "@algolia/client-search": "5.25.0", "@cursorless/common": "workspace:*", + "@cursorless/test-case-component": "workspace:*", "@docsearch/react": "3.9.0", "@docusaurus/core": "3.8.0", "@docusaurus/preset-classic": "3.8.0", From 4a0cbe1f5b5bc132a2149e9778ea4671b3ffe50c Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 4 Jun 2025 23:22:27 -0700 Subject: [PATCH 194/211] refactor: Move to using ShikiComponentList, no fs access --- .../src/pages/component-sheet.tsx | 93 ++----------------- 1 file changed, 8 insertions(+), 85 deletions(-) diff --git a/packages/cursorless-org/src/pages/component-sheet.tsx b/packages/cursorless-org/src/pages/component-sheet.tsx index 9b994d1f4a..05707d3a1d 100644 --- a/packages/cursorless-org/src/pages/component-sheet.tsx +++ b/packages/cursorless-org/src/pages/component-sheet.tsx @@ -1,93 +1,15 @@ -import * as yaml from "js-yaml"; -import fs from "fs"; -import path from "path"; import Head from "next/head"; -import { loadTestCaseFixture } from "@cursorless/test-case-component"; -import { TestCaseComponentPage } from "@cursorless/test-case-component"; +import { + ShikiComponentList, + testCasesByLanguage, +} from "@cursorless/test-case-component"; import type { TestCaseFixture } from "@cursorless/common"; -import { testSelectedFiles } from "./allowList"; - import { cheatsheetBodyClasses } from "@cursorless/cheatsheet"; -const fixturesDir = path.join("../", "../", "data", "example-files"); - -async function loadYamlFiles(dir: string, allowList?: string[]) { - const directoryPath = path.join(process.cwd(), dir); - const files = fs.readdirSync(directoryPath); - const data: any[] = []; - - files.forEach((file) => { - if ( - path.extname(file) === ".yml" && - (!allowList || allowList.includes(file)) - ) { - try { - const filePath = path.join(directoryPath, file); - const fileContents = fs.readFileSync(filePath, "utf8"); - const yamlData: any = yaml.load(fileContents); - yamlData.filename = file; - data.push(yamlData); - } catch { - console.error("File load failure", file); - } - } - }); - - return data; -} - -// Change argument to a single object for loadAndProcessFixtures -interface LoadAndProcessFixturesOptions { - fixturesDir: string; - allowList?: string[]; -} - -/** - * Loads YAML test case files from a directory, processes them into fixtures, and returns an array of processed test case data. - * Optionally filters which files to load using an allow list. - * - * @param {Object} options - Options for loading and processing fixtures. - * @param {string} options.fixturesDir - Directory containing YAML fixture files. - * @param {string[]=} options.allowList - Optional list of filenames to include. - * @returns {Promise} Array of processed test case data, each with a `raw` property containing the original YAML object. - */ -async function loadAndProcessFixtures({ - fixturesDir, - allowList, -}: LoadAndProcessFixturesOptions) { - const dataActions = await loadYamlFiles(fixturesDir, allowList); - const data_errors: any[] = []; - - const data = ( - await Promise.all( - dataActions.map(async (val) => { - try { - const fixture = await loadTestCaseFixture(val); - return { ...fixture, raw: val }; - } catch (err) { - console.error(err); - data_errors.push(val); - return null; - } - }), - ) - ).filter((test) => test != null); - - if (data_errors.length > 0) { - console.error("data errors:", data_errors); - } - - return data; -} - // See https://github.com/vercel/next.js/discussions/12325#discussioncomment-1116108 export async function getStaticProps() { - const data = await loadAndProcessFixtures({ - fixturesDir, - allowList: testSelectedFiles, - }); - return { props: { data, bodyClasses: cheatsheetBodyClasses } }; + return { props: { bodyClasses: cheatsheetBodyClasses } }; } export type TestCaseComponentProps = TestCaseFixture & { @@ -100,7 +22,6 @@ export type TestCaseComponentProps = TestCaseFixture & { }; export function App({ - data, debug, }: { data: TestCaseComponentProps[]; @@ -111,7 +32,9 @@ export function App({ Cursorless Test Case Component Page - + {Object.keys(testCasesByLanguage).map((language) => ( + + ))} ); } From 6096aab982a6a073794d15fbf620a4f2077a944d Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 4 Jun 2025 23:26:16 -0700 Subject: [PATCH 195/211] feat: add convert-fixtures script for fixtures to .ts --- packages/test-case-component/package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/test-case-component/package.json b/packages/test-case-component/package.json index 6580a52153..54d44ab4a6 100644 --- a/packages/test-case-component/package.json +++ b/packages/test-case-component/package.json @@ -14,7 +14,8 @@ "watch:tsc": "pnpm compile:tsc --watch", "watch:esbuild": "pnpm compile:esbuild --watch", "watch": "pnpm run --filter @cursorless/test-case-component --parallel '/^watch:.*/'", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "convert-fixtures": "pnpm tsx ./src/scripts/yml-to-json.ts ../../data/example-files ./src/data/languages" }, "keywords": [], "author": "", @@ -42,6 +43,7 @@ "devDependencies": { "@types/fs-extra": "^11.0.4", "@types/jest": "29.5.12", + "@types/js-yaml": "^4.0.9", "@types/react": "18.2.71", "shiki": "^3.2.2", "jest": "29.7.0", From 6a32290f9692eed119033da0a1b70e4b2ad6ab2d Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 4 Jun 2025 23:27:21 -0700 Subject: [PATCH 196/211] fix: Correct prop name in SliderButton path element to camel case --- .../test-case-component/src/components/shikiComponent.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/test-case-component/src/components/shikiComponent.tsx b/packages/test-case-component/src/components/shikiComponent.tsx index 927751522d..c78409c9b4 100644 --- a/packages/test-case-component/src/components/shikiComponent.tsx +++ b/packages/test-case-component/src/components/shikiComponent.tsx @@ -208,8 +208,8 @@ const SliderButton = ({ > From ac0fae182fd3ffa673c82970e1e90335d1304673 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 4 Jun 2025 23:38:11 -0700 Subject: [PATCH 197/211] feat: Add default false debug param to generateHtml --- packages/test-case-component/src/generateHtml.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index 6b5f8b8fd9..b0025d8f94 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -12,8 +12,8 @@ import { getDecorations } from "./helpers/decorations"; * @param {DataFixture} data - The state object containing the necessary data for HTML generation. * @returns {Promise<{ before: string; during: string; after: string }>} A promise that resolves to the generated HTML content for each step. */ -export async function generateHtml(data: DataFixture) { - return createHtmlGenerator(data).generateAll(); +export async function generateHtml(data: DataFixture, debug = false) { + return createHtmlGenerator(data, debug).generateAll(); } /** @@ -22,7 +22,7 @@ export async function generateHtml(data: DataFixture) { * @param {DataFixture} data - The state object containing the necessary data for HTML generation. * @returns {Object} An object with generate, generateAll, and getDecorations async functions. */ -function createHtmlGenerator(data: DataFixture) { +function createHtmlGenerator(data: DataFixture, debug = false) { const lang = data.languageId as BundledLanguage; const command = data.command; const raw = data; @@ -41,7 +41,7 @@ function createHtmlGenerator(data: DataFixture) { async function generate(stepName: StepNameType) { const state = testCaseStates[stepName]; if (!state) { - console.error(`Error in ${stepName} ${raw.command.spokenForm}`); + if (debug) { console.error(`Error in ${stepName} ${raw.command.spokenForm}`); } return "Error"; } const extendedState = { ...state, stepName }; @@ -60,7 +60,7 @@ function createHtmlGenerator(data: DataFixture) { codeBody = marker.codeToHtml(documentContents, options); htmlArray.push(codeBody); } catch (error) { - console.error("Failed to generate code body:", error); + if (debug) { console.error("Failed to generate code body:", error); } codeBody = ""; } From c5c20efdeb99f6f492ad0fed139c314f054b82f1 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 4 Jun 2025 23:38:39 -0700 Subject: [PATCH 198/211] feat: Create ShikiComponentList component --- .../src/components/ShikiComponentList.tsx | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 packages/test-case-component/src/components/ShikiComponentList.tsx diff --git a/packages/test-case-component/src/components/ShikiComponentList.tsx b/packages/test-case-component/src/components/ShikiComponentList.tsx new file mode 100644 index 0000000000..b4ad492127 --- /dev/null +++ b/packages/test-case-component/src/components/ShikiComponentList.tsx @@ -0,0 +1,51 @@ +import * as React from "react"; +import { ShikiComponent } from "./shikiComponent"; +import "../shiki.css"; +import "../styles.css"; +import type { TestCaseFixture } from "@cursorless/common"; +import { testCasesByLanguage } from "../data"; + +export type ShikiComponentComponentProps = TestCaseFixture & { + filename: string; + raw: TestCaseFixture; + before: { html: string; data: string[] }; + during: { html: string; data: string[] }; + after: { html: string; data: string[] }; +}; + +export function ShikiComponentList({ + language, + debug, +}: { + language: string; + debug?: boolean; +}) { + if (!(language in testCasesByLanguage)) { + console.warn( + `Valid languages: ${Object.keys(testCasesByLanguage).join(", ")}`, + ); + return <>; + } + const rawData = + (testCasesByLanguage as { [key: string]: unknown[] })[language] ?? []; + const data: ShikiComponentComponentProps[] = + rawData as ShikiComponentComponentProps[]; + + return ( +
+ {data.map((item) => { + if (!item) { + return

Error: item is null

; + } + const { filename } = item; + if (filename) { + return ( + + ); + } else { + return <>; + } + })} +
+ ); +} From 43486d95cc74fd8393d68adb3b9302efbe34e138 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 4 Jun 2025 23:53:47 -0700 Subject: [PATCH 199/211] refactor: Ensure stepName is present in all calls of generate --- packages/test-case-component/src/generateHtml.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/test-case-component/src/generateHtml.ts b/packages/test-case-component/src/generateHtml.ts index b0025d8f94..e5d7362335 100644 --- a/packages/test-case-component/src/generateHtml.ts +++ b/packages/test-case-component/src/generateHtml.ts @@ -27,9 +27,9 @@ function createHtmlGenerator(data: DataFixture, debug = false) { const command = data.command; const raw = data; const testCaseStates = { - before: data.initialState, + before: { ...data.initialState, documentContents: data.initialState.documentContents ?? "", stepName: "before" }, during: getDuringSnapshot(data), - after: data.finalState + after: { ...data.finalState, documentContents: data.finalState?.documentContents ?? "", stepName: "after" }, }; /** @@ -44,7 +44,7 @@ function createHtmlGenerator(data: DataFixture, debug = false) { if (debug) { console.error(`Error in ${stepName} ${raw.command.spokenForm}`); } return "Error"; } - const extendedState = { ...state, stepName }; + const extendedState = { ...state, stepName, selections: state.selections ?? [] }; const decorations = await getDecorations({ snapshot: extendedState, command }); const { documentContents } = state; const htmlArray: string[] = []; @@ -105,7 +105,8 @@ function getDuringSnapshot(data: DataFixture): ExtendedTestCaseSnapshot { ? data.finalState : data.initialState; // Exclude sourceMark and thatMark from the DURING snapshot - const { sourceMark, thatMark, ...restBase } = base; + const { sourceMark, thatMark, ...restBase } = base ?? {}; + // Ensure stepName is set on the snapshot return { ...restBase, ...data.ide, From 73d5bc9d87d4535f93580554214aa8adc9b8f151 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Wed, 4 Jun 2025 23:59:09 -0700 Subject: [PATCH 200/211] feat: Create script for generating .ts json fixtures --- .../processFixtures/loadAndProcessFixtures.ts | 55 ++++++++++ .../src/processFixtures/loadYamlFiles.ts | 42 ++++++++ .../src/scripts/yml-to-json.ts | 101 ++++++++++++++++++ 3 files changed, 198 insertions(+) create mode 100644 packages/test-case-component/src/processFixtures/loadAndProcessFixtures.ts create mode 100644 packages/test-case-component/src/processFixtures/loadYamlFiles.ts create mode 100644 packages/test-case-component/src/scripts/yml-to-json.ts diff --git a/packages/test-case-component/src/processFixtures/loadAndProcessFixtures.ts b/packages/test-case-component/src/processFixtures/loadAndProcessFixtures.ts new file mode 100644 index 0000000000..baad6e3989 --- /dev/null +++ b/packages/test-case-component/src/processFixtures/loadAndProcessFixtures.ts @@ -0,0 +1,55 @@ +import { loadTestCaseFixture } from "../loadTestCaseFixture"; +import { loadYamlFiles } from "./loadYamlFiles"; + +export interface LoadAndProcessFixturesOptions { + fixturesDir: string; + allowList?: string[]; + deps: { + fs: any; + path: any; + yaml: any; + }; +} + +/** + * Loads YAML test case files from a directory, processes them into fixtures, and returns an array of processed test case data. + * Optionally filters which files to load using an allow list. + * + * @param {Object} options - Options for loading and processing fixtures. + * @param {string} options.fixturesDir - Directory containing YAML fixture files. + * @param {string[]=} options.allowList - Optional list of filenames to include. + * @returns {Promise} Array of processed test case data, each with a `raw` property containing the original YAML object. + */ +export async function loadAndProcessFixtures({ + fixturesDir, + allowList, + deps, +}: LoadAndProcessFixturesOptions) { + const fixtures = await loadYamlFiles({ + dir: fixturesDir, + deps, + allowList, + }); + const data_errors: any[] = []; + + const data = ( + await Promise.all( + fixtures.map(async (val: any) => { + try { + const fixture = await loadTestCaseFixture(val); + return { ...fixture, raw: val }; + } catch (err) { + console.error(err); + data_errors.push(val); + return null; + } + }) + ) + ).filter((test: any) => test != null); + + if (data_errors.length > 0) { + console.error("data errors:", data_errors); + } + + return data; +} diff --git a/packages/test-case-component/src/processFixtures/loadYamlFiles.ts b/packages/test-case-component/src/processFixtures/loadYamlFiles.ts new file mode 100644 index 0000000000..7feaafedbe --- /dev/null +++ b/packages/test-case-component/src/processFixtures/loadYamlFiles.ts @@ -0,0 +1,42 @@ +export type LoadYamlFilesArgs = { + dir: string; + deps: { + fs: any; + path: any; + yaml: any; + }; + allowList?: string[]; +}; + +/** + * Loads YAML files from a directory, optionally filtering by an allow list. + * @param args Object containing dir, deps, and optional allowList + * @returns Array of parsed YAML objects, each with a filename property + */ +export async function loadYamlFiles(args: LoadYamlFilesArgs) { + const { dir, deps, allowList } = args; + const { fs, path, yaml } = deps; + // Use dir as-is, since it is already absolute + const directoryPath = dir; + const files = fs.readdirSync(directoryPath); + const data: any[] = []; + + files.forEach((file: string) => { + if ( + path.extname(file) === ".yml" && + (!allowList || allowList.includes(file)) + ) { + try { + const filePath = path.join(directoryPath, file); + const fileContents = fs.readFileSync(filePath, "utf8"); + const yamlData: any = yaml.load(fileContents); + yamlData.filename = file; + data.push(yamlData); + } catch { + console.error("File load failure", file); + } + } + }); + + return data; +} diff --git a/packages/test-case-component/src/scripts/yml-to-json.ts b/packages/test-case-component/src/scripts/yml-to-json.ts new file mode 100644 index 0000000000..6bdc305f39 --- /dev/null +++ b/packages/test-case-component/src/scripts/yml-to-json.ts @@ -0,0 +1,101 @@ +#!/usr/bin/env ts-node + +// scripts/yml-to-json.ts +// Usage: pnpm ts-node scripts/yml-to-json.ts [--destructive] + +import fs from "fs"; +import path from "path"; +import yaml from "js-yaml"; +import { loadAndProcessFixtures } from "../processFixtures/loadAndProcessFixtures"; + +console.log("[yml-to-json] Begin"); + +if (process.argv.length < 4) { + console.error( + "Usage: pnpm ts-node scripts/yml-to-json.ts [--destructive]", + ); + process.exit(1); +} + +const inputDir = path.resolve(process.argv[2]); +const outputDir = path.resolve(process.argv[3]); +const outputSubdir = process.argv[4]; +let outputLanguagesDir: string | undefined = undefined; +if (outputSubdir) { + outputLanguagesDir = path.join(outputDir, outputSubdir); + if (!fs.existsSync(outputLanguagesDir)) { + fs.mkdirSync(outputLanguagesDir, { recursive: true }); + } +} + +if (!fs.existsSync(outputDir)) { + fs.mkdirSync(outputDir, { recursive: true }); +} +const isDestructive = process.argv.includes("--destructive"); + +if (fs.existsSync(outputDir) && isDestructive) { + fs.readdirSync(outputDir).forEach((file) => { + const filePath = path.join(outputDir, file); + if (fs.statSync(filePath).isFile()) { + fs.unlinkSync(filePath); + } + }); +} + +/** + * Groups processed fixtures by language + */ +function groupFixturesByLanguage(processedFixtures: Array<{ language: string; processed: any }>): Record { + const languageMap: Record = {}; + for (const item of processedFixtures) { + if (!item) { continue; } + if (!languageMap[item.language]) { languageMap[item.language] = []; } + languageMap[item.language].push(item.processed); + } + return languageMap; +} + +/** + * Writes grouped fixtures to JSON files + */ +function writeLanguageJsonFiles(languageMap: Record, outputDir: string, debug: boolean): Record { + const results: Record = {}; + Object.entries(languageMap).forEach(([language, fixtures]) => { + const targetDir = outputLanguagesDir || outputDir; + const outputPath = path.join(targetDir, `${language}.ts`); + if (debug) { console.log(`[yml-to-json] Writing ${fixtures.length} fixtures to ${outputPath}`); } + fs.writeFileSync(outputPath, `export default ${JSON.stringify(fixtures, null, 2)};\n`); + results[language] = fixtures.length; + if (debug) { console.log(`Wrote ${fixtures.length} fixtures to ${outputPath}`); } + }); + return results; +} + +const deps = { fs, path, yaml }; + +async function main() { + console.log("🦋 [main] being:"); + const debug = false; + const fixtures = await loadAndProcessFixtures({ + fixturesDir: inputDir, + allowList: undefined, + deps + }); + if (debug) { console.log("🦋 processedFixtures:", JSON.stringify(fixtures, null, 2)); } + const languageMap = groupFixturesByLanguage( + fixtures.map((fixture: any) => ({ + language: fixture.language || "plaintext", + processed: fixture, + })) + ); + writeLanguageJsonFiles(languageMap, outputDir, debug); + console.log("🦋 languageMap:"); + Object.entries(languageMap).forEach(([key, arr]) => { + console.log(`${key}: ${arr.length}`); + }); +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); From f81f142ac9310b776143731ad5027bb41b45acd9 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 22:14:02 -0700 Subject: [PATCH 201/211] chore: Refresh pnpm-lock.yaml during rebase --- pnpm-lock.yaml | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5f844adb6b..e570423b5d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -539,6 +539,9 @@ importers: '@cursorless/common': specifier: workspace:* version: link:../common + '@cursorless/test-case-component': + specifier: workspace:* + version: link:../test-case-component '@docsearch/react': specifier: 3.9.0 version: 3.9.0(@algolia/client-search@5.25.0)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.13.0) @@ -925,6 +928,9 @@ importers: '@cursorless/node-common': specifier: workspace:* version: link:../node-common + clsx: + specifier: ^2.1.1 + version: 2.1.1 escape-goat: specifier: 4.0.0 version: 4.0.0 @@ -956,6 +962,9 @@ importers: '@types/jest': specifier: 29.5.12 version: 29.5.12 + '@types/js-yaml': + specifier: ^4.0.9 + version: 4.0.9 '@types/react': specifier: 18.2.71 version: 18.2.71 @@ -12999,7 +13008,7 @@ snapshots: '@babel/parser': 7.27.5 '@babel/template': 7.27.2 '@babel/types': 7.27.6 - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -14072,7 +14081,7 @@ snapshots: '@emnapi/core@1.4.3': dependencies: '@emnapi/wasi-threads': 1.0.2 - tslib: 2.6.2 + tslib: 2.8.1 optional: true '@emnapi/runtime@1.4.3': @@ -14082,7 +14091,7 @@ snapshots: '@emnapi/wasi-threads@1.0.2': dependencies: - tslib: 2.6.2 + tslib: 2.8.1 optional: true '@esbuild-kit/cjs-loader@2.4.4': @@ -15830,7 +15839,7 @@ snapshots: '@tybys/wasm-util@0.9.0': dependencies: - tslib: 2.6.2 + tslib: 2.8.1 optional: true '@types/acorn@4.0.6': @@ -19394,7 +19403,7 @@ snapshots: history@4.10.1: dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.27.6 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.3 @@ -24004,7 +24013,7 @@ snapshots: spdy-transport@3.0.0: dependencies: - debug: 4.3.4 + debug: 4.4.1(supports-color@8.1.1) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 From 61f2c40e9a4fd2607cfc302960682a8b1ad293f0 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Fri, 6 Jun 2025 10:59:50 -0700 Subject: [PATCH 202/211] feat: Create DisplayComponent in cursorless-org-docs --- .../user/languages/components/DisplayComponent.tsx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 packages/cursorless-org-docs/src/docs/user/languages/components/DisplayComponent.tsx diff --git a/packages/cursorless-org-docs/src/docs/user/languages/components/DisplayComponent.tsx b/packages/cursorless-org-docs/src/docs/user/languages/components/DisplayComponent.tsx new file mode 100644 index 0000000000..dc848222d7 --- /dev/null +++ b/packages/cursorless-org-docs/src/docs/user/languages/components/DisplayComponent.tsx @@ -0,0 +1,14 @@ +import React from "react"; +import { ShikiComponentList } from "@cursorless/test-case-component"; + +interface Props { + languageId: string; +} + +export function DisplayComponent({ languageId }: Props) { + return ( + <> + + + ); +} From 0e57d2d3e53d597fff964e18cc5ac7176a7ec8a7 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 22:23:52 -0700 Subject: [PATCH 203/211] build: Expand Tailwind content search to include test-case-component Added 'packages/test-case-component/src/components/' to the Tailwind CSS content array in cursorless-org-docs to ensure styles are generated for components in that directory. --- packages/cursorless-org-docs/tailwind.config.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/cursorless-org-docs/tailwind.config.js b/packages/cursorless-org-docs/tailwind.config.js index ef134d74ec..69d69d8885 100644 --- a/packages/cursorless-org-docs/tailwind.config.js +++ b/packages/cursorless-org-docs/tailwind.config.js @@ -1,7 +1,13 @@ import { fontFamily as _fontFamily } from "tailwindcss/defaultTheme"; /** @type {import('tailwindcss').Config} */ -export const content = ["./src/**/*.{js,ts,jsx,tsx}"]; +// packages/test-case-component/src/components/ add dir +// just add this damn dir to the content array, this FILE is at packages/cursorless-org-docs/tailwind.config.js +export const content = [ + "./src/**/*.{js,ts,jsx,tsx}", + "../test-case-component/src/components/**/*.{js,ts,jsx,tsx}", +]; + export const corePlugins = { preflight: false, }; From 08669abc61d12b1fd0b60b29a39ed15fbf7b2c6a Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 22:37:21 -0700 Subject: [PATCH 204/211] feat: Add inital src/data in test-case-component --- .../test-case-component/src/data/index.ts | 7 + .../src/data/languages/plaintext.ts | 229 ++++++++ .../src/data/languages/typescript.ts | 491 ++++++++++++++++++ 3 files changed, 727 insertions(+) create mode 100644 packages/test-case-component/src/data/index.ts create mode 100644 packages/test-case-component/src/data/languages/plaintext.ts create mode 100644 packages/test-case-component/src/data/languages/typescript.ts diff --git a/packages/test-case-component/src/data/index.ts b/packages/test-case-component/src/data/index.ts new file mode 100644 index 0000000000..45881bcb81 --- /dev/null +++ b/packages/test-case-component/src/data/index.ts @@ -0,0 +1,7 @@ +import typescript from "./languages/typescript"; +import plaintext from "./languages/plaintext"; + +export const testCasesByLanguage = { + typescript, + plaintext, +}; \ No newline at end of file diff --git a/packages/test-case-component/src/data/languages/plaintext.ts b/packages/test-case-component/src/data/languages/plaintext.ts new file mode 100644 index 0000000000..aa7269a866 --- /dev/null +++ b/packages/test-case-component/src/data/languages/plaintext.ts @@ -0,0 +1,229 @@ +export default [ + { + "before": { + "html": "
a
", + "data": [ + [ + { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + }, + "properties": { + "class": "hat default selectionRight" + }, + "alwaysWrap": true + } + ] + ] + }, + "during": { + "html": "
a
", + "data": [ + [ + { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + }, + "properties": { + "class": "hat default selectionRight" + }, + "alwaysWrap": true + } + ] + ] + }, + "after": { + "html": "
aa
", + "data": [ + [ + { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + }, + "properties": { + "class": "sourceMark" + }, + "alwaysWrap": true + }, + { + "start": { + "line": 0, + "character": 1 + }, + "end": { + "line": 0, + "character": 2 + }, + "properties": { + "class": "thatMark selectionRight" + }, + "alwaysWrap": true + } + ] + ] + }, + "command": { + "version": 6, + "spokenForm": "bring air to end of air", + "action": { + "name": "replaceWithTarget", + "source": { + "type": "primitive", + "mark": { + "type": "decoratedSymbol", + "symbolColor": "default", + "character": "a" + } + }, + "destination": { + "type": "primitive", + "insertionMode": "to", + "target": { + "type": "primitive", + "modifiers": [ + { + "type": "endOf" + } + ], + "mark": { + "type": "decoratedSymbol", + "symbolColor": "default", + "character": "a" + } + } + } + }, + "usePrePhraseSnapshot": true + }, + "filename": "bringAirToEndOfAir.yml", + "language": "plaintext", + "raw": { + "languageId": "plaintext", + "command": { + "version": 6, + "spokenForm": "bring air to end of air", + "action": { + "name": "replaceWithTarget", + "source": { + "type": "primitive", + "mark": { + "type": "decoratedSymbol", + "symbolColor": "default", + "character": "a" + } + }, + "destination": { + "type": "primitive", + "insertionMode": "to", + "target": { + "type": "primitive", + "modifiers": [ + { + "type": "endOf" + } + ], + "mark": { + "type": "decoratedSymbol", + "symbolColor": "default", + "character": "a" + } + } + } + }, + "usePrePhraseSnapshot": true + }, + "initialState": { + "documentContents": "a", + "selections": [ + { + "anchor": { + "line": 0, + "character": 1 + }, + "active": { + "line": 0, + "character": 1 + } + } + ], + "marks": { + "default.a": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + } + } + }, + "finalState": { + "documentContents": "aa", + "selections": [ + { + "anchor": { + "line": 0, + "character": 2 + }, + "active": { + "line": 0, + "character": 2 + } + } + ], + "thatMark": [ + { + "type": "UntypedTarget", + "contentRange": { + "start": { + "line": 0, + "character": 1 + }, + "end": { + "line": 0, + "character": 2 + } + }, + "isReversed": false, + "hasExplicitRange": true + } + ], + "sourceMark": [ + { + "type": "UntypedTarget", + "contentRange": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "isReversed": false, + "hasExplicitRange": true + } + ] + }, + "filename": "bringAirToEndOfAir.yml" + } + } +]; diff --git a/packages/test-case-component/src/data/languages/typescript.ts b/packages/test-case-component/src/data/languages/typescript.ts new file mode 100644 index 0000000000..c062537f4c --- /dev/null +++ b/packages/test-case-component/src/data/languages/typescript.ts @@ -0,0 +1,491 @@ +export default [ + { + "before": { + "html": "
a\nb\nc\n\nconst values = [e]\n
", + "data": [ + [ + { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + }, + "properties": { + "class": "hat default" + }, + "alwaysWrap": true + }, + { + "start": { + "line": 1, + "character": 0 + }, + "end": { + "line": 1, + "character": 1 + }, + "properties": { + "class": "hat default" + }, + "alwaysWrap": true + }, + { + "start": { + "line": 2, + "character": 0 + }, + "end": { + "line": 2, + "character": 1 + }, + "properties": { + "class": "hat default" + }, + "alwaysWrap": true + }, + { + "start": { + "line": 4, + "character": 16 + }, + "end": { + "line": 4, + "character": 17 + }, + "properties": { + "class": "hat default" + }, + "alwaysWrap": true + }, + { + "start": { + "line": 5, + "character": 0 + }, + "end": { + "line": 5, + "character": 0 + }, + "properties": { + "class": "selection" + }, + "alwaysWrap": true + } + ] + ] + }, + "during": { + "html": "
a\nb\nc\n\nconst values = [e]\n
", + "data": [ + [ + { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + }, + "properties": { + "class": "hat default" + }, + "alwaysWrap": true + }, + { + "start": { + "line": 1, + "character": 0 + }, + "end": { + "line": 1, + "character": 1 + }, + "properties": { + "class": "hat default" + }, + "alwaysWrap": true + }, + { + "start": { + "line": 2, + "character": 0 + }, + "end": { + "line": 2, + "character": 1 + }, + "properties": { + "class": "hat default" + }, + "alwaysWrap": true + }, + { + "start": { + "line": 4, + "character": 16 + }, + "end": { + "line": 4, + "character": 17 + }, + "properties": { + "class": "hat default" + }, + "alwaysWrap": true + }, + { + "start": { + "line": 5, + "character": 0 + }, + "end": { + "line": 5, + "character": 0 + }, + "properties": { + "class": "selection" + }, + "alwaysWrap": true + } + ] + ] + }, + "after": { + "html": "
a\nb\nc\n\nconst values = [e, a, b, c]\n
", + "data": [ + [ + { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + }, + "properties": { + "class": "sourceMark" + }, + "alwaysWrap": true + }, + { + "start": { + "line": 1, + "character": 0 + }, + "end": { + "line": 1, + "character": 1 + }, + "properties": { + "class": "sourceMark" + }, + "alwaysWrap": true + }, + { + "start": { + "line": 2, + "character": 0 + }, + "end": { + "line": 2, + "character": 1 + }, + "properties": { + "class": "sourceMark" + }, + "alwaysWrap": true + }, + { + "start": { + "line": 4, + "character": 19 + }, + "end": { + "line": 4, + "character": 26 + }, + "properties": { + "class": "thatMark" + }, + "alwaysWrap": true + }, + { + "start": { + "line": 5, + "character": 0 + }, + "end": { + "line": 5, + "character": 0 + }, + "properties": { + "class": "selection" + }, + "alwaysWrap": true + } + ] + ] + }, + "command": { + "version": 6, + "spokenForm": "bring air and bat and cap after item each", + "action": { + "name": "replaceWithTarget", + "source": { + "type": "list", + "elements": [ + { + "type": "primitive", + "mark": { + "type": "decoratedSymbol", + "symbolColor": "default", + "character": "a" + } + }, + { + "type": "primitive", + "mark": { + "type": "decoratedSymbol", + "symbolColor": "default", + "character": "b" + } + }, + { + "type": "primitive", + "mark": { + "type": "decoratedSymbol", + "symbolColor": "default", + "character": "c" + } + } + ] + }, + "destination": { + "type": "primitive", + "insertionMode": "after", + "target": { + "type": "primitive", + "modifiers": [ + { + "type": "containingScope", + "scopeType": { + "type": "collectionItem" + } + } + ], + "mark": { + "type": "decoratedSymbol", + "symbolColor": "default", + "character": "e" + } + } + } + }, + "usePrePhraseSnapshot": false + }, + "filename": "bringAirAndBatAndCapToAfterItemEach.yml", + "language": "typescript", + "raw": { + "languageId": "typescript", + "command": { + "version": 6, + "spokenForm": "bring air and bat and cap after item each", + "action": { + "name": "replaceWithTarget", + "source": { + "type": "list", + "elements": [ + { + "type": "primitive", + "mark": { + "type": "decoratedSymbol", + "symbolColor": "default", + "character": "a" + } + }, + { + "type": "primitive", + "mark": { + "type": "decoratedSymbol", + "symbolColor": "default", + "character": "b" + } + }, + { + "type": "primitive", + "mark": { + "type": "decoratedSymbol", + "symbolColor": "default", + "character": "c" + } + } + ] + }, + "destination": { + "type": "primitive", + "insertionMode": "after", + "target": { + "type": "primitive", + "modifiers": [ + { + "type": "containingScope", + "scopeType": { + "type": "collectionItem" + } + } + ], + "mark": { + "type": "decoratedSymbol", + "symbolColor": "default", + "character": "e" + } + } + } + }, + "usePrePhraseSnapshot": false + }, + "initialState": { + "documentContents": "a\nb\nc\n\nconst values = [e]\n", + "selections": [ + { + "anchor": { + "line": 5, + "character": 0 + }, + "active": { + "line": 5, + "character": 0 + } + } + ], + "marks": { + "default.a": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "default.b": { + "start": { + "line": 1, + "character": 0 + }, + "end": { + "line": 1, + "character": 1 + } + }, + "default.c": { + "start": { + "line": 2, + "character": 0 + }, + "end": { + "line": 2, + "character": 1 + } + }, + "default.e": { + "start": { + "line": 4, + "character": 16 + }, + "end": { + "line": 4, + "character": 17 + } + } + } + }, + "finalState": { + "documentContents": "a\nb\nc\n\nconst values = [e, a, b, c]\n", + "selections": [ + { + "anchor": { + "line": 5, + "character": 0 + }, + "active": { + "line": 5, + "character": 0 + } + } + ], + "thatMark": [ + { + "type": "UntypedTarget", + "contentRange": { + "start": { + "line": 4, + "character": 19 + }, + "end": { + "line": 4, + "character": 26 + } + }, + "isReversed": false, + "hasExplicitRange": true + } + ], + "sourceMark": [ + { + "type": "UntypedTarget", + "contentRange": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "isReversed": false, + "hasExplicitRange": true + }, + { + "type": "UntypedTarget", + "contentRange": { + "start": { + "line": 1, + "character": 0 + }, + "end": { + "line": 1, + "character": 1 + } + }, + "isReversed": false, + "hasExplicitRange": true + }, + { + "type": "UntypedTarget", + "contentRange": { + "start": { + "line": 2, + "character": 0 + }, + "end": { + "line": 2, + "character": 1 + } + }, + "isReversed": false, + "hasExplicitRange": true + } + ] + }, + "filename": "bringAirAndBatAndCapToAfterItemEach.yml" + } + } +]; From ac55f632852f6adefcf957cc2ef26f157f69a47e Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 22:44:50 -0700 Subject: [PATCH 205/211] feat: Add DisplayComponent to typescript.mdx --- .../cursorless-org-docs/src/docs/user/languages/typescript.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/cursorless-org-docs/src/docs/user/languages/typescript.mdx b/packages/cursorless-org-docs/src/docs/user/languages/typescript.mdx index c8588b5f63..3593bd6749 100644 --- a/packages/cursorless-org-docs/src/docs/user/languages/typescript.mdx +++ b/packages/cursorless-org-docs/src/docs/user/languages/typescript.mdx @@ -1,5 +1,7 @@ import { Language } from "./components/Language"; +import { DisplayComponent } from "./components/DisplayComponent"; # Typescript + From cbe249a82f8f48986c3dc6dc4c71d552044bb6ae Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 23:09:16 -0700 Subject: [PATCH 206/211] refactor: Update type imports for portability loadTestCaseFixture --- .../src/loadTestCaseFixture.ts | 48 +++++++++++++------ 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/packages/test-case-component/src/loadTestCaseFixture.ts b/packages/test-case-component/src/loadTestCaseFixture.ts index b616e9513d..da4422f674 100644 --- a/packages/test-case-component/src/loadTestCaseFixture.ts +++ b/packages/test-case-component/src/loadTestCaseFixture.ts @@ -1,21 +1,41 @@ import { generateHtml } from "./generateHtml"; -import type { LoadFixtureProps } from "./types"; +import type { DataFixture } from "./types"; +import type { BundledLanguage } from "shiki"; +import type { TestCaseSnapshot } from "@cursorless/common"; +import type { CommandLatest } from "@cursorless/common"; -export async function loadTestCaseFixture(data: LoadFixtureProps) { - const { before, during, after } = await generateHtml(data) - - const { command, filename, languageId: language } = data +export interface LoadFixtureProps extends DataFixture { + filename: string; + languageId: BundledLanguage; + initialState: TestCaseSnapshot; + finalState: TestCaseSnapshot; +} - const returnObj = { - before, during, after, command, filename, language - } - try { +export interface PortableTestCaseFixture { + before: string; + during: string; + after: string; + command: object; // Use plain object for portability + filename: string; + language: string; +} - return returnObj +function extractHtml(step: string | { html: string; data: any[] }): string { + return typeof step === "string" ? step : step.html; +} - } catch (e) { - console.error("error", e); - throw e; - } +export async function loadTestCaseFixture( + data: LoadFixtureProps +): Promise { + const { before, during, after } = await generateHtml(data); + const { command, filename, languageId: language } = data; + return { + before: extractHtml(before), + during: extractHtml(during), + after: extractHtml(after), + command: JSON.parse(JSON.stringify(command)), // ensure plain object + filename, + language, + }; } From cfa03dfdd3e1508af1a0ecdc850ad370c95b33b1 Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Sun, 8 Jun 2025 23:35:53 -0700 Subject: [PATCH 207/211] fix: Add srOnly param to SliderButton in shikiComponent --- .../src/components/shikiComponent.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/test-case-component/src/components/shikiComponent.tsx b/packages/test-case-component/src/components/shikiComponent.tsx index c78409c9b4..e061396f29 100644 --- a/packages/test-case-component/src/components/shikiComponent.tsx +++ b/packages/test-case-component/src/components/shikiComponent.tsx @@ -172,10 +172,15 @@ function Carousel({ children }: { children: React.ReactNode[] }) { ))}
{/* */} - +
); @@ -184,9 +189,11 @@ function Carousel({ children }: { children: React.ReactNode[] }) { const SliderButton = ({ additionalClasses, callback, + srOnly, }: { additionalClasses?: string; callback: React.MouseEventHandler; + srOnly: "Next" | "Previous"; }) => { return ( ); From 2010979f6fa85cffa451c847147ed23aaab344df Mon Sep 17 00:00:00 2001 From: Trillium Smith Date: Mon, 9 Jun 2025 00:20:58 -0700 Subject: [PATCH 208/211] style: Update shikiComponent classes --- .../src/components/shikiComponent.tsx | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/test-case-component/src/components/shikiComponent.tsx b/packages/test-case-component/src/components/shikiComponent.tsx index e061396f29..1acc2f810f 100644 --- a/packages/test-case-component/src/components/shikiComponent.tsx +++ b/packages/test-case-component/src/components/shikiComponent.tsx @@ -137,11 +137,7 @@ function Carousel({ children }: { children: React.ReactNode[] }) { }; return ( -