diff --git a/.gitignore b/.gitignore index 0eae589..4a6d3ff 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ dist lib dist-ssr *.local +.history # Editor directories and files .vscode/* @@ -23,3 +24,4 @@ dist-ssr *.njsproj *.sln *.sw? +.env diff --git a/package.json b/package.json index 58c3290..739dffc 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@commitlint/cli": "^19.0.0", "@commitlint/config-conventional": "^19.0.0", "@commitlint/types": "^19.0.0", + "@logto/tunnel": "^0.2.1", "husky": "^9.0.11", "typescript": "^5.3.3" }, diff --git a/packages/experience-components/.eslintrc.cjs b/packages/experience-components/.eslintrc.cjs deleted file mode 100644 index 40bcfa6..0000000 --- a/packages/experience-components/.eslintrc.cjs +++ /dev/null @@ -1,22 +0,0 @@ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - extends: '@silverhand/react', - rules: { - 'jsx-a11y/no-autofocus': 'off', - 'unicorn/prefer-string-replace-all': 'off', - }, - overrides: [ - { - files: ['*.config.js', '*.config.ts', '*.d.ts'], - rules: { - 'import/no-unused-modules': 'off', - }, - }, - { - files: ['*.d.ts'], - rules: { - 'import/no-unassigned-import': 'off', - }, - }, - ], -}; diff --git a/packages/experience-components/package.json b/packages/experience-components/package.json deleted file mode 100644 index bfdc87f..0000000 --- a/packages/experience-components/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "@logto/experience-components", - "author": "Silverhand Inc. ", - "license": "MIT", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "precommit": "lint-staged", - "lint": "eslint --ext .ts src" - }, - "main": "./src/index.ts", - "exports": { - ".": { - "types": "./src/index.ts", - "import": "./src/index.ts" - } - }, - "files": [ - "src" - ], - "devDependencies": { - "@eslint/js": "^9.8.0", - "@logto/experience-sample-toolkit": "workspace:^0.0.0", - "@silverhand/eslint-config": "^6.0.1", - "@silverhand/eslint-config-react": "^6.0.2", - "@silverhand/essentials": "^2.9.1", - "@silverhand/ts-config": "^6.0.0", - "@silverhand/ts-config-react": "^6.0.0", - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.0", - "@vitejs/plugin-react": "^3.1.0", - "classnames": "^2.5.1", - "eslint": "^8.56.0", - "lint-staged": "^15.0.0", - "postcss": "^8.4.31", - "postcss-modules": "^6.0.0", - "prettier": "^3.0.0", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "stylelint": "^15.0.0", - "typescript": "^5.5.3", - "typescript-eslint": "^8.0.0", - "use-debounced-loader": "^0.1.1", - "vite": "^5.4.6", - "vite-plugin-svgr": "^4.2.0" - }, - "engines": { - "node": "^20.9.0" - }, - "stylelint": { - "extends": "@silverhand/eslint-config-react/.stylelintrc" - }, - "prettier": "@silverhand/eslint-config/.prettierrc" -} diff --git a/packages/experience-components/src/Layout/PageLayout/index.module.scss b/packages/experience-components/src/Layout/PageLayout/index.module.scss deleted file mode 100644 index 20ee391..0000000 --- a/packages/experience-components/src/Layout/PageLayout/index.module.scss +++ /dev/null @@ -1,32 +0,0 @@ -@use '@logto/experience-sample-toolkit/scss/underscore' as _; - -.viewBox { - position: absolute; - inset: 0; - overflow: auto; -} - -.container { - min-height: 100%; - @include _.flex-column(center, center); - padding: _.unit(5) -} - -.main { - width: 540px; - min-height: 540px; - position: relative; - padding: _.unit(6); - border-radius: 16px; - background: var(--color-bg-float); - box-shadow: var(--color-shadow-2); - @include _.flex-column(center, center); -} - -.signature { - position: absolute; - bottom: 0; - transform: translateY(calc(100% + _.unit(7))); - // Have to use padding instead of margin. Overflow margin spacing will be ignored by the browser. - padding-bottom: _.unit(7); - } diff --git a/packages/experience-components/src/Layout/PageLayout/index.tsx b/packages/experience-components/src/Layout/PageLayout/index.tsx deleted file mode 100644 index e9a5932..0000000 --- a/packages/experience-components/src/Layout/PageLayout/index.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import LogtoSignature from '../../components/LogtoSignature'; - -import styles from './index.module.scss'; - -type Props = { - readonly children: React.ReactNode; -}; - -const PageLayout = ({ children }: Props) => { - return ( -
-
-
- {children} - -
-
-
- ); -}; - -export default PageLayout; diff --git a/packages/experience-components/src/assets/logto-logo-light.svg b/packages/experience-components/src/assets/logto-logo-light.svg deleted file mode 100644 index 27c09fb..0000000 --- a/packages/experience-components/src/assets/logto-logo-light.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/experience-components/src/assets/logto-logo-shadow.svg b/packages/experience-components/src/assets/logto-logo-shadow.svg deleted file mode 100644 index cfb3533..0000000 --- a/packages/experience-components/src/assets/logto-logo-shadow.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/packages/experience-components/src/components/Button/index.module.scss b/packages/experience-components/src/components/Button/index.module.scss deleted file mode 100644 index 5b23b5e..0000000 --- a/packages/experience-components/src/components/Button/index.module.scss +++ /dev/null @@ -1,101 +0,0 @@ -@use '@logto/experience-sample-toolkit/scss/underscore' as _; - -.button { - display: flex; - justify-content: center; - align-items: center; - height: 44px; - padding: 0 _.unit(4); - border-radius: 8px; - cursor: pointer; - font: var(--font-label-1); - -webkit-appearance: none; - appearance: none; - -webkit-tap-highlight-color: transparent; - transition: background 0.2s ease-in-out; - user-select: none; - overflow: hidden; - font: var(--font-label-2); - - .icon { - font-size: 0; - line-height: normal; - pointer-events: none; - transition: opacity 0.2s ease; - padding-right: _.unit(2); - } -} - -.large { - width: 100%; -} - -.small { - min-width: 85px; -} - -.primary { - border: none; - background: var(--color-brand-default); - color: var(--color-static-white); - - &.disabled, - &:disabled { - background: var(--color-bg-state-disabled); - color: var(--color-type-disable); - } - - &:active { - background: var(--color-brand-pressed); - } - - &.loading { - background-color: var(--color-brand-loading); - } - - &:focus-visible { - outline: 3px solid var(--color-overlay-brand-focused); - } - - &:not(:disabled):not(:active):not(.loading):hover { - background: var(--color-brand-hover); - } -} - -.secondary { - border: solid 1px var(--color-line-border); - background: transparent; - color: var(--color-type-primary); - - &.disabled, - &:disabled { - border-color: var(--color-type-disable); - color: var(--color-type-disable); - } - - &:active { - background: var(--color-overlay-neutral-pressed); - } - - &:focus-visible { - outline: 3px solid var(--color-overlay-neutral-focused); - } - - &:not(:disabled):not(:active):not(.loading):hover { - background: var(--color-overlay-neutral-hover); - } -} - -.loadingIcon { - animation: rotating 1s linear infinite; -} - -@keyframes rotating { - from { - transform: rotate(0deg); - } - - to { - transform: rotate(360deg); - } -} diff --git a/packages/experience-components/src/components/Button/index.tsx b/packages/experience-components/src/components/Button/index.tsx deleted file mode 100644 index e1e8e38..0000000 --- a/packages/experience-components/src/components/Button/index.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import classNames from 'classnames'; -import { type HTMLProps } from 'react'; -import { useDebouncedLoader } from 'use-debounced-loader'; - -import LoadingRing from '../../assets/loading-ring.svg?react'; - -import styles from './index.module.scss'; - -export type ButtonType = 'primary' | 'secondary'; - -type BaseProps = Omit, 'type' | 'size' | 'title'> & { - readonly htmlType?: 'button' | 'submit' | 'reset'; - readonly type?: ButtonType; - readonly size?: 'small' | 'large'; - readonly isDisabled?: boolean; - readonly isLoading?: boolean; - readonly className?: string; - readonly onClick?: React.MouseEventHandler; -}; - -type Props = BaseProps & { - readonly icon?: React.ReactNode; -}; - -const Button = ({ - htmlType = 'button', - type = 'primary', - size = 'large', - children, - className, - isDisabled = false, - isLoading = false, - icon, - onClick, - ...rest -}: Props) => { - const isLoadingActive = useDebouncedLoader(isLoading, 300); - - return ( - - ); -}; - -export default Button; diff --git a/packages/experience-components/src/components/ErrorMessage/index.module.scss b/packages/experience-components/src/components/ErrorMessage/index.module.scss deleted file mode 100644 index 1ca8be4..0000000 --- a/packages/experience-components/src/components/ErrorMessage/index.module.scss +++ /dev/null @@ -1,10 +0,0 @@ -@use '@logto/experience-sample-toolkit/scss/underscore' as _; - -.error { - font: var(--font-body-2); - color: var(--color-danger-default); - - ul { - padding-inline-start: 1rem; - } -} diff --git a/packages/experience-components/src/components/ErrorMessage/index.tsx b/packages/experience-components/src/components/ErrorMessage/index.tsx deleted file mode 100644 index 573c860..0000000 --- a/packages/experience-components/src/components/ErrorMessage/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import classNames from 'classnames'; -import type { ReactNode } from 'react'; - -import styles from './index.module.scss'; - -export type Props = { - readonly className?: string; - readonly children?: ReactNode; -}; - -const ErrorMessage = ({ className, children }: Props) => { - return ( -
- {children} -
- ); -}; - -export default ErrorMessage; diff --git a/packages/experience-components/src/components/InputField/NotchedBorder/index.module.scss b/packages/experience-components/src/components/InputField/NotchedBorder/index.module.scss deleted file mode 100644 index 151b9c0..0000000 --- a/packages/experience-components/src/components/InputField/NotchedBorder/index.module.scss +++ /dev/null @@ -1,127 +0,0 @@ -@use '@logto/experience-sample-toolkit/scss/underscore' as _; - -.container { - position: absolute; - inset: -0.4px -2px 0; - pointer-events: none; - - &:not(.active) { - .label { - font: var(--font-body-2); - } - } - - &.focused { - .outline { - display: block; - } - } - - .border, - .outline { - text-align: left; - position: absolute; - inset: -10px 0 -0.5px; - border: 1px solid var(--color-line-border); - border-radius: 8px; - pointer-events: none; - display: block; - transition-property: outline, border; - transition-timing-function: ease-in-out; - transition-duration: 0.2s; - - legend { - display: inline-block; - visibility: hidden; - // To keep the label in the middle of the empty space - margin-left: 1px; - padding: 0; - // fix to the label font height to keep space for the input container - height: 20px; - // Set to 0 to avoid the empty space in the top border - width: 0; - - span { - padding: 0 _.unit(1); - opacity: 0%; - visibility: hidden; - display: inline-block; - font: var(--font-body-3); - } - } - } - - .outline { - display: none; - inset: -11.5px -2px -2.5px; - border-radius: 10px; - border: 3px outset var(--color-overlay-brand-focused); - } - - .label { - position: absolute; - left: _.unit(3.5); - font: var(--font-body-1); - color: var(--color-type-secondary); - pointer-events: none; - top: 48%; - transform: translateY(-50%); - transition: 0.2s ease-out; - transition-property: position, font, top, color; - background-color: transparent; - padding: 0 _.unit(1); - z-index: 1; - } - - &.active { - .border, - .outline { - legend { - visibility: visible; - width: auto; - } - } - - .label { - top: -1px; - font: var(--font-body-3); - color: var(--color-type-secondary); - } - } - - &.focused { - .border { - border-color: var(--color-brand-default); - } - - .label { - color: var(--color-brand-default); - } - } -} - - -.container.danger { - .border { - border-color: var(--color-danger-default); - } - - .outline { - border-color: var(--color-overlay-danger-focused); - } - - &.active { - .label { - color: var(--color-danger-default); - } - } -} - -.container.noLabel { - .border, - .outline { - legend { - width: 0; - } - } -} diff --git a/packages/experience-components/src/components/InputField/NotchedBorder/index.tsx b/packages/experience-components/src/components/InputField/NotchedBorder/index.tsx deleted file mode 100644 index f8e097e..0000000 --- a/packages/experience-components/src/components/InputField/NotchedBorder/index.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import classNames from 'classnames'; - -import styles from './index.module.scss'; - -type Props = { - readonly label: string; - readonly isActive: boolean; - readonly isDanger: boolean; - readonly isFocused: boolean; -}; - -/** - * NotchedBorder Component - * - * This component creates a customizable border with a notch for labels in form inputs. - * It enhances the visual appearance and accessibility of input fields by providing - * a floating label effect and customizable border/outline styles. - * - * Key implementation details: - * 1. Uses two fieldset elements: - * - The first creates the main border effect. - * - The second creates a separate outline effect, avoiding gaps between the built-in outline and border. - * 2. Utilizes the fieldset's legend for the label, allowing it to overlap the border: - * - This creates a "floating" label effect. - * - The legend's background becomes transparent, preventing it from blocking the background. - * - */ -const NotchedBorder = ({ label, isActive, isDanger, isFocused }: Props) => { - return ( -
-
- - {label} - -
-
- - {label} - -
- {Boolean(label) && } -
- ); -}; - -export default NotchedBorder; diff --git a/packages/experience-components/src/components/InputField/index.module.scss b/packages/experience-components/src/components/InputField/index.module.scss deleted file mode 100644 index 91ee163..0000000 --- a/packages/experience-components/src/components/InputField/index.module.scss +++ /dev/null @@ -1,130 +0,0 @@ -@use '@logto/experience-sample-toolkit/scss/underscore' as _; - -.container { - position: relative; - - .inputField { - position: relative; - overflow: hidden; - transition-property: border; - transition-timing-function: ease-in-out; - transition-duration: 0.2s; - background: inherit; - display: flex; - align-items: stretch; - - // fix in safari input field line-height issue - height: 44px; - - input { - font: var(--font-body-2); - transition: width 0.3s ease-in; - padding: 0 _.unit(4); - flex: 1; - background: inherit; - caret-color: var(--color-brand-default); - font: var(--font-body-1); - color: var(--color-type-primary); - outline: none; - border-radius: 8px; - - &::placeholder { - color: var(--color-type-secondary); - transition: opacity 0.2s ease-out; - opacity: 0%; - } - - &:-webkit-autofill, - &:-webkit-autofill:hover, - &:-webkit-autofill:focus { - -webkit-text-fill-color: var(--color-type-primary); - /* - * Create an extremely long (about 11.57 days) transition for background-color - * This is a "hack" to prevent the browser from applying its default autofill background color - */ - transition: background-color 999999s ease-in-out 0s; - background-color: transparent; - } - - &:-webkit-autofill { - /* - * Define a void transition css rule on the desired element once it is :-webkit-autofilled. - * JavaScript will then be able to hook onto the 'animationstart' event. - * see https://stackoverflow.com/questions/11708092/detecting-browser-autofill/41530164#41530164 - */ - animation-name: onAutoFillStart; - } - } - - .suffix { - position: absolute; - right: _.unit(2); - top: 50%; - transform: translateY(-50%); - width: _.unit(8); - height: _.unit(8); - display: none; - z-index: 1; - } - - &.isSuffixFocusVisible:focus-within { - input { - padding-right: _.unit(10); - } - - .suffix { - display: flex; - } - } - } - - &.active { - .inputField { - input::placeholder { - opacity: 100%; - } - } - } - - &.noLabel { - .inputField { - input::placeholder { - opacity: 100%; - } - } - } - - &.danger { - .inputField { - /* stylelint-disable-next-line no-descending-specificity */ - input { - caret-color: var(--color-danger-default); - } - } - } - - // override for firefox & safari focus outline since we are using custom notchedOutline - &:focus-visible { - outline: none; - } -} - -.errorMessage { - margin-top: _.unit(1); - margin-left: _.unit(0.5); -} - - -/* -* Define a void transition css rule on the desired element once it is :-webkit-autofilled. -* JavaScript will then be able to hook onto the 'animationstart' event. -* see https://stackoverflow.com/questions/11708092/detecting-browser-autofill/41530164#41530164 -*/ -@keyframes onAutoFillStart { - /* stylelint-disable-next-line block-no-empty */ - from {} - - /* stylelint-disable-next-line block-no-empty */ - to {} -} - diff --git a/packages/experience-components/src/components/InputField/index.tsx b/packages/experience-components/src/components/InputField/index.tsx deleted file mode 100644 index fa3c4f4..0000000 --- a/packages/experience-components/src/components/InputField/index.tsx +++ /dev/null @@ -1,148 +0,0 @@ -import { type Nullable } from '@silverhand/essentials'; -import classNames from 'classnames'; -import type { HTMLProps, ReactElement, Ref, AnimationEvent } from 'react'; -import { - forwardRef, - cloneElement, - useState, - useImperativeHandle, - useRef, - useEffect, - useCallback, -} from 'react'; - -import ErrorMessage from '../ErrorMessage'; - -import NotchedBorder from './NotchedBorder'; -import styles from './index.module.scss'; - -export type Props = Omit, 'prefix'> & { - readonly className?: string; - readonly inputFieldClassName?: string; - readonly errorMessage?: string; - readonly isDanger?: boolean; - readonly prefix?: ReactElement; - readonly isPrefixVisible?: boolean; - readonly suffix?: ReactElement; - readonly isSuffixFocusVisible?: boolean; - readonly label?: string; -}; - -const InputField = ( - { - className, - inputFieldClassName, - errorMessage, - isDanger, - prefix, - suffix, - isPrefixVisible, - isSuffixFocusVisible, - label, - onFocus, - onBlur, - onChange, - value, - ...props - }: Props, - reference: Ref> -) => { - const innerRef = useRef(null); - - useImperativeHandle(reference, () => innerRef.current); - - const errorMessages = errorMessage?.split('\n'); - - const [isFocused, setIsFocused] = useState(false); - const [hasValue, setHasValue] = useState(false); - - useEffect(() => { - /** - * Should listen to the value prop to update the hasValue state. - */ - setHasValue(Boolean(value)); - }, [value]); - - /** - * Fix the issue that the input field doesn't have the active style when the autofill value is set. - * We have define a void transition css rule on the input element once it is `:-webkit-autofill`ed. - * Hook onto this 'animationstart' event to detect the autofill start. - * see https://stackoverflow.com/questions/11708092/detecting-browser-autofill/41530164#41530164 - */ - const handleAnimationStart = useCallback((event: AnimationEvent) => { - /** - * Because SCSS adds some random characters to the ‘onAutoFillStart’ animation name during the build process, we can’t use the exact name here. - */ - if (event.animationName.includes('onAutoFillStart')) { - setHasValue(true); - } - }, []); - - const isActive = Boolean(isPrefixVisible) || hasValue || isFocused; - - return ( -
-
-
- {prefix} - { - setIsFocused(true); - return onFocus?.(event); - }} - onBlur={(event) => { - setIsFocused(false); - return onBlur?.(event); - }} - onChange={(event) => { - setHasValue(Boolean(event.target.value)); - return onChange?.(event); - }} - /> - {suffix && - cloneElement(suffix, { - className: classNames([suffix.props.className, styles.suffix]), - })} -
- -
- {errorMessages && ( - - {errorMessages.length > 1 ? ( -
    - {errorMessages.map((message) => ( -
  • {message}
  • - ))} -
- ) : ( - errorMessages[0] - )} -
- )} -
- ); -}; - -export default forwardRef(InputField); diff --git a/packages/experience-components/src/components/LogtoSignature/index.module.scss b/packages/experience-components/src/components/LogtoSignature/index.module.scss deleted file mode 100644 index e62e8b3..0000000 --- a/packages/experience-components/src/components/LogtoSignature/index.module.scss +++ /dev/null @@ -1,37 +0,0 @@ -@use '@logto/experience-sample-toolkit/scss/underscore' as _; - -.signature { - display: flex; - align-items: center; - font: var(--font-label-2); - font-weight: normal; - color: var(--color-neutral-variant-70); - padding: _.unit(1) _.unit(2); - text-decoration: none; - opacity: 75%; - - .staticIcon { - display: block; - } - - .highlightIcon { - display: none; - } - - &:hover, - &:active { - opacity: 100%; - - .staticIcon { - display: none; - } - - .highlightIcon { - display: block; - } - } - - .text { - margin-right: _.unit(1); - } -} diff --git a/packages/experience-components/src/components/LogtoSignature/index.tsx b/packages/experience-components/src/components/LogtoSignature/index.tsx deleted file mode 100644 index 9602f49..0000000 --- a/packages/experience-components/src/components/LogtoSignature/index.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import LogtoLogoLight from '../../assets/logto-logo-light.svg?react'; -import LogtoLogoShadow from '../../assets/logto-logo-shadow.svg?react'; - -import styles from './index.module.scss'; - -const logtoUrl = `https://logto.io/?${new URLSearchParams({ - utm_source: 'sign_in', - utm_medium: 'powered_by', -}).toString()}`; - -type Props = { - readonly className?: string; -}; - -const LogtoSignature = ({ className }: Props) => { - return ( - - ); -}; - -export default LogtoSignature; diff --git a/packages/experience-components/src/include.d/vite-env.d.ts b/packages/experience-components/src/include.d/vite-env.d.ts deleted file mode 100644 index eb5ce13..0000000 --- a/packages/experience-components/src/include.d/vite-env.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import 'vite/client'; -import 'vite-plugin-svgr/client'; diff --git a/packages/experience-components/src/index.ts b/packages/experience-components/src/index.ts deleted file mode 100644 index 022902c..0000000 --- a/packages/experience-components/src/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { default as PageLayout } from './Layout/PageLayout'; -export { default as InputField } from './components/InputField'; -export { default as ErrorMessage } from './components/ErrorMessage'; -export { default as Button } from './components/Button'; diff --git a/packages/experience-components/tsconfig.json b/packages/experience-components/tsconfig.json deleted file mode 100644 index 788b40b..0000000 --- a/packages/experience-components/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "@silverhand/ts-config-react/tsconfig.base", - "compilerOptions": { - "baseUrl": "./", - "outDir": "./lib" - }, - "include": ["src", "*.config.ts"] -} diff --git a/packages/experience-toolkit/scss/_underscore.scss b/packages/experience-toolkit/scss/_underscore.scss deleted file mode 100644 index 20b5d05..0000000 --- a/packages/experience-toolkit/scss/_underscore.scss +++ /dev/null @@ -1,10 +0,0 @@ -@function unit($factor: 1) { - @return #{$factor * 4}px; -} - -@mixin flex-column($align-items: center, $justify-content: center) { - display: flex; - flex-direction: column; - align-items: $align-items; - justify-content: $justify-content; -} diff --git a/packages/experience-toolkit/scss/normalized.scss b/packages/experience-toolkit/scss/normalized.scss deleted file mode 100644 index 67b692c..0000000 --- a/packages/experience-toolkit/scss/normalized.scss +++ /dev/null @@ -1,60 +0,0 @@ -@use './colors' as colors; -@use './fonts' as fonts; - -body { - @include colors.static; - @include colors.light; - @include fonts.default; - - margin: 0; - padding: 0; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: auto; - color: var(--color-type-primary); - font: var(--font-body-2); - - --max-width: 400px; - background: var(--color-bg-float-base); -} - -* { - box-sizing: border-box; - -webkit-tap-highlight-color: transparent; - text-underline-offset: 2px; -} - -input { - border: none; - outline: none; - padding: 0; - margin: 0; -} - -::-webkit-scrollbar { - width: 16px; -} - -::-webkit-scrollbar:horizontal { - height: 16px; -} - -::-webkit-scrollbar-thumb { - background-clip: content-box; - border: 4px solid transparent; - border-radius: 8px; -} - -::-webkit-scrollbar-track { - background: transparent; -} - -input::-webkit-outer-spin-button, -input::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; -} - -/* Firefox */ -input[type='number'] { - -moz-appearance: textfield; -} diff --git a/packages/experience-toolkit/src/api/client.ts b/packages/experience-toolkit/src/api/client.ts deleted file mode 100644 index 9daa744..0000000 --- a/packages/experience-toolkit/src/api/client.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { - InteractionEvent, - type RequestErrorBody, - type PasswordVerificationPayload, -} from '@logto/schemas'; - -import { Api, type HttpResponse } from './experience-api.js'; - -const isHttpResponseError = (error: unknown): error is HttpResponse => { - return error instanceof Response && 'error' in error; -}; - -/* eslint-disable @typescript-eslint/ban-types */ -type ApiClientResponseType = Promise< - | { - data: T; - error: null; - } - | { - data: null; - error: RequestErrorBody; - } ->; -/* eslint-enable @typescript-eslint/ban-types */ - -class ExperienceApiClient { - private readonly api = new Api({ - baseUrl: window.location.origin, - }); - - async signInWithPasswordIdentifier(payload: PasswordVerificationPayload) { - return this.tryRequest(async () => { - await this.api.experience.initInteraction( - { - interactionEvent: InteractionEvent.SignIn, - }, - { - format: 'json', - } - ); - - const { verificationId } = await this.api.experience.createPasswordVerification(payload, { - format: 'json', - }); - - await this.api.experience.identifyUser( - { verificationId }, - { - format: 'json', - } - ); - - return this.api.experience.submitInteraction({ format: 'json' }); - }); - } - - private async tryRequest(request: () => Promise): ApiClientResponseType { - try { - const result = await request(); - - return { data: result, error: null }; - } catch (error: unknown) { - if (isHttpResponseError(error)) { - return { data: null, error: error.error }; - } - - throw error; - } - } -} - -export default ExperienceApiClient; diff --git a/packages/experience-toolkit/src/index.ts b/packages/experience-toolkit/src/index.ts deleted file mode 100644 index ce4b352..0000000 --- a/packages/experience-toolkit/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as ExperienceApiClient } from './api/client.js'; diff --git a/packages/experience-components/src/assets/loading-ring.svg b/packages/shared/assets/loading-ring.svg similarity index 96% rename from packages/experience-components/src/assets/loading-ring.svg rename to packages/shared/assets/loading-ring.svg index 6e05dc9..7e4af15 100644 --- a/packages/experience-components/src/assets/loading-ring.svg +++ b/packages/shared/assets/loading-ring.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/experience-toolkit/package.json b/packages/shared/package.json similarity index 64% rename from packages/experience-toolkit/package.json rename to packages/shared/package.json index 9592956..2525fa7 100644 --- a/packages/experience-toolkit/package.json +++ b/packages/shared/package.json @@ -1,5 +1,5 @@ { - "name": "@logto/experience-sample-toolkit", + "name": "@logto/experience-sample-shared", "version": "0.0.0", "license": "MIT", "type": "module", @@ -10,11 +10,17 @@ "import": "./lib/index.js" }, "./api": { - "default": "./src/api/experience-api.js", - "types": "./src/api/experience-api.d.ts", - "import": "./src/api/experience-api.js" + "default": "./src/experience-api.js", + "types": "./src/experience-api.d.ts", + "import": "./src/experience-api.js" }, - "./scss/*": "./scss/*.scss" + "./utils": { + "default": "./src/utils.js", + "types": "./src/utils.d.ts", + "import": "./src/utils.js" + }, + "./assets/*": "./assets/*", + "./scss/*": "./scss/*" }, "types": "./lib/index.d.ts", "files": [ @@ -27,10 +33,7 @@ "generate-api": "node scripts/generate-api.js", "lint": "eslint --ext .ts src", "stylelint": "stylelint \"scss/**/*.scss\"", - "prepack": "pnpm build" - }, - "dependencies": { - "ky": "^1.6.0" + "prepack": "pnpm generate-api && pnpm build" }, "devDependencies": { "@logto/schemas": "^1.19.0", @@ -41,11 +44,17 @@ "swagger-typescript-api": "^13.0.21", "typescript": "^5.5.3" }, + "engines": { + "node": "^20.11.0" + }, "eslintConfig": { "extends": "@silverhand", "ignorePatterns": [ - "src/api/experience-api.ts" - ] + "src/experience-api.ts" + ], + "rules": { + "@silverhand/fp/no-mutation": "off" + } }, "stylelint": { "extends": "@silverhand/eslint-config-react/.stylelintrc" diff --git a/packages/experience-toolkit/scripts/generate-api.js b/packages/shared/scripts/generate-api.js similarity index 98% rename from packages/experience-toolkit/scripts/generate-api.js rename to packages/shared/scripts/generate-api.js index 52c0cf0..be5702d 100644 --- a/packages/experience-toolkit/scripts/generate-api.js +++ b/packages/shared/scripts/generate-api.js @@ -2,7 +2,7 @@ import path from 'node:path'; import { generateApi } from 'swagger-typescript-api'; -const outputDirectory = path.resolve(import.meta.dirname, '../src/api'); +const outputDirectory = path.resolve(import.meta.dirname, '../src'); const openApiJsonUrl = 'https://auth.logto.app/api/.well-known/experience.openapi.json'; generateApi({ diff --git a/packages/experience-toolkit/scss/_colors.scss b/packages/shared/scss/_colors.scss similarity index 100% rename from packages/experience-toolkit/scss/_colors.scss rename to packages/shared/scss/_colors.scss diff --git a/packages/experience-toolkit/scss/_fonts.scss b/packages/shared/scss/_fonts.scss similarity index 100% rename from packages/experience-toolkit/scss/_fonts.scss rename to packages/shared/scss/_fonts.scss diff --git a/packages/shared/scss/normalized.scss b/packages/shared/scss/normalized.scss new file mode 100644 index 0000000..b296510 --- /dev/null +++ b/packages/shared/scss/normalized.scss @@ -0,0 +1,134 @@ +@use './colors' as colors; +@use './fonts' as fonts; + +body { + @include colors.static; + @include colors.light; + @include fonts.default; + + margin: 0; + padding: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: auto; + color: var(--color-type-primary); + font: var(--font-body-2); + box-sizing: border-box; + background: var(--color-bg-float-base); + -webkit-tap-highlight-color: transparent; + + --max-width: 400px; +} + +.app { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + min-height: 100vh; + width: 100vw; +} + +.logo { + margin-bottom: 20px; + height: 54px; +} + +form { + display: flex; + flex-direction: column; + width: var(--max-width); + margin: 0 auto; + padding: 40px; + gap: 20px; + border-radius: 6px; + background-color: var(--color-static-white); +} + +.input-field { + display: flex; + flex-direction: column; + gap: 10px; + + label { + font: var(--font-label-2); + } +} + +input { + height: 24px; + outline: none; + padding: 10px; + margin: 0; + border-radius: 8px; + border: 1px solid var(--color-line-border); +} + +.submit-button { + display: flex; + align-items: center; + justify-content: center; + height: 46px; + border: 1px solid transparent; + border-radius: 8px; + margin-top: 20px; + font: var(--font-label-1); + background-color: var(--color-brand-default); + color: var(--color-static-white); + transition: background-color 0.3s ease-in-out; + + &:not(:disabled):hover { + background-color: var(--color-brand-hover); + cursor: pointer; + } + + &:not(:disabled):active { + background-color: var(--color-brand-pressed); + } + + &:disabled { + background-color: var(--color-brand-loading); + } + + & > .spinner { + display: none; + } + + &.loading { + background-color: var(--color-brand-loading); + + & > span { + display: none; + } + + & > .spinner { + display: block; + } + } +} + +.error-message { + margin: 20px auto; + color: var(--color-danger-default); + + &.hidden { + display: none; + } +} + +.spinner { + width: 24px; + height: 24px; + background: url(../assets/loading-ring.svg) center/100% no-repeat; + animation: rotating 1s linear infinite; +} + + +@keyframes rotating { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } +} diff --git a/packages/experience-toolkit/src/api/experience-api.ts b/packages/shared/src/experience-api.ts similarity index 98% rename from packages/experience-toolkit/src/api/experience-api.ts rename to packages/shared/src/experience-api.ts index a214223..1b07831 100644 --- a/packages/experience-toolkit/src/api/experience-api.ts +++ b/packages/shared/src/experience-api.ts @@ -36,7 +36,7 @@ export interface CreateAndSendVerificationCodeData { verificationId: string; } -export interface VerifyVerificationCodeData { +export interface VerifyVerificationCodeVerificationData { /** he unique ID of the verification record. Required for user identification via the `Identification` API or to bind the identifier to the user's account via the `Profile` API. */ verificationId: string; } @@ -171,7 +171,7 @@ export interface CreateNewPasswordIdentityVerificationData { verificationId: string; } -export type UpdateUserProfileData = any; +export type AddUserProfileData = any; export type ResetUserPasswordData = any; @@ -442,7 +442,7 @@ export enum ContentType { } export class HttpClient { - public baseUrl: string = "http://localhost:3001"; + public baseUrl: string = "https://[tenant_id].logto.app/"; private securityData: SecurityDataType | null = null; private securityWorker?: ApiConfig["securityWorker"]; private abortControllers = new Map(); @@ -609,9 +609,11 @@ export class HttpClient { /** * @title Logto experience API references * @version Cloud - * @baseUrl http://localhost:3001 + * @baseUrl https://[tenant_id].logto.app/ * * API references for Logto experience interaction. + * + * Note: The documentation is for Logto Cloud. If you are using Logto OSS, please refer to the response of `/api/swagger.json` endpoint on your Logto instance. */ export class Api extends HttpClient { experience = { @@ -767,11 +769,11 @@ export class Api extends HttpClient extends HttpClient - this.request({ + this.request({ path: `/api/experience/verification/verification-code/verify`, method: "POST", body: data, @@ -1152,11 +1154,11 @@ export class Api extends HttpClient- For `Register`: The profile data provided before the identification request will be used to create a new user account.
- For `SignIn` and `Register`: The profile data provided after the user is identified will be used to update the user's profile when the interaction is submitted.
- `ForgotPassword`: Not supported. * * @tags Experience - * @name UpdateUserProfile - * @summary Update user profile data + * @name AddUserProfile + * @summary Add user profile * @request POST:/api/experience/profile */ - updateUserProfile: ( + addUserProfile: ( data: ( | { /** @format "username" */ @@ -1197,7 +1199,7 @@ export class Api extends HttpClient - this.request({ + this.request({ path: `/api/experience/profile`, method: "POST", body: data, diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts new file mode 100644 index 0000000..e9a9c84 --- /dev/null +++ b/packages/shared/src/index.ts @@ -0,0 +1,2 @@ +export { Api } from './experience-api.js'; +export * from './utils.js'; diff --git a/packages/shared/src/utils.ts b/packages/shared/src/utils.ts new file mode 100644 index 0000000..968b7b3 --- /dev/null +++ b/packages/shared/src/utils.ts @@ -0,0 +1,31 @@ +export const setSubmitLoading = (isLoading: boolean) => { + const submitButton = document.querySelector('.submit-button'); + + if (isLoading) { + submitButton?.setAttribute('disabled', 'disabled'); + submitButton?.classList.add('loading'); + } else { + submitButton?.removeAttribute('disabled'); + submitButton?.classList.remove('loading'); + } +}; + +export const handleError = (error: unknown) => { + const errorContainer = document.querySelector('.error-message'); + if (errorContainer) { + errorContainer.classList.remove('hidden'); + errorContainer.innerHTML = + error instanceof Error + ? error.message + : 'Error occurred. Please check debugger console for details.'; + } + console.error(error); +}; + +export const clearError = () => { + const errorContainer = document.querySelector('.error-message'); + if (errorContainer) { + errorContainer.innerHTML = ''; + errorContainer.classList.add('hidden'); + } +}; diff --git a/packages/experience-toolkit/tsconfig.json b/packages/shared/tsconfig.json similarity index 100% rename from packages/experience-toolkit/tsconfig.json rename to packages/shared/tsconfig.json diff --git a/packages/sign-in-with-password/.eslintrc.cjs b/packages/sign-in-with-password/.eslintrc.cjs index 40bcfa6..0b1a0e0 100644 --- a/packages/sign-in-with-password/.eslintrc.cjs +++ b/packages/sign-in-with-password/.eslintrc.cjs @@ -1,9 +1,11 @@ /** @type {import('eslint').Linter.Config} */ module.exports = { - extends: '@silverhand/react', + extends: '@silverhand/eslint-config', rules: { 'jsx-a11y/no-autofocus': 'off', 'unicorn/prefer-string-replace-all': 'off', + 'no-restricted-syntax': 'off', + '@silverhand/fp/no-mutation': 'off', }, overrides: [ { diff --git a/packages/sign-in-with-password/favicon.ico b/packages/sign-in-with-password/favicon.ico new file mode 100644 index 0000000..3cf672d Binary files /dev/null and b/packages/sign-in-with-password/favicon.ico differ diff --git a/packages/sign-in-with-password/index.html b/packages/sign-in-with-password/index.html index 9befc1d..9c34783 100644 --- a/packages/sign-in-with-password/index.html +++ b/packages/sign-in-with-password/index.html @@ -1,16 +1,32 @@ + + + + Logto experience sample + + + - - - - Logto experience sample - - - - -
- - - + + +
+
+ +
+ + +
+
+ + +
+ +
+ +
+ diff --git a/packages/sign-in-with-password/package.json b/packages/sign-in-with-password/package.json index 57f97d9..741f6f3 100644 --- a/packages/sign-in-with-password/package.json +++ b/packages/sign-in-with-password/package.json @@ -1,50 +1,32 @@ { - "name": "@logto/experience-sample-password", + "name": "@logto/experience-sample-password-sign-in", + "description": "A sample project demonstrates how to use Logto Experience API to build a identifier & password sign-in page.", "author": "Silverhand Inc. ", "license": "MIT", "version": "0.0.0", "type": "module", "scripts": { "precommit": "lint-staged", - "dev": "vite", + "start": "vite", + "dev": "logto-tunnel --verbose & vite", "build": "tsc -b && vite build", "lint": "eslint --ext .ts src", "preview": "vite preview" }, "devDependencies": { - "@eslint/js": "^9.8.0", - "@logto/experience-components": "workspace:^0.0.0", - "@logto/experience-sample-toolkit": "workspace:^0.0.0", + "@logto/experience-sample-shared": "workspace:^", "@logto/schemas": "^1.19.0", "@silverhand/eslint-config": "^6.0.1", - "@silverhand/eslint-config-react": "^6.0.2", "@silverhand/ts-config": "^6.0.0", - "@silverhand/ts-config-react": "^6.0.0", - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.0", - "@vitejs/plugin-react": "^4.3.1", - "classnames": "^2.5.1", "eslint": "^8.56.0", "lint-staged": "^15.0.0", - "postcss": "^8.4.31", - "postcss-modules": "^6.0.0", "prettier": "^3.0.0", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-hook-form": "^7.52.2", - "react-hot-toast": "^2.4.1", - "react-router-dom": "^6.26.1", "stylelint": "^15.0.0", "typescript": "^5.5.3", - "typescript-eslint": "^8.0.0", - "vite": "^5.4.6", - "vite-plugin-svgr": "^4.2.0" - }, - "engines": { - "node": "^20.9.0" + "vite": "^5.4.6" }, "stylelint": { - "extends": "@silverhand/eslint-config-react/.stylelintrc" + "extends": "@silverhand/eslint-config/.stylelintrc" }, "prettier": "@silverhand/eslint-config/.prettierrc" } diff --git a/packages/sign-in-with-password/src/App.module.scss b/packages/sign-in-with-password/src/App.module.scss deleted file mode 100644 index 47eeea8..0000000 --- a/packages/sign-in-with-password/src/App.module.scss +++ /dev/null @@ -1,8 +0,0 @@ -@use '@logto/experience-sample-toolkit/scss/underscore' as _; - -.header { - font: var(--font-title-2); - text-align: center; - color: var(--color-type-primary); - margin-bottom: _.unit(6); -} diff --git a/packages/sign-in-with-password/src/App.tsx b/packages/sign-in-with-password/src/App.tsx deleted file mode 100644 index 312b6a6..0000000 --- a/packages/sign-in-with-password/src/App.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { PageLayout } from '@logto/experience-components'; -import { Toaster } from 'react-hot-toast'; -import { Routes, Route, BrowserRouter } from 'react-router-dom'; - -import styles from './App.module.scss'; -import UsernamePasswordForm from './UsernamePasswordForm'; - -// eslint-disable-next-line import/no-unassigned-import -import '@logto/experience-sample-toolkit/scss/normalized'; - -const App = () => { - return ( - - - -
Sign in to your account
- - - - } - /> -
-
- ); -}; - -export default App; diff --git a/packages/sign-in-with-password/src/UsernamePasswordForm/index.module.scss b/packages/sign-in-with-password/src/UsernamePasswordForm/index.module.scss deleted file mode 100644 index 8ae4f5b..0000000 --- a/packages/sign-in-with-password/src/UsernamePasswordForm/index.module.scss +++ /dev/null @@ -1,21 +0,0 @@ -@use '@logto/experience-sample-toolkit/scss/underscore' as _; - -.form { - @include _.flex-column; - width: 100%; - max-width: var(--max-width); - - > * { - width: 100%; - } - - .inputField, - .errorMessage { - margin-bottom: _.unit(4); - } - - .errorMessage { - margin-left: _.unit(0.5); - margin-top: _.unit(-3); - } -} diff --git a/packages/sign-in-with-password/src/UsernamePasswordForm/index.tsx b/packages/sign-in-with-password/src/UsernamePasswordForm/index.tsx deleted file mode 100644 index e47c399..0000000 --- a/packages/sign-in-with-password/src/UsernamePasswordForm/index.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import { InputField, Button, ErrorMessage } from '@logto/experience-components'; -import { SignInIdentifier } from '@logto/schemas'; -import classNames from 'classnames'; -import { useCallback } from 'react'; -import { useForm } from 'react-hook-form'; - -import usePasswordSignIn from '../use-password-sign-in'; - -import styles from './index.module.scss'; - -type Props = { - readonly className?: string; -}; - -type FormData = { - username: string; - password: string; -}; - -const UsernamePasswordForm = ({ className }: Props) => { - const { - register, - formState: { errors, isSubmitting }, - handleSubmit, - } = useForm({ - reValidateMode: 'onBlur', - defaultValues: { - username: '', - password: '', - }, - }); - - const { errorMessage, onSubmit, clearErrorMessage } = usePasswordSignIn(); - - const onSubmitHandler = useCallback( - async (event?: React.FormEvent) => { - void handleSubmit(async ({ username, password }) => { - await onSubmit({ - identifier: { - type: SignInIdentifier.Username, - value: username, - }, - password, - }); - })(event); - }, - [handleSubmit, onSubmit] - ); - - return ( -
- - - {errorMessage && {errorMessage}} - - - - ); -}; - -export default UsernamePasswordForm; diff --git a/packages/sign-in-with-password/src/include.d/vite-env.d.ts b/packages/sign-in-with-password/src/include.d/vite-env.d.ts index eb5ce13..e058f21 100644 --- a/packages/sign-in-with-password/src/include.d/vite-env.d.ts +++ b/packages/sign-in-with-password/src/include.d/vite-env.d.ts @@ -1,2 +1 @@ import 'vite/client'; -import 'vite-plugin-svgr/client'; diff --git a/packages/sign-in-with-password/src/index.ts b/packages/sign-in-with-password/src/index.ts new file mode 100644 index 0000000..8ebfd92 --- /dev/null +++ b/packages/sign-in-with-password/src/index.ts @@ -0,0 +1,58 @@ +import { Api } from '@logto/experience-sample-shared'; +import { clearError, handleError, setSubmitLoading } from '@logto/experience-sample-shared/utils'; +import { InteractionEvent, SignInIdentifier } from '@logto/schemas'; + +import '@logto/experience-sample-shared/scss/normalized.scss'; + +const api = new Api({ baseUrl: window.location.origin }); + +window.addEventListener('load', () => { + const form = document.querySelector('form'); + + form?.addEventListener('submit', async (event) => { + event.preventDefault(); + setSubmitLoading(true); + clearError(); + + try { + const formData = new FormData(form); + const username = formData.get('username')?.toString(); + const password = formData.get('password')?.toString(); + + if (!username || !password) { + throw new Error('Username and password are required.'); + } + + /** + * Step 1: Initialize a sign-in type interaction. + */ + await api.experience.initInteraction({ interactionEvent: InteractionEvent.SignIn }); + + /** + * Step 2: Create a password verification. + * + * Note: + * 1. The password must meet your current password policy requirements. + * 2. You can change the identifier type to `email` or `phone` if that's your sign-in identifier. + */ + const { verificationId } = await api.experience.createPasswordVerification({ + identifier: { type: SignInIdentifier.Username, value: username }, + password, + }); + + /** + * Step 3: Identify the user. + */ + await api.experience.identifyUser({ verificationId }); + + /** + * Step 4: Submit the interaction and redirect back to your app after the interaction is completed. + */ + const { redirectTo } = await api.experience.submitInteraction(); + window.location.replace(redirectTo); + } catch (error) { + handleError(error); + setSubmitLoading(false); + } + }); +}); diff --git a/packages/sign-in-with-password/src/index.tsx b/packages/sign-in-with-password/src/index.tsx deleted file mode 100644 index 2fff326..0000000 --- a/packages/sign-in-with-password/src/index.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { createRoot } from 'react-dom/client'; - -import App from './App'; - -const app = document.querySelector('#app'); -const root = app && createRoot(app); -root?.render(); diff --git a/packages/sign-in-with-password/src/use-password-sign-in.ts b/packages/sign-in-with-password/src/use-password-sign-in.ts deleted file mode 100644 index 852754d..0000000 --- a/packages/sign-in-with-password/src/use-password-sign-in.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { ExperienceApiClient } from '@logto/experience-sample-toolkit'; -import { type PasswordVerificationPayload } from '@logto/schemas'; -import { useCallback, useState } from 'react'; - -const apiClient = new ExperienceApiClient(); - -const usePasswordSignIn = () => { - const [errorMessage, setErrorMessage] = useState(); - - const clearErrorMessage = useCallback(() => { - setErrorMessage(undefined); - }, []); - - const onSubmit = useCallback( - async (payload: PasswordVerificationPayload) => { - clearErrorMessage(); - - const { data, error } = await apiClient.signInWithPasswordIdentifier(payload); - - if (error) { - setErrorMessage(error.message); - return; - } - - const { redirectTo } = data; - - window.location.assign(redirectTo); - }, - [clearErrorMessage] - ); - - return { - onSubmit, - errorMessage, - clearErrorMessage, - }; -}; - -export default usePasswordSignIn; diff --git a/packages/sign-in-with-password/tsconfig.json b/packages/sign-in-with-password/tsconfig.json index 5588df9..b962e88 100644 --- a/packages/sign-in-with-password/tsconfig.json +++ b/packages/sign-in-with-password/tsconfig.json @@ -1,10 +1,11 @@ { - "extends": "@silverhand/ts-config-react/tsconfig.base", + "extends": "@silverhand/ts-config/tsconfig.base", "compilerOptions": { "baseUrl": "./", + "outDir": "dist", "paths": { "@/*": ["./src/*"] } }, - "include": ["src", "*.config.ts"] + "include": ["src"] } diff --git a/packages/sign-in-with-password/vite.config.ts b/packages/sign-in-with-password/vite.config.ts deleted file mode 100644 index b04cac2..0000000 --- a/packages/sign-in-with-password/vite.config.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { defineConfig } from 'vite'; -import react from '@vitejs/plugin-react'; -import svgr from 'vite-plugin-svgr'; - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react(), svgr()], - css: { - modules: { - generateScopedName: '[hash:base64:5]_[local]', - }, - }, - resolve: { - alias: [ - { - find: /^@\//, - replacement: '/src/', - }, - ], - }, -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fb6dfa9..062851c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: '@commitlint/types': specifier: ^19.0.0 version: 19.0.3 + '@logto/tunnel': + specifier: ^0.2.1 + version: 0.2.1 husky: specifier: ^9.0.11 version: 9.1.4 @@ -24,86 +27,7 @@ importers: specifier: ^5.3.3 version: 5.5.4 - packages/experience-components: - devDependencies: - '@eslint/js': - specifier: ^9.8.0 - version: 9.9.0 - '@logto/experience-sample-toolkit': - specifier: workspace:^0.0.0 - version: link:../experience-toolkit - '@silverhand/eslint-config': - specifier: ^6.0.1 - version: 6.0.1(eslint@8.57.0)(prettier@3.3.3)(typescript@5.5.4) - '@silverhand/eslint-config-react': - specifier: ^6.0.2 - version: 6.0.2(eslint@8.57.0)(postcss@8.4.41)(prettier@3.3.3)(stylelint@15.11.0(typescript@5.5.4))(typescript@5.5.4) - '@silverhand/essentials': - specifier: ^2.9.1 - version: 2.9.1 - '@silverhand/ts-config': - specifier: ^6.0.0 - version: 6.0.0(typescript@5.5.4) - '@silverhand/ts-config-react': - specifier: ^6.0.0 - version: 6.0.0(typescript@5.5.4) - '@types/react': - specifier: ^18.3.3 - version: 18.3.3 - '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 - '@vitejs/plugin-react': - specifier: ^3.1.0 - version: 3.1.0(vite@5.4.6(@types/node@22.3.0)(sass-embedded@1.77.8)) - classnames: - specifier: ^2.5.1 - version: 2.5.1 - eslint: - specifier: ^8.56.0 - version: 8.57.0 - lint-staged: - specifier: ^15.0.0 - version: 15.2.9 - postcss: - specifier: ^8.4.31 - version: 8.4.41 - postcss-modules: - specifier: ^6.0.0 - version: 6.0.0(postcss@8.4.41) - prettier: - specifier: ^3.0.0 - version: 3.3.3 - react: - specifier: ^18.3.1 - version: 18.3.1 - react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) - stylelint: - specifier: ^15.0.0 - version: 15.11.0(typescript@5.5.4) - typescript: - specifier: ^5.5.3 - version: 5.5.4 - typescript-eslint: - specifier: ^8.0.0 - version: 8.1.0(eslint@8.57.0)(typescript@5.5.4) - use-debounced-loader: - specifier: ^0.1.1 - version: 0.1.1(react@18.3.1) - vite: - specifier: ^5.4.6 - version: 5.4.6(@types/node@22.3.0)(sass-embedded@1.77.8) - vite-plugin-svgr: - specifier: ^4.2.0 - version: 4.2.0(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.6(@types/node@22.3.0)(sass-embedded@1.77.8)) - - packages/experience-toolkit: - dependencies: - ky: - specifier: ^1.6.0 - version: 1.6.0 + packages/shared: devDependencies: '@logto/schemas': specifier: ^1.19.0 @@ -129,181 +53,51 @@ importers: packages/sign-in-with-password: devDependencies: - '@eslint/js': - specifier: ^9.8.0 - version: 9.9.0 - '@logto/experience-components': - specifier: workspace:^0.0.0 - version: link:../experience-components - '@logto/experience-sample-toolkit': - specifier: workspace:^0.0.0 - version: link:../experience-toolkit + '@logto/experience-sample-shared': + specifier: workspace:^ + version: link:../shared '@logto/schemas': specifier: ^1.19.0 version: 1.19.0(zod@3.23.8) '@silverhand/eslint-config': specifier: ^6.0.1 version: 6.0.1(eslint@8.57.0)(prettier@3.3.3)(typescript@5.5.4) - '@silverhand/eslint-config-react': - specifier: ^6.0.2 - version: 6.0.2(eslint@8.57.0)(postcss@8.4.41)(prettier@3.3.3)(stylelint@15.11.0(typescript@5.5.4))(typescript@5.5.4) '@silverhand/ts-config': specifier: ^6.0.0 version: 6.0.0(typescript@5.5.4) - '@silverhand/ts-config-react': - specifier: ^6.0.0 - version: 6.0.0(typescript@5.5.4) - '@types/react': - specifier: ^18.3.3 - version: 18.3.3 - '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 - '@vitejs/plugin-react': - specifier: ^4.3.1 - version: 4.3.1(vite@5.4.6(@types/node@22.3.0)(sass-embedded@1.77.8)) - classnames: - specifier: ^2.5.1 - version: 2.5.1 eslint: specifier: ^8.56.0 version: 8.57.0 lint-staged: specifier: ^15.0.0 version: 15.2.9 - postcss: - specifier: ^8.4.31 - version: 8.4.41 - postcss-modules: - specifier: ^6.0.0 - version: 6.0.0(postcss@8.4.41) prettier: specifier: ^3.0.0 version: 3.3.3 - react: - specifier: ^18.3.1 - version: 18.3.1 - react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) - react-hook-form: - specifier: ^7.52.2 - version: 7.52.2(react@18.3.1) - react-hot-toast: - specifier: ^2.4.1 - version: 2.4.1(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-router-dom: - specifier: ^6.26.1 - version: 6.26.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) stylelint: specifier: ^15.0.0 version: 15.11.0(typescript@5.5.4) typescript: specifier: ^5.5.3 version: 5.5.4 - typescript-eslint: - specifier: ^8.0.0 - version: 8.1.0(eslint@8.57.0)(typescript@5.5.4) vite: specifier: ^5.4.6 version: 5.4.6(@types/node@22.3.0)(sass-embedded@1.77.8) - vite-plugin-svgr: - specifier: ^4.2.0 - version: 4.2.0(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.6(@types/node@22.3.0)(sass-embedded@1.77.8)) packages: - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.2': - resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.25.2': - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.25.0': - resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.25.2': - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.25.2': - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-plugin-utils@7.24.8': - resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-simple-access@7.24.7': - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.24.8': - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.24.8': - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.25.0': - resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} - engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.25.3': - resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-transform-react-jsx-self@7.24.7': - resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.24.7': - resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/template@7.25.0': - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.25.3': - resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.25.2': - resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} - engines: {node: '>=6.9.0'} - '@bufbuild/protobuf@1.10.0': resolution: {integrity: sha512-QDdVFLoN93Zjg36NoQPZfsVH9tZew7wKDKyV5qRdj8ntT4wQCOradQjRaTdwMhWUYsgKsvCINKKm87FdEk96Ag==} @@ -555,10 +349,6 @@ packages: resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@9.9.0': - resolution: {integrity: sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@exodus/schemasafe@1.3.0': resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} @@ -575,24 +365,6 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@logto/connector-kit@4.0.0': resolution: {integrity: sha512-Lm4hW2XNoHmv9o23sp9lZldFe7ndj8E20tp24AZGNA1SUis3WLWFLWNjIaWFfl0qHaVO8QV1YMucWxV0nzw7iw==} engines: {node: ^20.9.0} @@ -601,6 +373,10 @@ packages: resolution: {integrity: sha512-VqKhX7PO4R9wXTQgDPS6OeNSRXVLrjGI5OwuuY7hOgwMKIzRc4Ln4uF5IKIt0Jm+TypCOjde9VVGlBVHdlNRTg==} engines: {node: ^20.9.0} + '@logto/core-kit@2.5.1': + resolution: {integrity: sha512-/LqKeDHrDvEXdIC+tDfSaLlD44GziBPLPJXYNwGmmEYjtz7boOoYDQD+2qrwX+YlgvuC/pOmimvkAzlGyIhfkQ==} + engines: {node: ^20.9.0} + '@logto/language-kit@1.1.0': resolution: {integrity: sha512-0+JlOb+1SWEuspZ1vDxuxisln+mjnCUzHZexCwSlRsQH1KkizqoG4tmE/3GKKrwzhBp+19vSvFd9LhYiKe/QJA==} engines: {node: ^20.9.0} @@ -627,6 +403,11 @@ packages: resolution: {integrity: sha512-5RgX85ntjJ8etMSrpN2EY8B/GG4B7ZA9F9qrb6EiG1gHVAVGeu5fDsva5OVvGq7V9ruuegLj2vKeu9Si4e1dbA==} engines: {node: ^20.9.0} + '@logto/tunnel@0.2.1': + resolution: {integrity: sha512-7ge76GP3BDvTA2bIsf6By2+m8PsL4Ns3UK4AdvqBlWBjlqmUmY3F5opRMsRUriu2V3PJWBMqH7lPTA4hWGp9Ig==} + engines: {node: ^20.9.0} + hasBin: true + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -643,19 +424,6 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@remix-run/router@1.19.1': - resolution: {integrity: sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==} - engines: {node: '>=14.0.0'} - - '@rollup/pluginutils@5.1.0': - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/rollup-android-arm-eabi@4.20.0': resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==} cpu: [arm] @@ -736,12 +504,6 @@ packages: cpu: [x64] os: [win32] - '@silverhand/eslint-config-react@6.0.2': - resolution: {integrity: sha512-4PqhypLqrX5FVXimKBz3S1c+usDns3N/XG66n2FQtO1FIa8WUVw1CsuWHT+tkqeIxDR1PRQX1e8Iwyy7vPclPA==} - engines: {node: ^20.9.0} - peerDependencies: - stylelint: ^15.0.0 - '@silverhand/eslint-config@6.0.1': resolution: {integrity: sha512-v7VbAiNgVwcjwGXe4LK6qNVKgltcm4XX9dkYgyaD22vcYCtp1BSd8NVsPDISV1nAwwirCklL0KSDtcD7pxkbHw==} engines: {node: ^20.9.0} @@ -759,12 +521,6 @@ packages: resolution: {integrity: sha512-rsql/ZxXMqVvt7ySDHd7xjCog4oCYg+dexxlj3veolajwjKiy/08ZtFyEtFjSEAaKbXwkWZ4TDtiNSxb7HS0yA==} engines: {node: ^18.12.0 || ^20.9.0, pnpm: ^9.0.0} - '@silverhand/ts-config-react@6.0.0': - resolution: {integrity: sha512-eEB8TwGzw5kJTKcuHtvifpcs6p8ZDNRFWH2W7ZM4Rf7DsFBQtXkYpwQFQvZ9UVOAs4YCIeSY4OJCjtaY0fUp8g==} - engines: {node: ^20.9.0} - peerDependencies: - typescript: ^5.3.3 - '@silverhand/ts-config@6.0.0': resolution: {integrity: sha512-zgR9vxC/DBx+0ZhCxqGTlZfVX6Bi0/UZztt+8np5I07ahfGMVUJjWedgHNK2NrSX2Nwclr9zLlUbgxwgqi4Idw==} engines: {node: ^20.9.0} @@ -775,92 +531,15 @@ packages: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - '@svgr/babel-plugin-add-jsx-attribute@8.0.0': - resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': - resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0': - resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0': - resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-svg-dynamic-title@8.0.0': - resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-svg-em-dimensions@8.0.0': - resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-transform-react-native-svg@8.1.0': - resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-transform-svg-component@8.0.0': - resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} - engines: {node: '>=12'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-preset@8.1.0': - resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/core@8.1.0': - resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} - engines: {node: '>=14'} - - '@svgr/hast-util-to-babel-ast@8.0.0': - resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} - engines: {node: '>=14'} - - '@svgr/plugin-jsx@8.1.0': - resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} - engines: {node: '>=14'} - peerDependencies: - '@svgr/core': '*' - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@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/conventional-commits-parser@5.0.0': resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/http-proxy@1.17.15': + resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} + '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} @@ -873,15 +552,6 @@ packages: '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/prop-types@15.7.12': - resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - - '@types/react-dom@18.3.0': - resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} - - '@types/react@18.3.3': - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} - '@types/swagger-schema-official@2.0.25': resolution: {integrity: sha512-T92Xav+Gf/Ik1uPW581nA+JftmjWPgskw/WBf4TJzxRG/SJ+DfNnNE+WuZ4mrXuzflQMqMkm1LSYjzYW7MB1Cg==} @@ -896,17 +566,6 @@ packages: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.1.0': - resolution: {integrity: sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/parser@7.18.0': resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} engines: {node: ^18.18.0 || >=20.0.0} @@ -917,24 +576,10 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.1.0': - resolution: {integrity: sha512-U7iTAtGgJk6DPX9wIWPPOlt1gO57097G06gIcl0N0EEnNw8RGD62c+2/DiP/zL7KrkqnnqF7gtFGR7YgzPllTA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/scope-manager@7.18.0': resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.1.0': - resolution: {integrity: sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@7.18.0': resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} engines: {node: ^18.18.0 || >=20.0.0} @@ -945,23 +590,10 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.1.0': - resolution: {integrity: sha512-oLYvTxljVvsMnldfl6jIKxTaU7ok7km0KDrwOt1RHYu6nxlhN3TIx8k5Q52L6wR33nOwDgM7VwW1fT1qMNfFIA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/types@7.18.0': resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.1.0': - resolution: {integrity: sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@7.18.0': resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} engines: {node: ^18.18.0 || >=20.0.0} @@ -971,50 +603,19 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.1.0': - resolution: {integrity: sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/utils@7.18.0': resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/utils@8.1.0': - resolution: {integrity: sha512-ypRueFNKTIFwqPeJBfeIpxZ895PQhNyH4YID6js0UoBImWYoSjBsahUn9KMiJXh94uOjVBgHD9AmkyPsPnFwJA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@7.18.0': resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.1.0': - resolution: {integrity: sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@vitejs/plugin-react@3.1.0': - resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.1.0-beta.0 - - '@vitejs/plugin-react@4.3.1': - resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 - '@withtyped/client@0.8.7': resolution: {integrity: sha512-qK+Tsczvko8mBRACtHGYj0CdMZFaBmosMGUahTAr544Jb183INPZPn/NpUFtTEpl5g3e4lUjMc5jPH0V78D0+g==} @@ -1040,6 +641,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -1073,9 +678,6 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - array-buffer-byte-length@1.0.1: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} @@ -1091,10 +693,6 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - array.prototype.findlastindex@1.2.5: resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} engines: {node: '>= 0.4'} @@ -1107,10 +705,6 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} - array.prototype.tosorted@1.1.4: - 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'} @@ -1119,9 +713,6 @@ packages: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} @@ -1134,13 +725,6 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.10.0: - resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} - engines: {node: '>=4'} - - axobject-query@3.1.1: - resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1211,9 +795,6 @@ packages: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} - classnames@2.5.1: - resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} - clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} @@ -1222,6 +803,10 @@ packages: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + cli-truncate@4.0.0: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} @@ -1282,9 +867,6 @@ packages: engines: {node: '>=16'} hasBin: true - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - core-js-compat@3.38.0: resolution: {integrity: sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==} @@ -1335,12 +917,6 @@ packages: engines: {node: '>=4'} hasBin: true - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dargs@8.1.0: resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} engines: {node: '>=12'} @@ -1386,10 +962,6 @@ packages: resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} engines: {node: '>=10'} - deep-equal@2.2.3: - resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} - engines: {node: '>= 0.4'} - deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -1416,13 +988,14 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + electron-to-chromium@1.5.7: resolution: {integrity: sha512-6FTNWIWMxMy/ZY6799nBlPtF1DFDQ6VQJ7yyDP27SJNt5lwtQ5ufqVvHylb3fdQefvRcgA3fKcFMJi9OLwBRNw==} @@ -1432,9 +1005,6 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - emojilib@2.4.0: resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} @@ -1442,10 +1012,6 @@ packages: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -1469,13 +1035,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - - es-iterator-helpers@1.0.19: - resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} - engines: {node: '>= 0.4'} - es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} @@ -1527,14 +1086,6 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-config-xo-react@0.27.0: - resolution: {integrity: sha512-wiV215xQIn71XZyyVfaOXHaFpR1B14IJttwOjMi/eqUK1s+ojJdHr7eHqTLaGUfh6FKgWha1QNwePlIXx7mBUg==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=8.6.0' - eslint-plugin-react: '>=7.29.0' - eslint-plugin-react-hooks: '>=4.3.0' - eslint-config-xo-typescript@4.0.0: resolution: {integrity: sha512-pmSWzVpvzEjZHG7S/rN34cFXAoe6YbvWFBQSitEXD5CcT2SULfykYl8hcYXss37r5N3SmJYAiO6VlcfkPiDRxg==} engines: {node: '>=18'} @@ -1607,12 +1158,6 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jsx-a11y@6.9.0: - resolution: {integrity: sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - eslint-plugin-n@17.10.2: resolution: {integrity: sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1643,18 +1188,6 @@ packages: peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-plugin-react-hooks@4.6.2: - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - - eslint-plugin-react@7.35.0: - resolution: {integrity: sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-sql@2.1.0: resolution: {integrity: sha512-UPapPPhK1ADgQDTogpApiSAh6bYjrt2daYkKCdApHm5KPbq9qR4ca4TPyYod06bAnLgswbri6Z9gEPAy0R+B1A==} engines: {node: '>=12'} @@ -1711,9 +1244,6 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -1722,6 +1252,9 @@ packages: resolution: {integrity: sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==} engines: {node: '>=6.0.0'} + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} @@ -1789,6 +1322,15 @@ packages: flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -1810,13 +1352,6 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - generic-names@4.0.0: - resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -1873,10 +1408,6 @@ packages: resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} engines: {node: '>=6'} - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -1896,11 +1427,6 @@ packages: globjoin@0.1.4: resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} - goober@2.1.14: - resolution: {integrity: sha512-4UpC0NdGyAFqLNPnhCT2iHpza2q+RAY3GV85a/mRPdzyPQMsj0KmMMuetdIkzWRbJ+Hgau1EZztq8ImmiMGhsg==} - peerDependencies: - csstype: ^3.0.10 - gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} @@ -1955,6 +1481,14 @@ packages: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} + http-proxy-middleware@3.0.3: + resolution: {integrity: sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + http2-client@1.3.5: resolution: {integrity: sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==} @@ -1967,12 +1501,6 @@ packages: engines: {node: '>=18'} hasBin: true - icss-utils@5.1.0: - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -2025,10 +1553,6 @@ packages: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} - is-arguments@1.1.1: - 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'} @@ -2039,10 +1563,6 @@ packages: is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} - is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} @@ -2074,9 +1594,6 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -2089,10 +1606,6 @@ packages: resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} engines: {node: '>=18'} - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - is-get-set-prop@1.0.0: resolution: {integrity: sha512-DvAYZ1ZgGUz4lzxKMPYlt08qAUqyG9ckSg2pIjfvcQ7+pkVNUHk8yVLXOnCLe5WKXhLop8oorWFBJHpwWQpszQ==} @@ -2100,13 +1613,13 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + is-js-type@2.0.0: resolution: {integrity: sha512-Aj13l47+uyTjlQNHtXBV8Cji3jb037vxwMWCgopRR8h6xocgBGW3qG8qGlIOEmbXQtkKShKuBM9e8AA1OeQ+xw==} - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -2145,10 +1658,6 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} - is-set@2.0.3: - 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'} @@ -2173,26 +1682,23 @@ packages: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} - is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} - engines: {node: '>= 0.4'} - isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - jiti@1.21.6: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true @@ -2212,11 +1718,6 @@ packages: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -2241,19 +1742,10 @@ packages: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -2264,20 +1756,6 @@ packages: known-css-properties@0.29.0: resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} - known-css-properties@0.34.0: - resolution: {integrity: sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==} - - ky@1.6.0: - resolution: {integrity: sha512-MG7hlH26oShC4Lysk5TYzXshHLfEY52IJ0ofOeCsifquqTymbXCSTx+g4rXO30XYxoM6Y1ed5pNnpULe9Rx19A==} - engines: {node: '>=18'} - - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -2301,10 +1779,6 @@ packages: resolution: {integrity: sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==} engines: {node: '>=18.0.0'} - loader-utils@3.3.1: - resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} - engines: {node: '>= 12.13.0'} - locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -2356,32 +1830,22 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lowercase-keys@1.0.1: resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} engines: {node: '>=0.10.0'} - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} - map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -2415,6 +1879,15 @@ packages: resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime@4.0.4: + resolution: {integrity: sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==} + engines: {node: '>=16'} + hasBin: true + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -2465,9 +1938,6 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-emoji@2.1.3: resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} engines: {node: '>=18'} @@ -2526,18 +1996,10 @@ packages: resolution: {integrity: sha512-p7p/7ltzPDiBs6DqxOrIbtRdwxxVRBj5ROukeNb9RgA+fawhrz5n2hpNz8DDmYR//tviJSj7nUnlppGmONkjiQ==} engines: {node: '>=0.10.0'} - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - object-inspect@1.13.2: resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} engines: {node: '>= 0.4'} - object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} - object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -2546,10 +2008,6 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} - object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} - object.fromentries@2.0.8: resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} @@ -2577,6 +2035,10 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + ora@8.1.0: + resolution: {integrity: sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==} + engines: {node: '>=18'} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -2672,38 +2134,6 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - postcss-media-query-parser@0.2.3: - resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} - - 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==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-scope@3.2.0: - resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-values@4.0.0: - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules@6.0.0: - resolution: {integrity: sha512-7DGfnlyi/ju82BRzTIjWS5C4Tafmzl3R79YP/PASiocj+aa6yYphHhhKUOEoXQToId5rgyFgJ88+ccOUydjBXQ==} - peerDependencies: - postcss: ^8.0.0 - postcss-resolve-nested-selector@0.1.6: resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} @@ -2713,21 +2143,10 @@ packages: peerDependencies: postcss: ^8.3.3 - postcss-scss@4.0.9: - resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.4.29 - postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss-sorting@8.0.2: - resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==} - peerDependencies: - postcss: ^8.4.20 - postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -2752,9 +2171,6 @@ packages: engines: {node: '>=14'} hasBin: true - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - proto-props@2.0.0: resolution: {integrity: sha512-2yma2tog9VaRZY2mn3Wq51uiSW4NcPYT1cQdBagwyrznrilKSZwIZ0UG3ZPL/mx+axEns0hE35T5ufOYZXEnBQ==} engines: {node: '>=4'} @@ -2770,48 +2186,6 @@ packages: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - - react-hook-form@7.52.2: - resolution: {integrity: sha512-pqfPEbERnxxiNMPd0bzmt1tuaPcVccywFDpyk2uV5xCIBphHV5T8SVnX9/o3kplPE1zzKt77+YIoq+EMwJp56A==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 || ^19 - - react-hot-toast@2.4.1: - resolution: {integrity: sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==} - engines: {node: '>=10'} - peerDependencies: - react: '>=16' - react-dom: '>=16' - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} - - react-router-dom@6.26.1: - resolution: {integrity: sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - react-router@6.26.1: - resolution: {integrity: sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -2832,10 +2206,6 @@ packages: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} engines: {node: '>=12'} - reflect.getprototypeof@1.0.6: - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} - engines: {node: '>= 0.4'} - reftools@1.1.9: resolution: {integrity: sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==} @@ -2859,6 +2229,9 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -2874,10 +2247,6 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -3032,9 +2401,6 @@ packages: resolution: {integrity: sha512-WGXA6jcaoBo5Uhw0HX/s6z/sl3zyYQ7ZOnLOJzqwpctFcFmU4L07zn51e2VSkXXFpQZFAdMZNqOGz/7h/fvcRA==} engines: {node: '>=16.0.0'} - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -3116,9 +2482,6 @@ packages: resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} engines: {node: '>=18'} - snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} @@ -3147,17 +2510,14 @@ packages: resolution: {integrity: sha512-e2ExBX6iDHoCDC1zN2NvZV49UMhKVLvvwrDjzSVHFS3TKHKtIpl2nMDQkdlbTjDVvf2bxRYBq9iXAAMZvZpGVA==} engines: {node: '>=0.10'} - stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} - string-hash@1.1.3: - resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -3166,16 +2526,6 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} - string.prototype.includes@2.0.0: - resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} - - string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} - engines: {node: '>= 0.4'} - - string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - string.prototype.trim@1.2.9: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} @@ -3218,29 +2568,6 @@ packages: style-search@0.1.0: resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} - stylelint-config-xo@0.22.0: - resolution: {integrity: sha512-E4IoDwgJqG+Q3LjeZGXNi3uOXOH5Sx6mCyxp1V4eaAm1DhuA+3X40c2GtobEIHfCv6itN/T3QKRb4V4/snIxUg==} - engines: {node: '>=16'} - peerDependencies: - stylelint: '>=14' - - stylelint-declaration-block-no-ignored-properties@2.8.0: - resolution: {integrity: sha512-Ws8Cav7Y+SPN0JsV407LrnNXWOrqGjxShf+37GBtnU/C58Syve9c0+I/xpLcFOosST3ternykn3Lp77f3ITnFw==} - engines: {node: '>=6'} - peerDependencies: - stylelint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - - stylelint-order@6.0.4: - resolution: {integrity: sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==} - peerDependencies: - stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 - - stylelint-scss@6.5.0: - resolution: {integrity: sha512-yOnYlr71wrTPT3rYyUurgTj6Rw7JUtzsZQsiPEjvs+k/yqoYHdweqpw6XN/ARpxjAuvJpddoMUvV8aAIpvUwTg==} - engines: {node: '>=18.12.0'} - peerDependencies: - stylelint: ^16.0.2 - stylelint@15.11.0: resolution: {integrity: sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==} engines: {node: ^14.13.1 || >=16.0.0} @@ -3266,9 +2593,6 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svg-parser@2.0.4: - resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - svg-tags@1.0.0: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} @@ -3306,10 +2630,6 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - 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'} @@ -3369,15 +2689,6 @@ packages: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} - typescript-eslint@8.1.0: - resolution: {integrity: sha512-prB2U3jXPJLpo1iVLN338Lvolh6OrcCZO+9Yv6AR+tvegPPptYCDBIHiEEUdqRi8gAv2bXNKfMUrgAd2ejn/ow==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - typescript@5.5.4: resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} engines: {node: '>=14.17'} @@ -3406,12 +2717,6 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - use-debounced-loader@0.1.1: - resolution: {integrity: sha512-FbY/ynor7wZV55v1EvvAvu8CvSoEKT1azS2zFb/aLlL0vySbqTM7x9fIcaOJN++E52mVINNDe2VmWWd+Q00S+A==} - engines: {node: '>=10'} - peerDependencies: - react: '>=16' - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -3421,11 +2726,6 @@ packages: varint@6.0.0: resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} - vite-plugin-svgr@4.2.0: - resolution: {integrity: sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA==} - peerDependencies: - vite: ^2.6.0 || 3 || 4 || 5 - vite@5.4.6: resolution: {integrity: sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==} engines: {node: ^18.0.0 || >=20.0.0} @@ -3466,14 +2766,6 @@ packages: which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - which-builtin-type@1.1.4: - resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} - engines: {node: '>= 0.4'} - - which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - which-typed-array@1.1.15: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} @@ -3510,9 +2802,6 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -3550,90 +2839,13 @@ packages: snapshots: - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 picocolors: 1.0.1 - '@babel/compat-data@7.25.2': {} - - '@babel/core@7.25.2': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.3 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - convert-source-map: 2.0.0 - debug: 4.3.6 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.25.0': - dependencies: - '@babel/types': 7.25.2 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - '@babel/helper-compilation-targets@7.25.2': - dependencies: - '@babel/compat-data': 7.25.2 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.3 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-module-imports@7.24.7': - dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 - transitivePeerDependencies: - - supports-color - - '@babel/helper-plugin-utils@7.24.8': {} - - '@babel/helper-simple-access@7.24.7': - dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.24.8': {} - '@babel/helper-validator-identifier@7.24.7': {} - '@babel/helper-validator-option@7.24.8': {} - - '@babel/helpers@7.25.0': - dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 - '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 @@ -3641,44 +2853,6 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/parser@7.25.3': - dependencies: - '@babel/types': 7.25.2 - - '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/template@7.25.0': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 - - '@babel/traverse@7.25.3': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 - debug: 4.3.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.25.2': - dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - '@bufbuild/protobuf@1.10.0': optional: true @@ -3900,8 +3074,6 @@ snapshots: '@eslint/js@8.57.0': {} - '@eslint/js@9.9.0': {} - '@exodus/schemasafe@1.3.0': {} '@humanwhocodes/config-array@0.11.14': @@ -3916,23 +3088,6 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@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 - '@logto/connector-kit@4.0.0': dependencies: '@logto/language-kit': 1.1.0 @@ -3951,6 +3106,15 @@ snapshots: optionalDependencies: zod: 3.23.8 + '@logto/core-kit@2.5.1': + dependencies: + '@logto/language-kit': 1.1.0 + '@logto/shared': 3.1.1 + '@silverhand/essentials': 2.9.1 + color: 4.2.3 + optionalDependencies: + zod: 3.23.8 + '@logto/language-kit@1.1.0': optionalDependencies: zod: 3.23.8 @@ -3988,6 +3152,23 @@ snapshots: libphonenumber-js: 1.11.7 nanoid: 5.0.7 + '@logto/tunnel@0.2.1': + dependencies: + '@logto/core-kit': 2.5.1 + '@logto/shared': 3.1.1 + '@silverhand/essentials': 2.9.1 + adm-zip: 0.5.16 + chalk: 5.3.0 + dotenv: 16.4.5 + find-up: 7.0.0 + http-proxy-middleware: 3.0.3 + mime: 4.0.4 + ora: 8.1.0 + yargs: 17.7.2 + zod: 3.23.8 + transitivePeerDependencies: + - supports-color + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4002,16 +3183,6 @@ snapshots: '@pkgr/core@0.1.1': {} - '@remix-run/router@1.19.1': {} - - '@rollup/pluginutils@5.1.0(rollup@4.20.0)': - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 4.20.0 - '@rollup/rollup-android-arm-eabi@4.20.0': optional: true @@ -4060,27 +3231,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.20.0': optional: true - '@silverhand/eslint-config-react@6.0.2(eslint@8.57.0)(postcss@8.4.41)(prettier@3.3.3)(stylelint@15.11.0(typescript@5.5.4))(typescript@5.5.4)': - dependencies: - '@silverhand/eslint-config': 6.0.1(eslint@8.57.0)(prettier@3.3.3)(typescript@5.5.4) - eslint-config-xo-react: 0.27.0(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.35.0(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) - eslint-plugin-react: 7.35.0(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) - postcss-scss: 4.0.9(postcss@8.4.41) - stylelint: 15.11.0(typescript@5.5.4) - stylelint-config-xo: 0.22.0(stylelint@15.11.0(typescript@5.5.4)) - stylelint-scss: 6.5.0(stylelint@15.11.0(typescript@5.5.4)) - transitivePeerDependencies: - - '@types/eslint' - - eslint - - eslint-import-resolver-node - - eslint-import-resolver-webpack - - postcss - - prettier - - supports-color - - typescript - '@silverhand/eslint-config@6.0.1(eslint@8.57.0)(prettier@3.3.3)(typescript@5.5.4)': dependencies: '@silverhand/eslint-plugin-fp': 2.5.0(eslint@8.57.0) @@ -4090,10 +3240,10 @@ snapshots: eslint-config-prettier: 9.1.0(eslint@8.57.0) eslint-config-xo: 0.44.0(eslint@8.57.0) eslint-config-xo-typescript: 4.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-consistent-default-export-name: 0.0.15 eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-n: 17.10.2(eslint@8.57.0) eslint-plugin-no-use-extend-native: 0.5.0 eslint-plugin-prettier: 5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) @@ -4119,114 +3269,22 @@ snapshots: '@silverhand/essentials@2.9.1': {} - '@silverhand/ts-config-react@6.0.0(typescript@5.5.4)': - dependencies: - '@silverhand/ts-config': 6.0.0(typescript@5.5.4) - typescript: 5.5.4 - '@silverhand/ts-config@6.0.0(typescript@5.5.4)': dependencies: typescript: 5.5.4 '@sindresorhus/is@4.6.0': {} - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - - '@svgr/babel-preset@8.1.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.25.2) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.25.2) - - '@svgr/core@8.1.0(typescript@5.5.4)': - dependencies: - '@babel/core': 7.25.2 - '@svgr/babel-preset': 8.1.0(@babel/core@7.25.2) - camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@5.5.4) - snake-case: 3.0.4 - transitivePeerDependencies: - - supports-color - - typescript - - '@svgr/hast-util-to-babel-ast@8.0.0': - dependencies: - '@babel/types': 7.25.2 - entities: 4.5.0 - - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.5.4))': - dependencies: - '@babel/core': 7.25.2 - '@svgr/babel-preset': 8.1.0(@babel/core@7.25.2) - '@svgr/core': 8.1.0(typescript@5.5.4) - '@svgr/hast-util-to-babel-ast': 8.0.0 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 - - '@types/babel__generator@7.6.8': - dependencies: - '@babel/types': 7.25.2 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 - - '@types/babel__traverse@7.20.6': - dependencies: - '@babel/types': 7.25.2 - '@types/conventional-commits-parser@5.0.0': dependencies: '@types/node': 22.3.0 '@types/estree@1.0.5': {} + '@types/http-proxy@1.17.15': + dependencies: + '@types/node': 22.3.0 + '@types/json5@0.0.29': {} '@types/minimist@1.2.5': {} @@ -4237,17 +3295,6 @@ snapshots: '@types/normalize-package-data@2.4.4': {} - '@types/prop-types@15.7.12': {} - - '@types/react-dom@18.3.0': - dependencies: - '@types/react': 18.3.3 - - '@types/react@18.3.3': - dependencies: - '@types/prop-types': 15.7.12 - csstype: 3.1.3 - '@types/swagger-schema-official@2.0.25': {} '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': @@ -4268,24 +3315,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.1.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 8.1.0 - '@typescript-eslint/type-utils': 8.1.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/utils': 8.1.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.1.0 - eslint: 8.57.0 - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 7.18.0 @@ -4299,29 +3328,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@typescript-eslint/scope-manager': 8.1.0 - '@typescript-eslint/types': 8.1.0 - '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.1.0 - debug: 4.3.6 - eslint: 8.57.0 - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/scope-manager@7.18.0': dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.1.0': - dependencies: - '@typescript-eslint/types': 8.1.0 - '@typescript-eslint/visitor-keys': 8.1.0 - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) @@ -4334,22 +3345,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.1.0(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.1.0(eslint@8.57.0)(typescript@5.5.4) - debug: 4.3.6 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - eslint - - supports-color - '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.1.0': {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 7.18.0 @@ -4365,21 +3362,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.1.0(typescript@5.5.4)': - dependencies: - '@typescript-eslint/types': 8.1.0 - '@typescript-eslint/visitor-keys': 8.1.0 - debug: 4.3.6 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) @@ -4391,51 +3373,13 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.1.0(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 8.1.0 - '@typescript-eslint/types': 8.1.0 - '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript - '@typescript-eslint/visitor-keys@7.18.0': dependencies: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.1.0': - dependencies: - '@typescript-eslint/types': 8.1.0 - eslint-visitor-keys: 3.4.3 - '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react@3.1.0(vite@5.4.6(@types/node@22.3.0)(sass-embedded@1.77.8))': - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) - magic-string: 0.27.0 - react-refresh: 0.14.2 - vite: 5.4.6(@types/node@22.3.0)(sass-embedded@1.77.8) - transitivePeerDependencies: - - supports-color - - '@vitejs/plugin-react@4.3.1(vite@5.4.6(@types/node@22.3.0)(sass-embedded@1.77.8))': - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) - '@types/babel__core': 7.20.5 - react-refresh: 0.14.2 - vite: 5.4.6(@types/node@22.3.0)(sass-embedded@1.77.8) - transitivePeerDependencies: - - supports-color - '@withtyped/client@0.8.7(zod@3.23.8)': dependencies: '@withtyped/server': 0.13.6(zod@3.23.8) @@ -4463,6 +3407,8 @@ snapshots: acorn@8.12.1: {} + adm-zip@0.5.16: {} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -4497,10 +3443,6 @@ snapshots: argparse@2.0.1: {} - aria-query@5.1.3: - dependencies: - deep-equal: 2.2.3 - array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 @@ -4519,15 +3461,6 @@ snapshots: array-union@2.1.0: {} - array.prototype.findlast@1.2.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 - array.prototype.findlastindex@1.2.5: dependencies: call-bind: 1.0.7 @@ -4551,14 +3484,6 @@ snapshots: es-abstract: 1.23.3 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-errors: 1.3.0 - es-shim-unscopables: 1.0.2 - arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 @@ -4572,8 +3497,6 @@ snapshots: arrify@1.0.1: {} - ast-types-flow@0.0.8: {} - astral-regex@2.0.0: {} astring@1.8.6: {} @@ -4582,12 +3505,6 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - axe-core@4.10.0: {} - - axobject-query@3.1.1: - dependencies: - deep-equal: 2.2.3 - balanced-match@1.0.2: {} balanced-match@2.0.0: {} @@ -4657,8 +3574,6 @@ snapshots: ci-info@4.0.0: {} - classnames@2.5.1: {} - clean-regexp@1.0.0: dependencies: escape-string-regexp: 1.0.5 @@ -4667,6 +3582,8 @@ snapshots: dependencies: restore-cursor: 5.1.0 + cli-spinners@2.9.2: {} + cli-truncate@4.0.0: dependencies: slice-ansi: 5.0.0 @@ -4730,8 +3647,6 @@ snapshots: meow: 12.1.1 split2: 4.2.0 - convert-source-map@2.0.0: {} - core-js-compat@3.38.0: dependencies: browserslist: 4.23.3 @@ -4780,10 +3695,6 @@ snapshots: cssesc@3.0.0: {} - csstype@3.1.3: {} - - damerau-levenshtein@1.0.8: {} - dargs@8.1.0: {} data-view-buffer@1.0.1: @@ -4821,27 +3732,6 @@ snapshots: decamelize@5.0.1: {} - deep-equal@2.2.3: - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - es-get-iterator: 1.1.3 - get-intrinsic: 1.2.4 - 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 - 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 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - deep-is@0.1.4: {} define-data-property@1.1.4: @@ -4870,23 +3760,18 @@ snapshots: dependencies: esutils: 2.0.3 - dot-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.6.3 - dot-prop@5.3.0: dependencies: is-obj: 2.0.0 + dotenv@16.4.5: {} + electron-to-chromium@1.5.7: {} emoji-regex@10.3.0: {} emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} - emojilib@2.4.0: {} enhanced-resolve@5.17.1: @@ -4894,8 +3779,6 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.1 - entities@4.5.0: {} - env-paths@2.2.1: {} environment@1.1.0: {} @@ -4959,35 +3842,6 @@ snapshots: es-errors@1.3.0: {} - es-get-iterator@1.1.3: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - 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 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 - - es-iterator-helpers@1.0.19: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - 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.2 - safe-array-concat: 1.1.2 - es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 @@ -5056,12 +3910,6 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-config-xo-react@0.27.0(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.35.0(eslint@8.57.0))(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - eslint-plugin-react: 7.35.0(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) - eslint-config-xo-typescript@4.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4): dependencies: '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) @@ -5082,13 +3930,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 4.3.6 enhanced-resolve: 5.17.1 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.6 is-core-module: 2.15.0 @@ -5099,24 +3947,14 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0) transitivePeerDependencies: - supports-color @@ -5138,7 +3976,7 @@ snapshots: eslint: 8.57.0 ignore: 5.3.2 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -5148,7 +3986,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.15.0 is-glob: 4.0.3 @@ -5165,26 +4003,6 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0): - dependencies: - aria-query: 5.1.3 - array-includes: 3.1.8 - array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.8 - axe-core: 4.10.0 - axobject-query: 3.1.1 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.19 - eslint: 8.57.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - safe-regex-test: 1.0.3 - string.prototype.includes: 2.0.0 - eslint-plugin-n@17.10.2(eslint@8.57.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) @@ -5217,32 +4035,6 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - - eslint-plugin-react@7.35.0(eslint@8.57.0): - dependencies: - array-includes: 3.1.8 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.19 - eslint: 8.57.0 - estraverse: 5.3.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.8 - object.fromentries: 2.0.8 - object.values: 1.2.0 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.11 - string.prototype.repeat: 1.0.0 - eslint-plugin-sql@2.1.0(eslint@8.57.0): dependencies: astring: 1.8.6 @@ -5351,12 +4143,12 @@ snapshots: estraverse@5.3.0: {} - estree-walker@2.0.2: {} - esutils@2.0.3: {} eta@2.2.0: {} + eventemitter3@4.0.7: {} + eventemitter3@5.0.1: {} execa@8.0.1: @@ -5433,6 +4225,10 @@ snapshots: flatted@3.3.1: {} + follow-redirects@1.15.9(debug@4.3.6): + optionalDependencies: + debug: 4.3.6 + for-each@0.3.3: dependencies: is-callable: 1.2.7 @@ -5453,12 +4249,6 @@ snapshots: functions-have-names@1.2.3: {} - generic-names@4.0.0: - dependencies: - loader-utils: 3.3.1 - - gensync@1.0.0-beta.2: {} - get-caller-file@2.0.5: {} get-east-asian-width@1.2.0: {} @@ -5522,8 +4312,6 @@ snapshots: kind-of: 6.0.3 which: 1.3.1 - globals@11.12.0: {} - globals@13.24.0: dependencies: type-fest: 0.20.2 @@ -5546,10 +4334,6 @@ snapshots: globjoin@0.1.4: {} - goober@2.1.14(csstype@3.1.3): - dependencies: - csstype: 3.1.3 - gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 @@ -5590,16 +4374,31 @@ snapshots: html-tags@3.3.1: {} + http-proxy-middleware@3.0.3: + dependencies: + '@types/http-proxy': 1.17.15 + debug: 4.3.6 + http-proxy: 1.18.1(debug@4.3.6) + is-glob: 4.0.3 + is-plain-object: 5.0.0 + micromatch: 4.0.8 + transitivePeerDependencies: + - supports-color + + http-proxy@1.18.1(debug@4.3.6): + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.9(debug@4.3.6) + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + http2-client@1.3.5: {} human-signals@5.0.0: {} husky@9.1.4: {} - icss-utils@5.1.0(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - ignore@5.3.2: {} immutable@4.3.7: @@ -5639,11 +4438,6 @@ snapshots: hasown: 2.0.2 side-channel: 1.0.6 - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 @@ -5653,10 +4447,6 @@ snapshots: is-arrayish@0.3.2: {} - is-async-function@2.0.0: - dependencies: - has-tostringtag: 1.0.2 - is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 @@ -5686,10 +4476,6 @@ snapshots: is-extglob@2.1.1: {} - is-finalizationregistry@1.0.2: - dependencies: - call-bind: 1.0.7 - is-fullwidth-code-point@3.0.0: {} is-fullwidth-code-point@4.0.0: {} @@ -5698,10 +4484,6 @@ snapshots: dependencies: get-east-asian-width: 1.2.0 - is-generator-function@1.0.10: - dependencies: - has-tostringtag: 1.0.2 - is-get-set-prop@1.0.0: dependencies: get-set-props: 0.1.0 @@ -5711,12 +4493,12 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-interactive@2.0.0: {} + is-js-type@2.0.0: dependencies: js-types: 1.0.0 - is-map@2.0.3: {} - is-negative-zero@2.0.3: {} is-number-object@1.0.7: @@ -5748,8 +4530,6 @@ snapshots: call-bind: 1.0.7 has-tostringtag: 1.0.2 - is-set@2.0.3: {} - is-shared-array-buffer@1.0.3: dependencies: call-bind: 1.0.7 @@ -5772,29 +4552,18 @@ snapshots: dependencies: which-typed-array: 1.1.15 - is-weakmap@2.0.2: {} + is-unicode-supported@1.3.0: {} - is-weakref@1.0.2: - dependencies: - call-bind: 1.0.7 + is-unicode-supported@2.1.0: {} - is-weakset@2.0.3: + is-weakref@1.0.2: dependencies: call-bind: 1.0.7 - get-intrinsic: 1.2.4 isarray@2.0.5: {} isexe@2.0.0: {} - iterator.prototype@1.1.2: - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.6 - set-function-name: 2.0.2 - jiti@1.21.6: {} js-tokens@4.0.0: {} @@ -5807,8 +4576,6 @@ snapshots: jsesc@0.5.0: {} - jsesc@2.5.2: {} - jsesc@3.0.2: {} json-buffer@3.0.1: {} @@ -5825,17 +4592,8 @@ snapshots: dependencies: minimist: 1.2.8 - json5@2.2.3: {} - jsonparse@1.3.1: {} - jsx-ast-utils@3.3.5: - dependencies: - array-includes: 3.1.8 - array.prototype.flat: 1.3.2 - object.assign: 4.1.5 - object.values: 1.2.0 - keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -5844,16 +4602,6 @@ snapshots: known-css-properties@0.29.0: {} - known-css-properties@0.34.0: {} - - ky@1.6.0: {} - - language-subtag-registry@0.3.23: {} - - language-tags@1.0.9: - dependencies: - language-subtag-registry: 0.3.23 - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -5889,8 +4637,6 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.0 - loader-utils@3.3.1: {} - locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -5929,6 +4675,11 @@ snapshots: lodash@4.17.21: {} + log-symbols@6.0.0: + dependencies: + chalk: 5.3.0 + is-unicode-supported: 1.3.0 + log-update@6.1.0: dependencies: ansi-escapes: 7.0.0 @@ -5937,28 +4688,12 @@ snapshots: strip-ansi: 7.1.0 wrap-ansi: 9.0.0 - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lower-case@2.0.2: - dependencies: - tslib: 2.6.3 - lowercase-keys@1.0.1: {} - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - lru-cache@6.0.0: dependencies: yallist: 4.0.0 - magic-string@0.27.0: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - map-obj@1.0.1: {} map-obj@4.3.0: {} @@ -5993,6 +4728,13 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime@4.0.4: {} + mimic-fn@4.0.0: {} mimic-function@5.0.1: {} @@ -6027,11 +4769,6 @@ snapshots: natural-compare@1.4.0: {} - no-case@3.0.4: - dependencies: - lower-case: 2.0.2 - tslib: 2.6.3 - node-emoji@2.1.3: dependencies: '@sindresorhus/is': 4.6.0 @@ -6106,15 +4843,8 @@ snapshots: obj-props@1.4.0: {} - object-assign@4.1.1: {} - object-inspect@1.13.2: {} - object-is@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - object-keys@1.1.1: {} object.assign@4.1.5: @@ -6124,12 +4854,6 @@ snapshots: has-symbols: 1.0.3 object-keys: 1.1.1 - object.entries@1.1.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - object.fromentries@2.0.8: dependencies: call-bind: 1.0.7 @@ -6170,6 +4894,18 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + ora@8.1.0: + dependencies: + chalk: 5.3.0 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.0 + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -6242,60 +4978,17 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-media-query-parser@0.2.3: {} - - postcss-modules-extract-imports@3.1.0(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - - postcss-modules-local-by-default@4.0.5(postcss@8.4.41): - dependencies: - icss-utils: 5.1.0(postcss@8.4.41) - postcss: 8.4.41 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - - postcss-modules-scope@3.2.0(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - postcss-selector-parser: 6.1.2 - - postcss-modules-values@4.0.0(postcss@8.4.41): - dependencies: - icss-utils: 5.1.0(postcss@8.4.41) - postcss: 8.4.41 - - postcss-modules@6.0.0(postcss@8.4.41): - dependencies: - generic-names: 4.0.0 - icss-utils: 5.1.0(postcss@8.4.41) - lodash.camelcase: 4.3.0 - postcss: 8.4.41 - postcss-modules-extract-imports: 3.1.0(postcss@8.4.41) - postcss-modules-local-by-default: 4.0.5(postcss@8.4.41) - postcss-modules-scope: 3.2.0(postcss@8.4.41) - postcss-modules-values: 4.0.0(postcss@8.4.41) - string-hash: 1.1.3 - postcss-resolve-nested-selector@0.1.6: {} postcss-safe-parser@6.0.0(postcss@8.4.41): dependencies: postcss: 8.4.41 - postcss-scss@4.0.9(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-sorting@8.0.2(postcss@8.4.47): - dependencies: - postcss: 8.4.47 - postcss-value-parser@4.2.0: {} postcss@8.4.41: @@ -6318,12 +5011,6 @@ snapshots: prettier@3.3.3: {} - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - proto-props@2.0.0: {} punycode@2.3.1: {} @@ -6332,44 +5019,6 @@ snapshots: quick-lru@5.1.1: {} - react-dom@18.3.1(react@18.3.1): - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - react-hook-form@7.52.2(react@18.3.1): - dependencies: - react: 18.3.1 - - react-hot-toast@2.4.1(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - goober: 2.1.14(csstype@3.1.3) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - csstype - - react-is@16.13.1: {} - - react-refresh@0.14.2: {} - - react-router-dom@6.26.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@remix-run/router': 1.19.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-router: 6.26.1(react@18.3.1) - - react-router@6.26.1(react@18.3.1): - dependencies: - '@remix-run/router': 1.19.1 - react: 18.3.1 - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 @@ -6401,16 +5050,6 @@ snapshots: indent-string: 5.0.0 strip-indent: 4.0.0 - reflect.getprototypeof@1.0.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - which-builtin-type: 1.1.4 - reftools@1.1.9: {} regexp-tree@0.1.27: {} @@ -6430,6 +5069,8 @@ snapshots: require-from-string@2.0.2: {} + requires-port@1.0.0: {} + resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -6442,12 +5083,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@2.0.0-next.5: - dependencies: - is-core-module: 2.15.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - restore-cursor@5.1.0: dependencies: onetime: 7.0.0 @@ -6584,10 +5219,6 @@ snapshots: sass-embedded-win32-x64: 1.77.8 optional: true - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - semver@5.7.2: {} semver@6.3.1: {} @@ -6679,11 +5310,6 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 - snake-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.6.3 - source-map-js@1.2.0: {} source-map-js@1.2.1: {} @@ -6706,14 +5332,10 @@ snapshots: sql-parse@0.1.5: {} - stop-iteration-iterator@1.0.0: - dependencies: - internal-slot: 1.0.7 + stdin-discarder@0.2.2: {} string-argv@0.3.2: {} - string-hash@1.1.3: {} - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -6726,31 +5348,6 @@ snapshots: get-east-asian-width: 1.2.0 strip-ansi: 7.1.0 - string.prototype.includes@2.0.0: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.3 - - string.prototype.matchall@4.0.11: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - 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 - 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 - string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 @@ -6794,33 +5391,6 @@ snapshots: style-search@0.1.0: {} - stylelint-config-xo@0.22.0(stylelint@15.11.0(typescript@5.5.4)): - dependencies: - stylelint: 15.11.0(typescript@5.5.4) - stylelint-declaration-block-no-ignored-properties: 2.8.0(stylelint@15.11.0(typescript@5.5.4)) - stylelint-order: 6.0.4(stylelint@15.11.0(typescript@5.5.4)) - - stylelint-declaration-block-no-ignored-properties@2.8.0(stylelint@15.11.0(typescript@5.5.4)): - dependencies: - stylelint: 15.11.0(typescript@5.5.4) - - stylelint-order@6.0.4(stylelint@15.11.0(typescript@5.5.4)): - dependencies: - postcss: 8.4.47 - postcss-sorting: 8.0.2(postcss@8.4.47) - stylelint: 15.11.0(typescript@5.5.4) - - stylelint-scss@6.5.0(stylelint@15.11.0(typescript@5.5.4)): - dependencies: - css-tree: 2.3.1 - is-plain-object: 5.0.0 - known-css-properties: 0.34.0 - postcss-media-query-parser: 0.2.3 - postcss-resolve-nested-selector: 0.1.6 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - stylelint: 15.11.0(typescript@5.5.4) - stylelint@15.11.0(typescript@5.5.4): dependencies: '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) @@ -6887,8 +5457,6 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svg-parser@2.0.4: {} - svg-tags@1.0.0: {} swagger-schema-official@2.0.0-bab6bed: {} @@ -6947,8 +5515,6 @@ snapshots: through@2.3.8: {} - to-fast-properties@2.0.0: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -7014,17 +5580,6 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - typescript-eslint@8.1.0(eslint@8.57.0)(typescript@5.5.4): - dependencies: - '@typescript-eslint/eslint-plugin': 8.1.0(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': 8.1.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/utils': 8.1.0(eslint@8.57.0)(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - eslint - - supports-color - typescript@5.5.4: {} unbox-primitive@1.0.2: @@ -7050,10 +5605,6 @@ snapshots: dependencies: punycode: 2.3.1 - use-debounced-loader@0.1.1(react@18.3.1): - dependencies: - react: 18.3.1 - util-deprecate@1.0.2: {} validate-npm-package-license@3.0.4: @@ -7064,17 +5615,6 @@ snapshots: varint@6.0.0: optional: true - vite-plugin-svgr@4.2.0(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.6(@types/node@22.3.0)(sass-embedded@1.77.8)): - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.20.0) - '@svgr/core': 8.1.0(typescript@5.5.4) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.4)) - vite: 5.4.6(@types/node@22.3.0)(sass-embedded@1.77.8) - transitivePeerDependencies: - - rollup - - supports-color - - typescript - vite@5.4.6(@types/node@22.3.0)(sass-embedded@1.77.8): dependencies: esbuild: 0.21.5 @@ -7100,28 +5640,6 @@ snapshots: is-string: 1.0.7 is-symbol: 1.0.4 - which-builtin-type@1.1.4: - dependencies: - function.prototype.name: 1.1.6 - 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 - isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - - which-collection@1.0.2: - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.3 - which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 @@ -7161,8 +5679,6 @@ snapshots: y18n@5.0.8: {} - yallist@3.1.1: {} - yallist@4.0.0: {} yaml@1.10.2: {}