diff --git a/apps/dashboard/app/(app)/apis/[apiId]/_components/create-key/components/key-created-success-dialog.tsx b/apps/dashboard/app/(app)/apis/[apiId]/_components/create-key/components/key-created-success-dialog.tsx index 869b10ff64d..7db8649d064 100644 --- a/apps/dashboard/app/(app)/apis/[apiId]/_components/create-key/components/key-created-success-dialog.tsx +++ b/apps/dashboard/app/(app)/apis/[apiId]/_components/create-key/components/key-created-success-dialog.tsx @@ -3,8 +3,8 @@ import { ConfirmPopover } from "@/components/confirmation-popover"; import { Dialog, DialogContent } from "@/components/ui/dialog"; import { toast } from "@/components/ui/toaster"; -import { ArrowRight, Check, CircleInfo, Eye, EyeSlash, Key2, Plus } from "@unkey/icons"; -import { Button, CopyButton, InfoTooltip } from "@unkey/ui"; +import { ArrowRight, Check, CircleInfo, Key2, Plus } from "@unkey/icons"; +import { Button, CopyButton, InfoTooltip, VisibleButton } from "@unkey/ui"; import { useRouter } from "next/navigation"; import { useEffect, useRef, useState } from "react"; import { UNNAMED_KEY } from "../create-key.constants"; @@ -228,14 +228,11 @@ export const KeyCreatedSuccessDialog = ({
- + setShowKeyInSnippet(visible)} + title="Key Snippet" + /> - + setIsVisible(visible)} + title={title} + /> - ); -} diff --git a/apps/engineering/app/global.css b/apps/engineering/app/global.css index b5c61c95671..92358ab5a96 100644 --- a/apps/engineering/app/global.css +++ b/apps/engineering/app/global.css @@ -1,3 +1,130 @@ @tailwind base; -@tailwind components; -@tailwind utilities; + +@layer base { + :root { + --chart-selection: var(--accent-6); + + --white: 0 0% 100%; + --black: 0 0% 0%; + --background: 60 9% 98%; + --background-subtle: 60 9% 94%; + + --brand: 262 93% 58%; + --brand-foreground: 262 93% 90%; + + --warn: 46, 97%, 65%; + --warn-foreground: 46, 97%, 15%; + + --alert: 0 100% 65%; + --alert-foreground: 0 100% 98%; + + --success: 152, 56%, 39%; + + --primary: 24 10% 10%; + --primary-foreground: 24 10% 90%; + + --secondary: 20 6% 94%; + --secondary-foreground: 0 0% 0%; + + --content: 240 10% 3.9%; + --content-subtle: 240 3.8% 46.1%; + + --content-warn: 46, 97%, 40%; + --content-alert: 0 84.2% 60.2%; + + --border: 24, 6%, 83%; + --ring: 24, 6%, 83%; + } + + .dark { + --chart-selection: var(--accent-9); + + --white: 0 0% 100%; + --black: 0 0% 0%; + + --background: 20 14% 2%; + --background-subtle: 24 10% 10%; + + --brand: 25 95% 53%; + --brand-foreground: 25 95% 90%; + + --warn: 46, 100%, 45%; + --warn-foreground: 46, 97%, 5%; + + --alert: 0 100% 45%; + --alert-foreground: 0 100% 95%; + + --success: 152, 56%, 39%; + + --primary: 20 6% 94%; + --primary-foreground: 20 6% 10%; + + --secondary: 24 10% 10%; + --secondary-foreground: 24 10% 100%; + + --content: 240 10% 90%; + --content-subtle: 240 3.8% 46.1%; + --content-warn: 46, 100%, 55%; + --content-alert: 0 84.2% 60.2%; + + --border: 12, 6%, 15%; + --ring: 12, 6%, 15%; + } +} + +@layer base { + * { + @apply border-border; + } + + html { + @apply scroll-smooth; + } + + body { + @apply bg-background text-content; + } +} + +code { + counter-reset: step; + counter-increment: step 0; + white-space: break-spaces; +} + +code .line::before { + content: counter(step); + counter-increment: step; + width: 1rem; + margin-right: 1.5rem; + display: inline-block; + text-align: right; + color: rgba(115, 138, 148, 0.4); +} + +@keyframes fillLeft { + from { + transform: translateX(-100%); + } + + to { + transform: translateX(0); + } +} + +/* For Webkit-based browsers (Chrome, Safari and Opera) */ +.scrollbar-hide::-webkit-scrollbar { + display: none; +} + +/* For IE, Edge and Firefox */ +.scrollbar-hide { + -ms-overflow-style: none; + /* IE and Edge */ + scrollbar-width: none; + /* Firefox */ +} + +.animate-fill-left { + animation: fillLeft 1s ease-in-out; +} diff --git a/apps/engineering/app/layout.tsx b/apps/engineering/app/layout.tsx index 567c63a1aae..208fae9c9f3 100644 --- a/apps/engineering/app/layout.tsx +++ b/apps/engineering/app/layout.tsx @@ -4,8 +4,9 @@ import { GeistSans } from "geist/font/sans"; import type { ReactNode } from "react"; -import { TooltipProvider } from "@unkey/ui/src/components/tooltip"; import "./global.css"; +import "@unkey/ui/css"; +import { TooltipProvider } from "@unkey/ui/src/components/tooltip"; export default function Layout({ children }: { children: ReactNode }) { return ( diff --git a/apps/engineering/content/design/components/buttons/visual-button.examples.tsx b/apps/engineering/content/design/components/buttons/visual-button.examples.tsx new file mode 100644 index 00000000000..74d22f86c8f --- /dev/null +++ b/apps/engineering/content/design/components/buttons/visual-button.examples.tsx @@ -0,0 +1,42 @@ +"use client"; + +import { RenderComponentWithSnippet } from "@/app/components/render"; +import { VisibleButton } from "@unkey/ui"; +import { useState } from "react"; + +export function VisibleButtonDemo() { + const [isVisible, setIsVisible] = useState(false); + + return ( + +
+
Default Variant
+
+ + {isVisible ? "Content is visible" : "Content is hidden"} + + +
+
Ghost Variant
+
+ + {isVisible ? "sk_1234567890abcdef" : "••••••••••••••••"} + + +
+
+
+ ); +} diff --git a/apps/engineering/content/design/components/buttons/visual-button.mdx b/apps/engineering/content/design/components/buttons/visual-button.mdx new file mode 100644 index 00000000000..e1998121654 --- /dev/null +++ b/apps/engineering/content/design/components/buttons/visual-button.mdx @@ -0,0 +1,73 @@ +--- +title: VisibleButton +description: A toggle button that switches between visible and hidden states, commonly used for showing/hiding sensitive information. +--- +import { VisibleButtonDemo } from "./visual-button.examples" + +## Features + +- Toggle between visible/hidden states. +- Accessible with screen readers. +- Dark mode support. +- Customizable styling through `className` prop. +- Configurable button `variant`. + +## Usage + +```tsx +import { useState } from 'react'; +import { VisibleButton } from '@unkey/ui'; + +function Example() { + const [isVisible, setIsVisible] = useState(false); + + return ( +
+ + {isVisible ? "Sensitive content" : "•••••••"} +
+ ); +} +``` + +## Examples + + + +## Props + +| Prop | Type | Description | +|------|------|-------------| +| `isVisible` | `boolean` | Current visibility state | +| `setIsVisible` | `(visible: boolean) => void` | Function to update visibility state | +| `className` | `string` | Optional CSS classes to apply to the button | +| `title` | `string` | Text used for accessibility labels and tooltip | +| `variant` | `ButtonProps["variant"]` | Optional button variant (defaults to "outline") | + +Additional props are forwarded to the underlying `Button` component. See [Button component](/design/components/buttons/button) for more details. + +## Behavior + +1. Clicking the button toggles between visible (Eye icon) and hidden (EyeSlash icon) states. +2. The button's aria-label and title attributes update based on the current state and provided title prop. + +## Accessibility + +- Includes dynamic aria-labels based on the title prop. +- Uses semantic button element with proper ARIA attributes. +- Maintains focus states for keyboard navigation. +- Shows tooltip on hover with current action. + +## Design + +The button features: +- A minimal, circular design. +- Icon-based state indication (Eye/EyeSlash). +- Hover and focus states. +- Dark mode support. +- Responsive sizing (inherits from Button component). diff --git a/apps/engineering/package.json b/apps/engineering/package.json index fd2c8c5394e..643b766eb4c 100644 --- a/apps/engineering/package.json +++ b/apps/engineering/package.json @@ -24,15 +24,21 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-element-to-jsx-string": "^15.0.0", + "tailwind-merge": "^2.5.4", + "tailwindcss": "^3.4.3", "zod": "^3.23.8" }, "devDependencies": { + "@tailwindcss/aspect-ratio": "^0.4.2", + "@tailwindcss/container-queries": "^0.1.1", + "@tailwindcss/typography": "^0.5.12", "@types/node": "22.5.4", "@types/react": "^18.3.11", "@types/react-dom": "^18.3.0", "autoprefixer": "^10.4.20", "postcss": "^8.4.45", "tailwindcss": "^3.4.10", + "tailwindcss-animate": "^1.0.7", "typescript": "^5.5.4" } } diff --git a/apps/engineering/tailwind.config.js b/apps/engineering/tailwind.config.js index 9fa5dd1d5e0..35782308338 100644 --- a/apps/engineering/tailwind.config.js +++ b/apps/engineering/tailwind.config.js @@ -1,7 +1,8 @@ -import unkeyUiTailwindConfig from "@unkey/ui/tailwind.config"; +import defaultTheme from "@unkey/ui/tailwind.config"; import { createPreset } from "fumadocs-ui/tailwind-plugin"; /** @type {import('tailwindcss').Config} */ -export default { +module.exports = { + darkMode: ["class"], content: [ "./components/**/*.{ts,tsx}", "./app/**/*.{ts,tsx}", @@ -11,7 +12,163 @@ export default { "../../internal/ui/src/**/*.tsx", "../../internal/icons/src/**/*.tsx", ], + theme: merge(defaultTheme.theme, { + /** + * We need to remove almost all of these and move them into `@unkey/ui`. + * Especially colors and font sizes need to go + */ + fontSize: { + xxs: ["10px", "16px"], + xs: ["0.75rem", { lineHeight: "1rem" }], + sm: ["0.875rem", { lineHeight: "1.5rem" }], + base: ["1rem", { lineHeight: "1.75rem" }], + lg: ["1.125rem", { lineHeight: "1.75rem" }], + xl: ["1.25rem", { lineHeight: "2rem" }], + "2xl": ["1.5rem", { lineHeight: "2.25rem" }], + "3xl": ["1.75rem", { lineHeight: "2.25rem" }], + "4xl": ["2rem", { lineHeight: "2.5rem" }], + "5xl": ["2.5rem", { lineHeight: "3rem" }], + "6xl": ["3rem", { lineHeight: "3.5rem" }], + "7xl": ["4rem", { lineHeight: "4.5rem" }], + }, + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px", + }, + }, - theme: unkeyUiTailwindConfig.theme, + colors: { + current: "currentColor", + transparent: "transparent", + white: "hsl(var(--white))", + black: "hsl(var(--black))", + gray: { + 50: "#fafaf9", + 100: "#f5f5f4", + 200: "#e7e5e4", + 300: "#d6d3d1", + 400: "#a8a29e", + 500: "#78716c", + 600: "#57534e", + 700: "#44403c", + 800: "#292524", + 900: "#1c1917", + 950: "#0c0a09", + }, + background: { + DEFAULT: "hsl(var(--background))", + subtle: "hsl(var(--background-subtle))", + }, + content: { + DEFAULT: "hsl(var(--content))", + subtle: "hsl(var(--content-subtle))", + info: "hsl(var(--content-info))", + warn: "hsl(var(--content-warn))", + alert: "hsl(var(--content-alert))", + }, + + brand: { + DEFAULT: "hsl(var(--brand))", + foreground: "hsl(var(--brand-foreground))", + }, + + warn: { + DEFAULT: "hsl(var(--warn))", + foreground: "hsl(var(--warn-foreground))", + }, + + alert: { + DEFAULT: "hsl(var(--alert))", + foreground: "hsl(var(--alert-foreground))", + }, + success: { + DEFAULT: "hsl(var(--success))", + }, + + "amber-2": "var(--amber-2)", + "amber-3": "var(--amber-3)", + "amber-4": "var(--amber-4)", + "amber-6": "var(--amber-6)", + "amber-11": "var(--amber-11)", + + "red-2": "var(--red-2)", + "red-3": "var(--red-3)", + "red-4": "var(--red-4)", + "red-6": "var(--red-6)", + "red-11": "var(--red-11)", + + subtle: { + DEFAULT: "hsl(var(--subtle))", + foreground: "hsl(var(--subtle-foreground))", + }, + + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + + border: "hsl(var(--border))", + ring: "hsl(var(--ring))", + }, + extend: { + keyframes: { + "accordion-down": { + from: { height: 0 }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: 0 }, + }, + "shiny-text": { + "0%, 90%, 100%": { + "background-position": "calc(-100% - var(--shiny-width)) 0", + }, + "30%, 60%": { + "background-position": "calc(100% + var(--shiny-width)) 0", + }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + "shiny-text": "shiny-text 10s infinite", + }, + fontFamily: { + sans: ["var(--font-geist-sans)"], + mono: ["var(--font-geist-mono)"], + }, + }, + }), + plugins: [ + require("tailwindcss-animate"), + require("@tailwindcss/typography"), + require("@tailwindcss/aspect-ratio"), + require("@tailwindcss/container-queries"), + ], presets: [createPreset()], }; + +export function merge(obj1, obj2) { + for (const key in obj2) { + // biome-ignore lint/suspicious/noPrototypeBuiltins: don't tell me what to do + if (obj2.hasOwnProperty(key)) { + if (typeof obj2[key] === "object" && !Array.isArray(obj2[key])) { + if (!obj1[key]) { + obj1[key] = {}; + } + obj1[key] = merge(obj1[key], obj2[key]); + } else { + obj1[key] = obj2[key]; + } + } + } + return obj1; +} diff --git a/internal/ui/src/components/visible-button.tsx b/internal/ui/src/components/visible-button.tsx new file mode 100644 index 00000000000..54c2be3f9e0 --- /dev/null +++ b/internal/ui/src/components/visible-button.tsx @@ -0,0 +1,49 @@ +"use client"; +import { Eye, EyeSlash } from "@unkey/icons"; +// biome-ignore lint: React in this context is used throughout, so biome will change to types because no APIs are used even though React is needed. +import * as React from "react"; +import { cn } from "../lib/utils"; +import { Button, type ButtonProps } from "./button"; + +type VisibleButtonProps = ButtonProps & { + /** + * Current visibility state + */ + isVisible: boolean; + /** + * Function to set the visibility state + */ + setIsVisible: (visible: boolean) => void; + /** + * Variant of the button + */ + variant?: ButtonProps["variant"]; +}; + +export function VisibleButton({ + isVisible, + setIsVisible, + variant = "outline", + title, + onClick, + className, + ...rest +}: VisibleButtonProps) { + return ( + + ); +} diff --git a/internal/ui/src/index.ts b/internal/ui/src/index.ts index c7083321b0a..04037e24c53 100644 --- a/internal/ui/src/index.ts +++ b/internal/ui/src/index.ts @@ -19,3 +19,4 @@ export * from "./components/timestamp-info"; export * from "./components/tooltip"; export * from "./components/keyboard-button"; export * from "./components/separator"; +export * from "./components/visible-button"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8b4fb17d26a..0acc70382c6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -491,10 +491,25 @@ importers: react-element-to-jsx-string: specifier: ^15.0.0 version: 15.0.0(react-dom@18.3.1)(react@18.3.1) + tailwind-merge: + specifier: ^2.5.4 + version: 2.5.4 + tailwindcss: + specifier: ^3.4.3 + version: 3.4.15 zod: specifier: 3.23.8 version: 3.23.8 devDependencies: + '@tailwindcss/aspect-ratio': + specifier: ^0.4.2 + version: 0.4.2(tailwindcss@3.4.15) + '@tailwindcss/container-queries': + specifier: ^0.1.1 + version: 0.1.1(tailwindcss@3.4.15) + '@tailwindcss/typography': + specifier: ^0.5.12 + version: 0.5.12(tailwindcss@3.4.15) '@types/node': specifier: 22.5.4 version: 22.5.4 @@ -510,9 +525,9 @@ importers: postcss: specifier: ^8.4.45 version: 8.4.45 - tailwindcss: - specifier: ^3.4.10 - version: 3.4.15 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.15) typescript: specifier: ^5.5.4 version: 5.7.3 @@ -611,7 +626,7 @@ importers: devDependencies: checkly: specifier: latest - version: 4.19.1(@types/node@20.14.9)(typescript@5.5.3) + version: 5.2.0(@types/node@20.14.9)(typescript@5.5.3) ts-node: specifier: 10.9.1 version: 10.9.1(@types/node@20.14.9)(typescript@5.5.3) @@ -4258,6 +4273,23 @@ packages: dev: true optional: true + /@inquirer/checkbox@4.1.8(@types/node@20.14.9): + resolution: {integrity: sha512-d/QAsnwuHX2OPolxvYcgSj7A9DO9H6gVOy2DvBTx+P2LH2iRTo/RSGV3iwCzW024nP9hw98KIuDmdyhZQj1UQg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@inquirer/core': 10.1.13(@types/node@20.14.9) + '@inquirer/figures': 1.0.12 + '@inquirer/type': 3.0.7(@types/node@20.14.9) + '@types/node': 20.14.9 + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + dev: true + /@inquirer/checkbox@4.1.8(@types/node@22.14.0): resolution: {integrity: sha512-d/QAsnwuHX2OPolxvYcgSj7A9DO9H6gVOy2DvBTx+P2LH2iRTo/RSGV3iwCzW024nP9hw98KIuDmdyhZQj1UQg==} engines: {node: '>=18'} @@ -4343,6 +4375,21 @@ packages: yoctocolors-cjs: 2.1.2 dev: true + /@inquirer/editor@4.2.13(@types/node@20.14.9): + resolution: {integrity: sha512-WbicD9SUQt/K8O5Vyk9iC2ojq5RHoCLK6itpp2fHsWe44VxxcA9z3GTWlvjSTGmMQpZr+lbVmrxdHcumJoLbMA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@inquirer/core': 10.1.13(@types/node@20.14.9) + '@inquirer/type': 3.0.7(@types/node@20.14.9) + '@types/node': 20.14.9 + external-editor: 3.1.0 + dev: true + /@inquirer/editor@4.2.13(@types/node@22.14.0): resolution: {integrity: sha512-WbicD9SUQt/K8O5Vyk9iC2ojq5RHoCLK6itpp2fHsWe44VxxcA9z3GTWlvjSTGmMQpZr+lbVmrxdHcumJoLbMA==} engines: {node: '>=18'} @@ -4358,6 +4405,21 @@ packages: external-editor: 3.1.0 dev: true + /@inquirer/expand@4.0.15(@types/node@20.14.9): + resolution: {integrity: sha512-4Y+pbr/U9Qcvf+N/goHzPEXiHH8680lM3Dr3Y9h9FFw4gHS+zVpbj8LfbKWIb/jayIB4aSO4pWiBTrBYWkvi5A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@inquirer/core': 10.1.13(@types/node@20.14.9) + '@inquirer/type': 3.0.7(@types/node@20.14.9) + '@types/node': 20.14.9 + yoctocolors-cjs: 2.1.2 + dev: true + /@inquirer/expand@4.0.15(@types/node@22.14.0): resolution: {integrity: sha512-4Y+pbr/U9Qcvf+N/goHzPEXiHH8680lM3Dr3Y9h9FFw4gHS+zVpbj8LfbKWIb/jayIB4aSO4pWiBTrBYWkvi5A==} engines: {node: '>=18'} @@ -4378,6 +4440,20 @@ packages: engines: {node: '>=18'} dev: true + /@inquirer/input@4.1.12(@types/node@20.14.9): + resolution: {integrity: sha512-xJ6PFZpDjC+tC1P8ImGprgcsrzQRsUh9aH3IZixm1lAZFK49UGHxM3ltFfuInN2kPYNfyoPRh+tU4ftsjPLKqQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@inquirer/core': 10.1.13(@types/node@20.14.9) + '@inquirer/type': 3.0.7(@types/node@20.14.9) + '@types/node': 20.14.9 + dev: true + /@inquirer/input@4.1.12(@types/node@22.14.0): resolution: {integrity: sha512-xJ6PFZpDjC+tC1P8ImGprgcsrzQRsUh9aH3IZixm1lAZFK49UGHxM3ltFfuInN2kPYNfyoPRh+tU4ftsjPLKqQ==} engines: {node: '>=18'} @@ -4392,6 +4468,20 @@ packages: '@types/node': 22.14.0 dev: true + /@inquirer/number@3.0.15(@types/node@20.14.9): + resolution: {integrity: sha512-xWg+iYfqdhRiM55MvqiTCleHzszpoigUpN5+t1OMcRkJrUrw7va3AzXaxvS+Ak7Gny0j2mFSTv2JJj8sMtbV2g==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@inquirer/core': 10.1.13(@types/node@20.14.9) + '@inquirer/type': 3.0.7(@types/node@20.14.9) + '@types/node': 20.14.9 + dev: true + /@inquirer/number@3.0.15(@types/node@22.14.0): resolution: {integrity: sha512-xWg+iYfqdhRiM55MvqiTCleHzszpoigUpN5+t1OMcRkJrUrw7va3AzXaxvS+Ak7Gny0j2mFSTv2JJj8sMtbV2g==} engines: {node: '>=18'} @@ -4406,6 +4496,21 @@ packages: '@types/node': 22.14.0 dev: true + /@inquirer/password@4.0.15(@types/node@20.14.9): + resolution: {integrity: sha512-75CT2p43DGEnfGTaqFpbDC2p2EEMrq0S+IRrf9iJvYreMy5mAWj087+mdKyLHapUEPLjN10mNvABpGbk8Wdraw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@inquirer/core': 10.1.13(@types/node@20.14.9) + '@inquirer/type': 3.0.7(@types/node@20.14.9) + '@types/node': 20.14.9 + ansi-escapes: 4.3.2 + dev: true + /@inquirer/password@4.0.15(@types/node@22.14.0): resolution: {integrity: sha512-75CT2p43DGEnfGTaqFpbDC2p2EEMrq0S+IRrf9iJvYreMy5mAWj087+mdKyLHapUEPLjN10mNvABpGbk8Wdraw==} engines: {node: '>=18'} @@ -4421,6 +4526,28 @@ packages: ansi-escapes: 4.3.2 dev: true + /@inquirer/prompts@7.5.3(@types/node@20.14.9): + resolution: {integrity: sha512-8YL0WiV7J86hVAxrh3fE5mDCzcTDe1670unmJRz6ArDgN+DBK1a0+rbnNWp4DUB5rPMwqD5ZP6YHl9KK1mbZRg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@inquirer/checkbox': 4.1.8(@types/node@20.14.9) + '@inquirer/confirm': 5.1.12(@types/node@20.14.9) + '@inquirer/editor': 4.2.13(@types/node@20.14.9) + '@inquirer/expand': 4.0.15(@types/node@20.14.9) + '@inquirer/input': 4.1.12(@types/node@20.14.9) + '@inquirer/number': 3.0.15(@types/node@20.14.9) + '@inquirer/password': 4.0.15(@types/node@20.14.9) + '@inquirer/rawlist': 4.1.3(@types/node@20.14.9) + '@inquirer/search': 3.0.15(@types/node@20.14.9) + '@inquirer/select': 4.2.3(@types/node@20.14.9) + '@types/node': 20.14.9 + dev: true + /@inquirer/prompts@7.5.3(@types/node@22.14.0): resolution: {integrity: sha512-8YL0WiV7J86hVAxrh3fE5mDCzcTDe1670unmJRz6ArDgN+DBK1a0+rbnNWp4DUB5rPMwqD5ZP6YHl9KK1mbZRg==} engines: {node: '>=18'} @@ -4443,6 +4570,21 @@ packages: '@types/node': 22.14.0 dev: true + /@inquirer/rawlist@4.1.3(@types/node@20.14.9): + resolution: {integrity: sha512-7XrV//6kwYumNDSsvJIPeAqa8+p7GJh7H5kRuxirct2cgOcSWwwNGoXDRgpNFbY/MG2vQ4ccIWCi8+IXXyFMZA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@inquirer/core': 10.1.13(@types/node@20.14.9) + '@inquirer/type': 3.0.7(@types/node@20.14.9) + '@types/node': 20.14.9 + yoctocolors-cjs: 2.1.2 + dev: true + /@inquirer/rawlist@4.1.3(@types/node@22.14.0): resolution: {integrity: sha512-7XrV//6kwYumNDSsvJIPeAqa8+p7GJh7H5kRuxirct2cgOcSWwwNGoXDRgpNFbY/MG2vQ4ccIWCi8+IXXyFMZA==} engines: {node: '>=18'} @@ -4458,6 +4600,22 @@ packages: yoctocolors-cjs: 2.1.2 dev: true + /@inquirer/search@3.0.15(@types/node@20.14.9): + resolution: {integrity: sha512-YBMwPxYBrADqyvP4nNItpwkBnGGglAvCLVW8u4pRmmvOsHUtCAUIMbUrLX5B3tFL1/WsLGdQ2HNzkqswMs5Uaw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@inquirer/core': 10.1.13(@types/node@20.14.9) + '@inquirer/figures': 1.0.12 + '@inquirer/type': 3.0.7(@types/node@20.14.9) + '@types/node': 20.14.9 + yoctocolors-cjs: 2.1.2 + dev: true + /@inquirer/search@3.0.15(@types/node@22.14.0): resolution: {integrity: sha512-YBMwPxYBrADqyvP4nNItpwkBnGGglAvCLVW8u4pRmmvOsHUtCAUIMbUrLX5B3tFL1/WsLGdQ2HNzkqswMs5Uaw==} engines: {node: '>=18'} @@ -4474,6 +4632,23 @@ packages: yoctocolors-cjs: 2.1.2 dev: true + /@inquirer/select@4.2.3(@types/node@20.14.9): + resolution: {integrity: sha512-OAGhXU0Cvh0PhLz9xTF/kx6g6x+sP+PcyTiLvCrewI99P3BBeexD+VbuwkNDvqGkk3y2h5ZiWLeRP7BFlhkUDg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@inquirer/core': 10.1.13(@types/node@20.14.9) + '@inquirer/figures': 1.0.12 + '@inquirer/type': 3.0.7(@types/node@20.14.9) + '@types/node': 20.14.9 + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + dev: true + /@inquirer/select@4.2.3(@types/node@22.14.0): resolution: {integrity: sha512-OAGhXU0Cvh0PhLz9xTF/kx6g6x+sP+PcyTiLvCrewI99P3BBeexD+VbuwkNDvqGkk3y2h5ZiWLeRP7BFlhkUDg==} engines: {node: '>=18'} @@ -5376,89 +5551,28 @@ packages: fastq: 1.19.1 dev: true - /@oclif/color@1.0.13: - resolution: {integrity: sha512-/2WZxKCNjeHlQogCs1VBtJWlPXjwWke/9gMrwsVsrUt00g2V6LUBvwgwrxhrXepjOmq4IZ5QeNbpDMEOUlx/JA==} - engines: {node: '>=12.0.0'} - dependencies: - ansi-styles: 4.3.0 - chalk: 4.1.2 - strip-ansi: 6.0.1 - supports-color: 8.1.1 - tslib: 2.8.1 - dev: true - - /@oclif/core@1.26.2: - resolution: {integrity: sha512-6jYuZgXvHfOIc9GIaS4T3CIKGTjPmfAxuMcbCbMRKJJl4aq/4xeRlEz0E8/hz8HxvxZBGvN2GwAUHlrGWQVrVw==} - engines: {node: '>=14.0.0'} - dependencies: - '@oclif/linewrap': 1.0.0 - '@oclif/screen': 3.0.8 - ansi-escapes: 4.3.2 - ansi-styles: 4.3.0 - cardinal: 2.1.1 - chalk: 4.1.2 - clean-stack: 3.0.1 - cli-progress: 3.12.0 - debug: 4.4.1(supports-color@8.1.1) - ejs: 3.1.10 - fs-extra: 9.1.0 - get-package-type: 0.1.0 - globby: 11.1.0 - hyperlinker: 1.0.0 - indent-string: 4.0.0 - is-wsl: 2.2.0 - js-yaml: 3.14.1 - natural-orderby: 2.0.3 - object-treeify: 1.1.33 - password-prompt: 1.1.3 - semver: 7.7.2 - string-width: 4.2.3 - strip-ansi: 6.0.1 - supports-color: 8.1.1 - supports-hyperlinks: 2.3.0 - tslib: 2.8.1 - widest-line: 3.1.0 - wrap-ansi: 7.0.0 - dev: true - - /@oclif/core@2.8.11(@types/node@20.14.9)(typescript@5.5.3): - resolution: {integrity: sha512-9wYW6KRSWfB/D+tqeyl/jxmEz/xPXkFJGVWfKaptqHz6FPWNJREjAM945MuJL2Y8NRhMe+ScRlZ3WpdToX5aVQ==} - engines: {node: '>=14.0.0'} + /@oclif/core@4.2.8: + resolution: {integrity: sha512-OWv4Va6bERxIhrYcnUGzyhGRqktc64lJO6cZ3UwkzJDpfR8ZrbCxRfKRBBah1i8kzUlOAeAXnpbMBMah3skKwA==} + engines: {node: '>=18.0.0'} dependencies: - '@types/cli-progress': 3.11.6 ansi-escapes: 4.3.2 - ansi-styles: 4.3.0 - cardinal: 2.1.1 - chalk: 4.1.2 + ansis: 3.17.0 clean-stack: 3.0.1 - cli-progress: 3.12.0 + cli-spinners: 2.9.2 debug: 4.4.1(supports-color@8.1.1) ejs: 3.1.10 - fs-extra: 9.1.0 get-package-type: 0.1.0 globby: 11.1.0 - hyperlinker: 1.0.0 indent-string: 4.0.0 is-wsl: 2.2.0 - js-yaml: 3.14.1 - natural-orderby: 2.0.3 - object-treeify: 1.1.33 - password-prompt: 1.1.3 + lilconfig: 3.1.3 + minimatch: 9.0.5 semver: 7.7.2 string-width: 4.2.3 - strip-ansi: 6.0.1 supports-color: 8.1.1 - supports-hyperlinks: 2.3.0 - ts-node: 10.9.1(@types/node@20.14.9)(typescript@5.5.3) - tslib: 2.8.1 widest-line: 3.1.0 wordwrap: 1.0.0 wrap-ansi: 7.0.0 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - typescript dev: true /@oclif/core@4.3.3: @@ -5485,34 +5599,27 @@ packages: wrap-ansi: 7.0.0 dev: true - /@oclif/linewrap@1.0.0: - resolution: {integrity: sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==} - dev: true - - /@oclif/plugin-help@5.1.20: - resolution: {integrity: sha512-N8xRxE/isFcdBDI8cobixEZA5toxIK5jbxpwALNTr4s8KNAtBA3ORQrSiY0fWGkcv0sCGMwZw7rJ0Izh18JPsw==} - engines: {node: '>=12.0.0'} + /@oclif/plugin-help@6.2.26: + resolution: {integrity: sha512-5KdldxEizbV3RsHOddN4oMxrX/HL6z79S94tbxEHVZ/dJKDWzfyCpgC9axNYqwmBF2pFZkozl/l7t3hCGOdalw==} + engines: {node: '>=18.0.0'} dependencies: - '@oclif/core': 1.26.2 + '@oclif/core': 4.3.3 dev: true - /@oclif/plugin-not-found@2.3.23(@types/node@20.14.9)(typescript@5.5.3): - resolution: {integrity: sha512-UZM8aolxXvqwH8WcmJxRNASDWgMoSQm/pgCdkc1AGCRevYc8+LBSO+U6nLWq+Dx8H/dn9RyIv5oiUIOGkKDlZA==} - engines: {node: '>=12.0.0'} + /@oclif/plugin-not-found@3.2.44(@types/node@20.14.9): + resolution: {integrity: sha512-UF6GD/aDbElP6LJMZSSq72NvK0aQwtQ+fkjn0VLU9o1vNAA3M2K0tGL7lduZGQNw8LejOhr25eR4aXeRCgKb2A==} + engines: {node: '>=18.0.0'} dependencies: - '@oclif/color': 1.0.13 - '@oclif/core': 2.8.11(@types/node@20.14.9)(typescript@5.5.3) + '@inquirer/prompts': 7.5.3(@types/node@20.14.9) + '@oclif/core': 4.3.3 + ansis: 3.17.0 fast-levenshtein: 3.0.0 - lodash: 4.17.21 transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - '@types/node' - - typescript dev: true - /@oclif/plugin-plugins@5.4.4: - resolution: {integrity: sha512-p30fo3JPtbOqTJOX9A/8qKV/14XWt8xFgG/goVfIkuKBAO+cdY78ag8pYatlpzsYzJhO27X1MFn0WkkPWo36Ww==} + /@oclif/plugin-plugins@5.4.34: + resolution: {integrity: sha512-19sX+tHyR6M24GHbnedqqtk6w9QBgFZoa1y4zPmHf6VYaBeBmMBaq2dsLsdG0zv8LnWxaqguocICoxZTrV9f6A==} engines: {node: '>=18.0.0'} dependencies: '@oclif/core': 4.3.3 @@ -5530,29 +5637,18 @@ packages: - supports-color dev: true - /@oclif/plugin-warn-if-update-available@2.0.24(@types/node@20.14.9)(typescript@5.5.3): - resolution: {integrity: sha512-Rq8/EZ8wQawvPWS6W59Zhf/zSz/umLc3q75I1ybi7pul6YMNwf/E1eDVHytSUEQ6yQV+p3cCs034IItz4CVdjw==} - engines: {node: '>=12.0.0'} + /@oclif/plugin-warn-if-update-available@3.1.35: + resolution: {integrity: sha512-gQfFW0UfT3msq/3O3idgBq4CA3cyXzFtrkoG7MK4FXVK0wxIdG0EVgJn4/o3jqjWO7t+93siCXyq56CGTGUZWQ==} + engines: {node: '>=18.0.0'} dependencies: - '@oclif/core': 2.8.11(@types/node@20.14.9)(typescript@5.5.3) - chalk: 4.1.2 + '@oclif/core': 4.3.3 + ansis: 3.17.0 debug: 4.4.1(supports-color@8.1.1) - fs-extra: 9.1.0 http-call: 5.3.0 lodash: 4.17.21 - semver: 7.7.2 + registry-auth-token: 5.1.0 transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@types/node' - supports-color - - typescript - dev: true - - /@oclif/screen@3.0.8: - resolution: {integrity: sha512-yx6KAqlt3TAHBduS2fMQtJDL2ufIHnDRArrJEOoTTuizxqmjLT+psGYOHpmMl3gvQpFJ11Hs76guUUktzAF9Bg==} - engines: {node: '>=12.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dev: true /@octokit/auth-token@2.5.0: @@ -6194,6 +6290,27 @@ packages: engines: {node: '>=16'} dev: false + /@pnpm/config.env-replace@1.1.0: + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + dev: true + + /@pnpm/network.ca-file@1.0.2: + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + dependencies: + graceful-fs: 4.2.10 + dev: true + + /@pnpm/npm-conf@2.3.1: + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} + engines: {node: '>=12'} + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + dev: true + /@polka/url@1.0.0-next.29: resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} dev: true @@ -9610,7 +9727,6 @@ packages: tailwindcss: '>=3.2.0' dependencies: tailwindcss: 3.4.15 - dev: false /@tailwindcss/typography@0.5.12(tailwindcss@3.4.15): resolution: {integrity: sha512-CNwpBpconcP7ppxmuq3qvaCxiRWnbhANpY/ruH4L5qs2GCiVDJXde/pjj2HWPV1+Q4G9+V/etrwUYopdcjAlyg==} @@ -9622,7 +9738,6 @@ packages: lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 tailwindcss: 3.4.15 - dev: false /@tailwindcss/typography@0.5.16(tailwindcss@3.4.15): resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==} @@ -9817,7 +9932,7 @@ packages: /@types/accepts@1.3.7: resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} dependencies: - '@types/node': 22.14.0 + '@types/node': 20.14.9 dev: false /@types/aria-query@5.0.4: @@ -9828,19 +9943,13 @@ packages: resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} dependencies: '@types/connect': 3.4.38 - '@types/node': 22.14.0 - dev: false - - /@types/cli-progress@3.11.6: - resolution: {integrity: sha512-cE3+jb9WRlu+uOSAugewNpITJDt1VF8dHOopPO4IABFc3SXYL5WE/+PTz/FCdZRRfIujiWW3n3aMbv1eIGVRWA==} - dependencies: '@types/node': 20.14.9 - dev: true + dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 22.14.0 + '@types/node': 20.14.9 dev: false /@types/content-disposition@0.5.9: @@ -9850,7 +9959,7 @@ packages: /@types/conventional-commits-parser@5.0.1: resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} dependencies: - '@types/node': 22.14.0 + '@types/node': 20.14.9 dev: true optional: true @@ -9872,7 +9981,7 @@ packages: '@types/connect': 3.4.38 '@types/express': 4.17.23 '@types/keygrip': 1.0.6 - '@types/node': 22.14.0 + '@types/node': 20.14.9 dev: false /@types/cors@2.8.19: @@ -9985,7 +10094,7 @@ packages: /@types/express-serve-static-core@4.19.6: resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} dependencies: - '@types/node': 22.14.0 + '@types/node': 20.14.9 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 0.17.5 @@ -10044,7 +10153,7 @@ packages: '@types/http-errors': 2.0.5 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 22.14.0 + '@types/node': 20.14.9 dev: false /@types/mdast@4.0.4: @@ -10145,14 +10254,14 @@ packages: resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} dependencies: '@types/mime': 1.3.5 - '@types/node': 22.14.0 + '@types/node': 20.14.9 dev: false /@types/serve-static@1.15.8: resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.14.0 + '@types/node': 20.14.9 '@types/send': 0.17.5 dev: false @@ -10224,39 +10333,36 @@ packages: dev: true optional: true - /@typescript-eslint/types@6.19.0: - resolution: {integrity: sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/types@8.24.1: + resolution: {integrity: sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@typescript-eslint/typescript-estree@6.19.0(typescript@5.5.3): - resolution: {integrity: sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/typescript-estree@8.24.1(typescript@5.5.3): + resolution: {integrity: sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.8.0' dependencies: - '@typescript-eslint/types': 6.19.0 - '@typescript-eslint/visitor-keys': 6.19.0 + '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/visitor-keys': 8.24.1 debug: 4.4.1(supports-color@8.1.1) - globby: 11.1.0 + fast-glob: 3.3.3 is-glob: 4.0.3 - minimatch: 9.0.3 + minimatch: 9.0.5 semver: 7.7.2 - ts-api-utils: 1.4.3(typescript@5.5.3) + ts-api-utils: 2.1.0(typescript@5.5.3) typescript: 5.5.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/visitor-keys@6.19.0: - resolution: {integrity: sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/visitor-keys@8.24.1: + resolution: {integrity: sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 6.19.0 - eslint-visitor-keys: 3.4.3 + '@typescript-eslint/types': 8.24.1 + eslint-visitor-keys: 4.2.1 dev: true /@typescript/vfs@1.6.1(typescript@5.7.3): @@ -10710,11 +10816,6 @@ packages: dependencies: acorn: 8.15.0 - /acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - dev: true - /acorn-walk@8.3.2: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} @@ -10738,12 +10839,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - /acorn@8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - /address@1.2.2: resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} engines: {node: '>= 10.0.0'} @@ -10959,10 +11054,6 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - /ansicolors@0.3.2: - resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} - dev: true - /ansis@3.17.0: resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} engines: {node: '>=14'} @@ -11571,14 +11662,6 @@ packages: /caniuse-lite@1.0.30001722: resolution: {integrity: sha512-DCQHBBZtiK6JVkAGw7drvAMK0Q0POD/xZvEmDp6baiMMP6QXXk9HpD6mNYBZWhOPG6LvIDb82ITqtWjhDckHCA==} - /cardinal@2.1.1: - resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} - hasBin: true - dependencies: - ansicolors: 0.3.2 - redeyed: 2.1.1 - dev: true - /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -11672,19 +11755,19 @@ packages: engines: {node: '>= 16'} dev: true - /checkly@4.19.1(@types/node@20.14.9)(typescript@5.5.3): - resolution: {integrity: sha512-KtUzvKWvY4Pa1O2is7s4UK9w3X4G8jVsYntdXLDzwfajsg22bq4qa+n3w2uZehGmbIrUmL638alG76XrRQ5PDQ==} - engines: {node: '>=16.0.0'} + /checkly@5.2.0(@types/node@20.14.9)(typescript@5.5.3): + resolution: {integrity: sha512-y5VEdxuVfI66hEOMQlGKzcQsncCdewtG9ocKyA963MeOTW79v7a9dqHUJQLmBwLtUybaHVFXj7ha1RR57no9SA==} + engines: {node: '>=18.0.0'} hasBin: true dependencies: - '@oclif/core': 2.8.11(@types/node@20.14.9)(typescript@5.5.3) - '@oclif/plugin-help': 5.1.20 - '@oclif/plugin-not-found': 2.3.23(@types/node@20.14.9)(typescript@5.5.3) - '@oclif/plugin-plugins': 5.4.4 - '@oclif/plugin-warn-if-update-available': 2.0.24(@types/node@20.14.9)(typescript@5.5.3) - '@typescript-eslint/typescript-estree': 6.19.0(typescript@5.5.3) - acorn: 8.8.1 - acorn-walk: 8.2.0 + '@oclif/core': 4.2.8 + '@oclif/plugin-help': 6.2.26 + '@oclif/plugin-not-found': 3.2.44(@types/node@20.14.9) + '@oclif/plugin-plugins': 5.4.34 + '@oclif/plugin-warn-if-update-available': 3.1.35 + '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.5.3) + acorn: 8.14.0 + acorn-walk: 8.3.4 axios: 1.7.4 chalk: 4.1.2 ci-info: 3.8.0 @@ -11707,8 +11790,6 @@ packages: tunnel: 0.0.6 uuid: 9.0.0 transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - '@types/node' - bufferutil - debug @@ -11841,13 +11922,6 @@ packages: restore-cursor: 4.0.0 dev: true - /cli-progress@3.12.0: - resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} - engines: {node: '>=4'} - dependencies: - string-width: 4.2.3 - dev: true - /cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} @@ -12099,7 +12173,6 @@ packages: dependencies: ini: 1.3.8 proto-list: 1.2.4 - dev: false /consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} @@ -12535,7 +12608,7 @@ packages: dependencies: is-arguments: 1.2.0 is-date-object: 1.1.0 - is-regex: 1.1.4 + is-regex: 1.2.1 object-is: 1.1.6 object-keys: 1.1.1 regexp.prototype.flags: 1.5.4 @@ -13542,11 +13615,11 @@ packages: /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false /eslint-visitor-keys@4.2.1: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: false /eslint@9.28.0: resolution: {integrity: sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==} @@ -14868,6 +14941,10 @@ packages: responselike: 3.0.0 dev: true + /graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -15301,11 +15378,6 @@ packages: ms: 2.1.3 dev: false - /hyperlinker@1.0.0: - resolution: {integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==} - engines: {node: '>=4'} - dev: true - /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -16328,7 +16400,6 @@ packages: /lodash.castarray@4.4.0: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} - dev: false /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -17174,13 +17245,6 @@ packages: brace-expansion: 2.0.2 dev: false - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.2 - dev: true - /minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -17209,6 +17273,7 @@ packages: /minipass@6.0.2: resolution: {integrity: sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==} engines: {node: '>=16 || 14 >=14.17'} + dev: true /minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} @@ -17442,10 +17507,6 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: false - /natural-orderby@2.0.3: - resolution: {integrity: sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==} - dev: true - /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -17868,11 +17929,6 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - /object-treeify@1.1.33: - resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} - engines: {node: '>= 10'} - dev: true - /object-treeify@4.0.1: resolution: {integrity: sha512-Y6tg5rHfsefSkfKujv2SwHulInROy/rCL5F4w0QOWxut8AnxYxf0YmNhTh95Zfyxpsudo66uqkux0ACFnyMSgQ==} engines: {node: '>= 16'} @@ -18298,13 +18354,6 @@ packages: engines: {node: '>= 0.8'} dev: true - /password-prompt@1.1.3: - resolution: {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} - dependencies: - ansi-escapes: 4.3.2 - cross-spawn: 7.0.6 - dev: true - /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} dev: false @@ -18338,7 +18387,7 @@ packages: engines: {node: '>=16 || 14 >=14.18'} dependencies: lru-cache: 10.4.3 - minipass: 6.0.2 + minipass: 7.1.2 /path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} @@ -18504,7 +18553,6 @@ packages: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - dev: false /postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} @@ -18538,7 +18586,7 @@ packages: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 - source-map-js: 1.0.2 + source-map-js: 1.2.1 dev: false /postcss@8.4.38: @@ -18709,7 +18757,6 @@ packages: /proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - dev: false /protobufjs@7.5.3: resolution: {integrity: sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==} @@ -19327,12 +19374,6 @@ packages: unified: 11.0.5 vfile: 6.0.3 - /redeyed@2.1.1: - resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} - dependencies: - esprima: 4.0.1 - dev: true - /reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} dev: true @@ -19389,6 +19430,13 @@ packages: gopd: 1.2.0 set-function-name: 2.0.2 + /registry-auth-token@5.1.0: + resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==} + engines: {node: '>=14'} + dependencies: + '@pnpm/npm-conf': 2.3.1 + dev: true + /rehype-katex@7.0.1: resolution: {integrity: sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==} dependencies: @@ -20706,14 +20754,6 @@ packages: engines: {node: '>=12'} dev: true - /supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - dev: true - /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -20811,7 +20851,6 @@ packages: tailwindcss: '>=3.0.0 || insiders' dependencies: tailwindcss: 3.4.15 - dev: false /tailwindcss@3.4.0: resolution: {integrity: sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==} @@ -20820,7 +20859,7 @@ packages: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 - chokidar: 3.5.3 + chokidar: 3.6.0 didyoumean: 1.2.2 dlv: 1.1.3 fast-glob: 3.3.3 @@ -21226,11 +21265,11 @@ packages: - zod dev: false - /ts-api-utils@1.4.3(typescript@5.5.3): - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} + /ts-api-utils@2.1.0(typescript@5.5.3): + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.2.0' + typescript: '>=4.8.4' dependencies: typescript: 5.5.3 dev: true