diff --git a/.changeset/sour-windows-wave.md b/.changeset/sour-windows-wave.md new file mode 100644 index 000000000..9f0cd2183 --- /dev/null +++ b/.changeset/sour-windows-wave.md @@ -0,0 +1,12 @@ +--- +"@logto/experience": minor +"@logto/demo-app": minor +"@logto/console": minor +--- + +use Vite for transpilation and bundling + +Removed ParcelJS and replaced with Vite. No breaking changes should be expected, but use a minor version bump to catch your attention. + +> [!Important] +> The browserlist configuration for `@logto/experience` and been synced with what is stated in README.md. diff --git a/.dockerignore b/.dockerignore index f0ffc0d34..63ef24f82 100644 --- a/.dockerignore +++ b/.dockerignore @@ -33,5 +33,4 @@ dump.rdb .devcontainer .github .husky -.parcel-cache .vscode diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 573e44e09..000000000 --- a/.npmrc +++ /dev/null @@ -1,6 +0,0 @@ -# Hoist for Parcel -public-hoist-pattern[]=@parcel/* -public-hoist-pattern[]=postcss -public-hoist-pattern[]=process -public-hoist-pattern[]=*eslint* -public-hoist-pattern[]=buffer diff --git a/.scripts/package.sh b/.scripts/package.sh index c7654930a..7e2720b18 100755 --- a/.scripts/package.sh +++ b/.scripts/package.sh @@ -18,7 +18,7 @@ fi # Some node packages use `src` as their dist folder, so ignore them from the rm list in the end find \ -.git .changeset .devcontainer .github .husky .parcel-cache .scripts .vscode pnpm-*.yaml *.js \ +.git .changeset .devcontainer .github .husky .scripts .vscode pnpm-*.yaml *.js \ packages/**/src \ packages/**/*.config.js packages/**/*.config.ts packages/**/tsconfig*.json \ ! -path '**/node_modules/**' \ diff --git a/.vscode/tsx.code-snippets b/.vscode/tsx.code-snippets index 2f1caf11c..be2b52bab 100644 --- a/.vscode/tsx.code-snippets +++ b/.vscode/tsx.code-snippets @@ -10,7 +10,7 @@ "scope": "javascriptreact,typescriptreact", "prefix": "isc", "body": [ - "import * as styles from './index.module.scss';", + "import styles from './index.module.scss';", "$0" ], "description": "Import SCSS styles from the same directory." diff --git a/Dockerfile b/Dockerfile index 7cbb6d9fd..ecce9c4c4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,6 @@ RUN apk add --no-cache python3 make g++ rsync COPY . . ### Install dependencies and build ### -RUN node .scripts/update-parcelrc.js RUN pnpm i ### Set if dev features enabled ### @@ -35,7 +34,7 @@ RUN rm -rf node_modules packages/**/node_modules RUN NODE_ENV=production pnpm i ### Clean up ### -RUN rm -rf .scripts .parcel-cache pnpm-*.yaml packages/cloud +RUN rm -rf .scripts pnpm-*.yaml packages/cloud ###### [STAGE] Seal ###### FROM node:20-alpine as app diff --git a/package.json b/package.json index dcdf6ccb1..db517658c 100644 --- a/package.json +++ b/package.json @@ -52,9 +52,5 @@ }, "dependencies": { "@logto/cli": "workspace:^1.1.0" - }, - "//": "@see https://parceljs.org/features/dependency-resolution/#package-exports", - "@parcel/resolver-default": { - "packageExports": true } } diff --git a/packages/console/src/assets/docs/guides/README.md b/packages/console/src/assets/docs/guides/README.md index 29f0f0dea..c2517133e 100644 --- a/packages/console/src/assets/docs/guides/README.md +++ b/packages/console/src/assets/docs/guides/README.md @@ -52,6 +52,9 @@ Images and other assets (if any) should be placed in the `assets` directory of t ### Update metadata +> [!Note] +> This section is outdated and we should test if it's still necessary. + Since Parcel doesn't support dynamic import (see [#112](https://github.com/parcel-bundler/parcel/issues/112) [#125](https://github.com/parcel-bundler/parcel/issues/125)), we need to run `node generate-metadata.js` to update the metadata in `index.ts`, thus we can use it in the guide components with React lazy loading. This may be fixed by replacing Parcel with something else. diff --git a/packages/console/src/components/Markdown/index.tsx b/packages/console/src/components/Markdown/index.tsx index ef077e022..7fb575a74 100644 --- a/packages/console/src/components/Markdown/index.tsx +++ b/packages/console/src/components/Markdown/index.tsx @@ -4,6 +4,8 @@ import classNames from 'classnames'; import { memo, useRef } from 'react'; import ReactMarkdown from 'react-markdown'; import remarkGfm from 'remark-gfm'; + +// TODO: @charles double check if this is still needed /** * Workaround for the markdown crash issue in the parcel dev build. It seems parcel does * something clever in dev mode and messing up the `hastToReact` module. Manually adding diff --git a/packages/core/src/middleware/koa-spa-proxy.ts b/packages/core/src/middleware/koa-spa-proxy.ts index da429efe1..9ad11eb8f 100644 --- a/packages/core/src/middleware/koa-spa-proxy.ts +++ b/packages/core/src/middleware/koa-spa-proxy.ts @@ -45,15 +45,7 @@ export default function koaSpaProxy ${target}`); }, rewrite: (requestPath) => { - const fullPath = '/' + path.join(prefix, requestPath); - // Static files - if (requestPath.includes('.')) { - return fullPath; - } - - // In-app routes - // We'll gradually migrate our single-page apps to use vite, which can directly return the full path - return packagePath === 'demo-app' || packagePath === 'console' ? fullPath : requestPath; + return '/' + path.join(prefix, requestPath); }, }); diff --git a/packages/demo-app/src/include.d/vite-end.d.ts b/packages/demo-app/src/include.d/vite-end.d.ts new file mode 100644 index 000000000..590e60249 --- /dev/null +++ b/packages/demo-app/src/include.d/vite-end.d.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/no-unassigned-import +import 'vite/client'; diff --git a/packages/demo-app/src/index.tsx b/packages/demo-app/src/index.tsx index 2a650d5cd..2fff32634 100644 --- a/packages/demo-app/src/index.tsx +++ b/packages/demo-app/src/index.tsx @@ -1,6 +1,4 @@ import { createRoot } from 'react-dom/client'; -// eslint-disable-next-line import/no-unassigned-import -import '@logto/core-kit/declaration'; import App from './App'; diff --git a/packages/experience/.eslintrc.cjs b/packages/experience/.eslintrc.cjs new file mode 100644 index 000000000..40bcfa69a --- /dev/null +++ b/packages/experience/.eslintrc.cjs @@ -0,0 +1,22 @@ +/** @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/.parcelrc b/packages/experience/.parcelrc deleted file mode 100644 index 4dc2b9f04..000000000 --- a/packages/experience/.parcelrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "@parcel/config-default", - "transformers": { - "**/assets/icons/*.svg": [ - "@parcel/transformer-svg-react" - ] - }, - "compressors": { - "*.{html,css,js,svg,map}": [ - "...", - "@parcel/compressor-gzip", - "@parcel/compressor-brotli" - ] - }, - "resolvers": ["parcel-resolver-ignore", "..."] -} diff --git a/packages/experience/.parcelrc.arm64 b/packages/experience/.parcelrc.arm64 deleted file mode 100644 index 8066b68ca..000000000 --- a/packages/experience/.parcelrc.arm64 +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "@parcel/config-default", - "optimizers": { - // Disable optimizers in arm64 arch https://github.com/parcel-bundler/parcel/issues/7402 - "*.{jpg,jpeg,png}": [] - }, - "transformers": { - "**/assets/icons/*.svg": [ - "@parcel/transformer-svg-react" - ] - }, - "compressors": { - "*.{html,css,js,svg,map}": [ - "...", - "@parcel/compressor-gzip", - "@parcel/compressor-brotli" - ] - }, - "resolvers": ["parcel-resolver-ignore", "..."] -} diff --git a/packages/experience/src/index.html b/packages/experience/index.html similarity index 88% rename from packages/experience/src/index.html rename to packages/experience/index.html index 8b5cb68dc..2cdf82128 100644 --- a/packages/experience/src/index.html +++ b/packages/experience/index.html @@ -14,7 +14,7 @@
- + diff --git a/packages/experience/jest.config.ts b/packages/experience/jest.config.ts index 588c07945..e9a92e6ea 100644 --- a/packages/experience/jest.config.ts +++ b/packages/experience/jest.config.ts @@ -25,7 +25,7 @@ const config: Config.InitialOptions = { '\\.(png)$': 'jest-transform-stub', }, moduleNameMapper: { - '^@/(.*)$': '/src/$1', + '^@/([^?]*)(\\?.*)?$': '/src/$1', '^@logto/shared/(.*)$': '/../shared/lib/$1', '\\.module\\.(css|sass|scss)$': 'identity-obj-proxy', }, diff --git a/packages/experience/package.json b/packages/experience/package.json index d71876be7..3151875bc 100644 --- a/packages/experience/package.json +++ b/packages/experience/package.json @@ -9,10 +9,10 @@ ], "scripts": { "precommit": "lint-staged", - "start": "parcel src/index.html", - "dev": "cross-env PORT=5001 parcel src/index.html --no-cache --hmr-port 6001", + "start": "vite", + "dev": "vite", "check": "tsc --noEmit", - "build": "pnpm check && rm -rf dist && parcel build src/index.html --no-autoinstall --no-cache --detailed-report", + "build": "pnpm check && vite build", "lint": "eslint --ext .ts --ext .tsx src", "lint:report": "pnpm lint --format json --output-file report.json", "stylelint": "stylelint \"src/**/*.scss\"", @@ -27,11 +27,6 @@ "@logto/phrases": "workspace:^1.12.0", "@logto/phrases-experience": "workspace:^1.7.0", "@logto/schemas": "workspace:^1.18.0", - "@parcel/compressor-brotli": "2.9.3", - "@parcel/compressor-gzip": "2.9.3", - "@parcel/core": "2.9.3", - "@parcel/transformer-sass": "2.9.3", - "@parcel/transformer-svg-react": "2.9.3", "@react-spring/shared": "^9.6.1", "@react-spring/web": "^9.6.1", "@silverhand/eslint-config": "6.0.1", @@ -52,11 +47,13 @@ "@types/react-helmet": "^6.1.6", "@types/react-modal": "^3.13.1", "@types/react-router-dom": "^5.3.2", + "@vitejs/plugin-react": "^4.3.1", + "browserslist": "^4.23.2", + "browserslist-to-esbuild": "^2.1.1", "camelcase-keys": "^9.1.3", "classnames": "^2.3.1", "color": "^4.2.3", "core-js": "^3.34.0", - "cross-env": "^7.0.3", "eslint": "^8.56.0", "i18next": "^22.4.15", "i18next-browser-languagedetector": "^8.0.0", @@ -69,8 +66,6 @@ "ky": "^1.2.3", "libphonenumber-js": "^1.10.51", "lint-staged": "^15.0.0", - "parcel": "2.9.3", - "parcel-resolver-ignore": "^2.1.3", "postcss": "^8.4.31", "postcss-modules": "^4.3.0", "prettier": "^3.0.0", @@ -90,42 +85,13 @@ "tiny-cookie": "^2.4.1", "typescript": "^5.5.3", "use-debounced-loader": "^0.1.1", - "zod": "^3.23.8" + "vite": "^5.3.4", + "vite-plugin-compression": "^0.5.1", + "vite-plugin-svgr": "^4.2.0" }, "engines": { "node": "^20.9.0" }, - "//": "https://github.com/parcel-bundler/parcel/issues/7636", - "targets": { - "default": { - "engines": { - "browsers": [ - "defaults", - ">0.3%", - "Chrome >= 52", - "Firefox >= 55", - "Safari >= 10", - "Edge >= 13", - "iOS >= 10", - "Electron >= 0.36" - ] - } - } - }, - "parcelIgnore": [ - "^/api/.+" - ], - "alias": { - "@/*": "./src/$1", - "superstruct": "./node_modules/superstruct/dist/index.mjs" - }, - "eslintConfig": { - "extends": "@silverhand/react", - "rules": { - "jsx-a11y/no-autofocus": "off", - "unicorn/prefer-string-replace-all": "off" - } - }, "stylelint": { "extends": "@silverhand/eslint-config-react/.stylelintrc" }, diff --git a/packages/experience/src/Layout/AppLayout/index.tsx b/packages/experience/src/Layout/AppLayout/index.tsx index 167a75174..1b0ce7beb 100644 --- a/packages/experience/src/Layout/AppLayout/index.tsx +++ b/packages/experience/src/Layout/AppLayout/index.tsx @@ -7,7 +7,7 @@ import usePlatform from '@/hooks/use-platform'; import { layoutClassNames } from '@/utils/consts'; import CustomContent from './CustomContent'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; const AppLayout = () => { const { isMobile } = usePlatform(); diff --git a/packages/experience/src/Layout/LandingPageLayout/index.tsx b/packages/experience/src/Layout/LandingPageLayout/index.tsx index 8902e71f6..06cb52fcb 100644 --- a/packages/experience/src/Layout/LandingPageLayout/index.tsx +++ b/packages/experience/src/Layout/LandingPageLayout/index.tsx @@ -10,7 +10,7 @@ import PageMeta from '@/components/PageMeta'; import { layoutClassNames } from '@/utils/consts'; import { getBrandingLogoUrl } from '@/utils/logo'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type ThirdPartyBranding = ConsentInfoResponse['application']['branding']; diff --git a/packages/experience/src/Layout/SecondaryPageLayout/index.tsx b/packages/experience/src/Layout/SecondaryPageLayout/index.tsx index 775e4eeb8..95cdb2f54 100644 --- a/packages/experience/src/Layout/SecondaryPageLayout/index.tsx +++ b/packages/experience/src/Layout/SecondaryPageLayout/index.tsx @@ -8,7 +8,7 @@ import usePlatform from '@/hooks/use-platform'; import { InlineNotification } from '../../components/Notification'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly title: TFuncKey; diff --git a/packages/experience/src/Layout/SectionLayout/index.tsx b/packages/experience/src/Layout/SectionLayout/index.tsx index 106826722..2ad4d101a 100644 --- a/packages/experience/src/Layout/SectionLayout/index.tsx +++ b/packages/experience/src/Layout/SectionLayout/index.tsx @@ -3,7 +3,7 @@ import { type ReactNode } from 'react'; import DynamicT from '@/components/DynamicT'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly title: TFuncKey; diff --git a/packages/experience/src/Layout/StaticPageLayout/index.tsx b/packages/experience/src/Layout/StaticPageLayout/index.tsx index 06c1b6252..8204e4df2 100644 --- a/packages/experience/src/Layout/StaticPageLayout/index.tsx +++ b/packages/experience/src/Layout/StaticPageLayout/index.tsx @@ -1,4 +1,4 @@ -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly children: React.ReactNode; diff --git a/packages/experience/src/Providers/AppBoundary/AppMeta.tsx b/packages/experience/src/Providers/AppBoundary/AppMeta.tsx index 10aca13e0..5b1d0403f 100644 --- a/packages/experience/src/Providers/AppBoundary/AppMeta.tsx +++ b/packages/experience/src/Providers/AppBoundary/AppMeta.tsx @@ -10,7 +10,7 @@ import defaultAppleTouchLogo from '@/assets/apple-touch-icon.png'; import defaultFavicon from '@/assets/favicon.png'; import { type SignInExperienceResponse } from '@/types'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; const themeToFavicon = Object.freeze({ [Theme.Light]: 'favicon', diff --git a/packages/experience/src/Providers/IframeModalProvider/IframeModal/index.tsx b/packages/experience/src/Providers/IframeModalProvider/IframeModal/index.tsx index 9993d47a1..0db5d5866 100644 --- a/packages/experience/src/Providers/IframeModalProvider/IframeModal/index.tsx +++ b/packages/experience/src/Providers/IframeModalProvider/IframeModal/index.tsx @@ -6,7 +6,7 @@ import LoadingBar from 'react-top-loading-bar'; import NavBar from '@/components/NavBar'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type ModalProps = { readonly className?: string; diff --git a/packages/experience/src/components/BrandingHeader/index.tsx b/packages/experience/src/components/BrandingHeader/index.tsx index cfc1c0c32..584ed72d0 100644 --- a/packages/experience/src/components/BrandingHeader/index.tsx +++ b/packages/experience/src/components/BrandingHeader/index.tsx @@ -2,11 +2,11 @@ import type { Nullable } from '@silverhand/essentials'; import classNames from 'classnames'; import type { TFuncKey } from 'i18next'; -import ConnectIcon from '@/assets/icons/connect-icon.svg'; +import ConnectIcon from '@/assets/icons/connect-icon.svg?react'; import DynamicT from '../DynamicT'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; export type Props = { readonly className?: string; diff --git a/packages/experience/src/components/Button/IconButton.tsx b/packages/experience/src/components/Button/IconButton.tsx index c709f9bd6..f6fa57bc0 100644 --- a/packages/experience/src/components/Button/IconButton.tsx +++ b/packages/experience/src/components/Button/IconButton.tsx @@ -2,7 +2,7 @@ import classNames from 'classnames'; import type { HTMLProps, Ref } from 'react'; import { forwardRef } from 'react'; -import * as styles from './IconButton.module.scss'; +import styles from './IconButton.module.scss'; export type Props = Omit, 'type'>; diff --git a/packages/experience/src/components/Button/MfaFactorButton.tsx b/packages/experience/src/components/Button/MfaFactorButton.tsx index 2d52d0ac2..be8a5d0c2 100644 --- a/packages/experience/src/components/Button/MfaFactorButton.tsx +++ b/packages/experience/src/components/Button/MfaFactorButton.tsx @@ -2,15 +2,15 @@ import { MfaFactor } from '@logto/schemas'; import classNames from 'classnames'; import { type TFuncKey } from 'i18next'; -import ArrowNext from '@/assets/icons/arrow-next.svg'; -import FactorBackupCode from '@/assets/icons/factor-backup-code.svg'; -import FactorTotp from '@/assets/icons/factor-totp.svg'; -import FactorWebAuthn from '@/assets/icons/factor-webauthn.svg'; +import ArrowNext from '@/assets/icons/arrow-next.svg?react'; +import FactorBackupCode from '@/assets/icons/factor-backup-code.svg?react'; +import FactorTotp from '@/assets/icons/factor-totp.svg?react'; +import FactorWebAuthn from '@/assets/icons/factor-webauthn.svg?react'; import DynamicT from '../DynamicT'; -import * as mfaFactorButtonStyles from './MfaFactorButton.module.scss'; -import * as styles from './index.module.scss'; +import mfaFactorButtonStyles from './MfaFactorButton.module.scss'; +import styles from './index.module.scss'; export type Props = { readonly factor: MfaFactor; diff --git a/packages/experience/src/components/Button/RotatingRingIcon.tsx b/packages/experience/src/components/Button/RotatingRingIcon.tsx index ef29529fe..0c8d18b87 100644 --- a/packages/experience/src/components/Button/RotatingRingIcon.tsx +++ b/packages/experience/src/components/Button/RotatingRingIcon.tsx @@ -1,6 +1,6 @@ -import Ring from '@/assets/icons/loading-ring.svg'; +import Ring from '@/assets/icons/loading-ring.svg?react'; -import * as RotatingRingIconStyles from './RotatingRingIcon.module.scss'; +import RotatingRingIconStyles from './RotatingRingIcon.module.scss'; const RotatingRingIcon = () => ; diff --git a/packages/experience/src/components/Button/SocialLinkButton.tsx b/packages/experience/src/components/Button/SocialLinkButton.tsx index ddfec5661..e9b598f51 100644 --- a/packages/experience/src/components/Button/SocialLinkButton.tsx +++ b/packages/experience/src/components/Button/SocialLinkButton.tsx @@ -3,8 +3,8 @@ import { useTranslation } from 'react-i18next'; import { useDebouncedLoader } from 'use-debounced-loader'; import RotatingRingIcon from './RotatingRingIcon'; -import * as socialLinkButtonStyles from './SocialLinkButton.module.scss'; -import * as styles from './index.module.scss'; +import socialLinkButtonStyles from './SocialLinkButton.module.scss'; +import styles from './index.module.scss'; export type Props = { readonly isDisabled?: boolean; diff --git a/packages/experience/src/components/Button/index.tsx b/packages/experience/src/components/Button/index.tsx index 2166df5c7..549aea5f7 100644 --- a/packages/experience/src/components/Button/index.tsx +++ b/packages/experience/src/components/Button/index.tsx @@ -6,7 +6,7 @@ import { useDebouncedLoader } from 'use-debounced-loader'; import DynamicT from '../DynamicT'; import RotatingRingIcon from './RotatingRingIcon'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; export type ButtonType = 'primary' | 'secondary'; diff --git a/packages/experience/src/components/Checkbox/index.tsx b/packages/experience/src/components/Checkbox/index.tsx index 33afbcaa5..423f994e5 100644 --- a/packages/experience/src/components/Checkbox/index.tsx +++ b/packages/experience/src/components/Checkbox/index.tsx @@ -2,9 +2,9 @@ import classNames from 'classnames'; import type { InputHTMLAttributes, Ref } from 'react'; import { forwardRef } from 'react'; -import CheckBox from '@/assets/icons/checkbox-icon.svg'; +import CheckBox from '@/assets/icons/checkbox-icon.svg?react'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly size?: 'small' | 'default'; diff --git a/packages/experience/src/components/ConfirmModal/AcModal.tsx b/packages/experience/src/components/ConfirmModal/AcModal.tsx index 17c454783..724b1e5f6 100644 --- a/packages/experience/src/components/ConfirmModal/AcModal.tsx +++ b/packages/experience/src/components/ConfirmModal/AcModal.tsx @@ -3,14 +3,14 @@ import { useRef } from 'react'; import { useTranslation } from 'react-i18next'; import ReactModal from 'react-modal'; -import CloseIcon from '@/assets/icons/close-icon.svg'; +import CloseIcon from '@/assets/icons/close-icon.svg?react'; import Button from '@/components/Button'; import IconButton from '@/components/Button/IconButton'; import { onKeyDownHandler } from '@/utils/a11y'; -import * as modalStyles from '../../scss/modal.module.scss'; +import modalStyles from '../../scss/modal.module.scss'; -import * as styles from './Acmodal.module.scss'; +import styles from './Acmodal.module.scss'; import type { ModalProps } from './type'; const AcModal = ({ diff --git a/packages/experience/src/components/ConfirmModal/MobileModal.tsx b/packages/experience/src/components/ConfirmModal/MobileModal.tsx index 0e888fa5d..a47c87a79 100644 --- a/packages/experience/src/components/ConfirmModal/MobileModal.tsx +++ b/packages/experience/src/components/ConfirmModal/MobileModal.tsx @@ -3,9 +3,9 @@ import ReactModal from 'react-modal'; import Button from '@/components/Button'; -import * as modalStyles from '../../scss/modal.module.scss'; +import modalStyles from '../../scss/modal.module.scss'; -import * as styles from './MobileModal.module.scss'; +import styles from './MobileModal.module.scss'; import type { ModalProps } from './type'; const MobileModal = ({ diff --git a/packages/experience/src/components/Divider/index.tsx b/packages/experience/src/components/Divider/index.tsx index 19d4a37ca..d865e1ceb 100644 --- a/packages/experience/src/components/Divider/index.tsx +++ b/packages/experience/src/components/Divider/index.tsx @@ -3,7 +3,7 @@ import type { TFuncKey } from 'i18next'; import DynamicT from '../DynamicT'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly className?: string; diff --git a/packages/experience/src/components/ErrorMessage/index.tsx b/packages/experience/src/components/ErrorMessage/index.tsx index f92af6ed9..64d2fd789 100644 --- a/packages/experience/src/components/ErrorMessage/index.tsx +++ b/packages/experience/src/components/ErrorMessage/index.tsx @@ -3,7 +3,7 @@ import type { TFuncKey } from 'i18next'; import type { ReactNode } from 'react'; import { useTranslation } from 'react-i18next'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type RemovePrefix = T extends `${Prefix}${string}` ? never : T; diff --git a/packages/experience/src/components/InputFields/InputField/NotchedBorder/index.tsx b/packages/experience/src/components/InputFields/InputField/NotchedBorder/index.tsx index c4137b309..f8e097e47 100644 --- a/packages/experience/src/components/InputFields/InputField/NotchedBorder/index.tsx +++ b/packages/experience/src/components/InputFields/InputField/NotchedBorder/index.tsx @@ -1,6 +1,6 @@ import classNames from 'classnames'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly label: string; diff --git a/packages/experience/src/components/InputFields/InputField/index.tsx b/packages/experience/src/components/InputFields/InputField/index.tsx index a12c1d786..345a1e73c 100644 --- a/packages/experience/src/components/InputFields/InputField/index.tsx +++ b/packages/experience/src/components/InputFields/InputField/index.tsx @@ -14,7 +14,7 @@ import { import ErrorMessage from '@/components/ErrorMessage'; import NotchedBorder from './NotchedBorder'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; export type Props = Omit, 'prefix'> & { readonly className?: string; diff --git a/packages/experience/src/components/InputFields/PasswordInputField/index.tsx b/packages/experience/src/components/InputFields/PasswordInputField/index.tsx index a5dd13bf2..253e1c5dd 100644 --- a/packages/experience/src/components/InputFields/PasswordInputField/index.tsx +++ b/packages/experience/src/components/InputFields/PasswordInputField/index.tsx @@ -2,8 +2,8 @@ import type { Nullable } from '@silverhand/essentials'; import type { Ref } from 'react'; import { forwardRef, useRef, useImperativeHandle } from 'react'; -import PasswordHideIcon from '@/assets/icons/password-hide-icon.svg'; -import PasswordShowIcon from '@/assets/icons/password-show-icon.svg'; +import PasswordHideIcon from '@/assets/icons/password-hide-icon.svg?react'; +import PasswordShowIcon from '@/assets/icons/password-show-icon.svg?react'; import IconButton from '@/components/Button/IconButton'; import useToggle from '@/hooks/use-toggle'; diff --git a/packages/experience/src/components/InputFields/SmartInputField/AnimatedPrefix/index.tsx b/packages/experience/src/components/InputFields/SmartInputField/AnimatedPrefix/index.tsx index d50515804..5ecaf67c3 100644 --- a/packages/experience/src/components/InputFields/SmartInputField/AnimatedPrefix/index.tsx +++ b/packages/experience/src/components/InputFields/SmartInputField/AnimatedPrefix/index.tsx @@ -3,7 +3,7 @@ import { useSpring, animated, config } from '@react-spring/web'; import type { Nullable } from '@silverhand/essentials'; import { cloneElement, useCallback, useRef, useState } from 'react'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly children: JSX.Element; // Limit to one element diff --git a/packages/experience/src/components/InputFields/SmartInputField/CountryCodeSelector/CountryCodeDropdown/index.tsx b/packages/experience/src/components/InputFields/SmartInputField/CountryCodeSelector/CountryCodeDropdown/index.tsx index 73944705b..715a2b101 100644 --- a/packages/experience/src/components/InputFields/SmartInputField/CountryCodeSelector/CountryCodeDropdown/index.tsx +++ b/packages/experience/src/components/InputFields/SmartInputField/CountryCodeSelector/CountryCodeDropdown/index.tsx @@ -6,8 +6,8 @@ import { useCallback, useLayoutEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import ReactModal from 'react-modal'; -import CheckMark from '@/assets/icons/check-mark.svg'; -import SearchIcon from '@/assets/icons/search-icon.svg'; +import CheckMark from '@/assets/icons/check-mark.svg?react'; +import SearchIcon from '@/assets/icons/search-icon.svg?react'; import InputField from '@/components/InputFields/InputField'; import NavBar from '@/components/NavBar'; import useDebounce from '@/hooks/use-debounce'; @@ -15,7 +15,7 @@ import usePlatform from '@/hooks/use-platform'; import { onKeyDownHandler } from '@/utils/a11y'; import type { CountryMetaData } from '@/utils/country-code'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly isOpen: boolean; diff --git a/packages/experience/src/components/InputFields/SmartInputField/CountryCodeSelector/index.tsx b/packages/experience/src/components/InputFields/SmartInputField/CountryCodeSelector/index.tsx index 1a039f833..a9e1af60c 100644 --- a/packages/experience/src/components/InputFields/SmartInputField/CountryCodeSelector/index.tsx +++ b/packages/experience/src/components/InputFields/SmartInputField/CountryCodeSelector/index.tsx @@ -3,12 +3,12 @@ import classNames from 'classnames'; import type { ForwardedRef } from 'react'; import { useState, useMemo, forwardRef } from 'react'; -import DownArrowIcon from '@/assets/icons/arrow-down.svg'; +import DownArrowIcon from '@/assets/icons/arrow-down.svg?react'; import { onKeyDownHandler } from '@/utils/a11y'; import { getCountryList, getDefaultCountryCallingCode } from '@/utils/country-code'; import CountryCodeDropdown from './CountryCodeDropdown'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly className?: string; diff --git a/packages/experience/src/components/InputFields/SmartInputField/index.tsx b/packages/experience/src/components/InputFields/SmartInputField/index.tsx index 3c2ec0649..fa4f062bd 100644 --- a/packages/experience/src/components/InputFields/SmartInputField/index.tsx +++ b/packages/experience/src/components/InputFields/SmartInputField/index.tsx @@ -4,7 +4,7 @@ import type { Nullable } from '@silverhand/essentials'; import type { HTMLProps, Ref } from 'react'; import { useEffect, useImperativeHandle, useRef, forwardRef } from 'react'; -import ClearIcon from '@/assets/icons/clear-icon.svg'; +import ClearIcon from '@/assets/icons/clear-icon.svg?react'; import IconButton from '@/components/Button/IconButton'; import InputField from '../InputField'; diff --git a/packages/experience/src/components/LoadingLayer/LoadingIcon.tsx b/packages/experience/src/components/LoadingLayer/LoadingIcon.tsx index fa800dee5..8a13e9f10 100644 --- a/packages/experience/src/components/LoadingLayer/LoadingIcon.tsx +++ b/packages/experience/src/components/LoadingLayer/LoadingIcon.tsx @@ -1,8 +1,8 @@ import classNames from 'classnames'; -import LoadingSvg from '@/assets/icons/loading-icon.svg'; +import LoadingSvg from '@/assets/icons/loading-icon.svg?react'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly className?: string; diff --git a/packages/experience/src/components/LoadingLayer/index.tsx b/packages/experience/src/components/LoadingLayer/index.tsx index 52b43e236..fb5c69cf2 100644 --- a/packages/experience/src/components/LoadingLayer/index.tsx +++ b/packages/experience/src/components/LoadingLayer/index.tsx @@ -1,7 +1,7 @@ import LoadingMask from '../LoadingMask'; import LoadingIcon from './LoadingIcon'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; export { default as LoadingIcon } from './LoadingIcon'; diff --git a/packages/experience/src/components/LoadingMask/index.tsx b/packages/experience/src/components/LoadingMask/index.tsx index b77e44351..e70fb6556 100644 --- a/packages/experience/src/components/LoadingMask/index.tsx +++ b/packages/experience/src/components/LoadingMask/index.tsx @@ -1,6 +1,6 @@ import { type ReactNode } from 'react'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly children?: ReactNode; diff --git a/packages/experience/src/components/LogtoSignature/index.tsx b/packages/experience/src/components/LogtoSignature/index.tsx index d70526a6c..4af7cd47f 100644 --- a/packages/experience/src/components/LogtoSignature/index.tsx +++ b/packages/experience/src/components/LogtoSignature/index.tsx @@ -2,11 +2,11 @@ import { Theme } from '@logto/schemas'; import { useContext } from 'react'; import PageContext from '@/Providers/PageContextProvider/PageContext'; -import LogtoLogtoDark from '@/assets/icons/logto-logo-dark.svg'; -import LogtoLogoLight from '@/assets/icons/logto-logo-light.svg'; -import LogtoLogoShadow from '@/assets/icons/logto-logo-shadow.svg'; +import LogtoLogtoDark from '@/assets/icons/logto-logo-dark.svg?react'; +import LogtoLogoLight from '@/assets/icons/logto-logo-light.svg?react'; +import LogtoLogoShadow from '@/assets/icons/logto-logo-shadow.svg?react'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; const logtoUrl = `https://logto.io/?${new URLSearchParams({ utm_source: 'sign_in', diff --git a/packages/experience/src/components/NavBar/index.tsx b/packages/experience/src/components/NavBar/index.tsx index 3ee1a4566..abcfdab53 100644 --- a/packages/experience/src/components/NavBar/index.tsx +++ b/packages/experience/src/components/NavBar/index.tsx @@ -3,11 +3,11 @@ import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; -import ArrowPrev from '@/assets/icons/arrow-prev.svg'; -import NavClose from '@/assets/icons/nav-close.svg'; +import ArrowPrev from '@/assets/icons/arrow-prev.svg?react'; +import NavClose from '@/assets/icons/nav-close.svg?react'; import { onKeyDownHandler } from '@/utils/a11y'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly title?: string; diff --git a/packages/experience/src/components/Notification/AppNotification/index.tsx b/packages/experience/src/components/Notification/AppNotification/index.tsx index 48aba527b..1446ca469 100644 --- a/packages/experience/src/components/Notification/AppNotification/index.tsx +++ b/packages/experience/src/components/Notification/AppNotification/index.tsx @@ -2,10 +2,10 @@ import classNames from 'classnames'; import type { CSSProperties, ForwardedRef, ReactNode } from 'react'; import { forwardRef } from 'react'; -import InfoIcon from '@/assets/icons/info-icon.svg'; +import InfoIcon from '@/assets/icons/info-icon.svg?react'; import TextLink from '@/components/TextLink'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; /* eslint-disable react/require-default-props */ type Props = { diff --git a/packages/experience/src/components/Notification/InlineNotification/index.tsx b/packages/experience/src/components/Notification/InlineNotification/index.tsx index 83f77d761..2c65edf2a 100644 --- a/packages/experience/src/components/Notification/InlineNotification/index.tsx +++ b/packages/experience/src/components/Notification/InlineNotification/index.tsx @@ -3,7 +3,7 @@ import type { TFuncKey } from 'i18next'; import DynamicT from '@/components/DynamicT'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly className?: string; diff --git a/packages/experience/src/components/SwitchMfaFactorsLink/index.tsx b/packages/experience/src/components/SwitchMfaFactorsLink/index.tsx index 3439e853c..3b5acc112 100644 --- a/packages/experience/src/components/SwitchMfaFactorsLink/index.tsx +++ b/packages/experience/src/components/SwitchMfaFactorsLink/index.tsx @@ -1,4 +1,4 @@ -import SwitchIcon from '@/assets/icons/switch-icon.svg'; +import SwitchIcon from '@/assets/icons/switch-icon.svg?react'; import { UserMfaFlow } from '@/types'; import { type MfaFlowState } from '@/types/guard'; diff --git a/packages/experience/src/components/TermsLinks/index.tsx b/packages/experience/src/components/TermsLinks/index.tsx index 3922539dd..3b5208ca4 100644 --- a/packages/experience/src/components/TermsLinks/index.tsx +++ b/packages/experience/src/components/TermsLinks/index.tsx @@ -2,7 +2,7 @@ import { useTranslation } from 'react-i18next'; import TextLink, { type Props as TextLinkProps } from '@/components/TextLink'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly linkType?: TextLinkProps['type']; diff --git a/packages/experience/src/components/TextLink/index.tsx b/packages/experience/src/components/TextLink/index.tsx index 9621d5626..9e613d4c5 100644 --- a/packages/experience/src/components/TextLink/index.tsx +++ b/packages/experience/src/components/TextLink/index.tsx @@ -11,7 +11,7 @@ import usePlatform from '@/hooks/use-platform'; import DynamicT from '../DynamicT'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; export type Props = AnchorHTMLAttributes & { readonly className?: string; diff --git a/packages/experience/src/components/Toast/index.tsx b/packages/experience/src/components/Toast/index.tsx index c5dfedb67..25c46e114 100644 --- a/packages/experience/src/components/Toast/index.tsx +++ b/packages/experience/src/components/Toast/index.tsx @@ -1,7 +1,7 @@ import { useEffect, useState } from 'react'; import ReactModal from 'react-modal'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly message: string; diff --git a/packages/experience/src/components/VerificationCode/index.tsx b/packages/experience/src/components/VerificationCode/index.tsx index 36816cd3c..627452d3f 100644 --- a/packages/experience/src/components/VerificationCode/index.tsx +++ b/packages/experience/src/components/VerificationCode/index.tsx @@ -3,7 +3,7 @@ import { useMemo, useRef, useCallback, useEffect } from 'react'; import ErrorMessage from '@/components/ErrorMessage'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; export const defaultLength = 6; diff --git a/packages/experience/src/constants/env.ts b/packages/experience/src/constants/env.ts deleted file mode 100644 index d30c92c95..000000000 --- a/packages/experience/src/constants/env.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { yes } from '@silverhand/essentials'; - -export const isDevFeaturesEnabled = - process.env.NODE_ENV !== 'production' || yes(process.env.DEV_FEATURES_ENABLED); diff --git a/packages/experience/src/containers/DevelopmentTenantNotification/index.tsx b/packages/experience/src/containers/DevelopmentTenantNotification/index.tsx index 36bcab2b7..852a63948 100644 --- a/packages/experience/src/containers/DevelopmentTenantNotification/index.tsx +++ b/packages/experience/src/containers/DevelopmentTenantNotification/index.tsx @@ -2,7 +2,7 @@ import { useContext, useEffect, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import PageContext from '@/Providers/PageContextProvider/PageContext'; -import DevIcon from '@/assets/icons/dev-icon.svg'; +import DevIcon from '@/assets/icons/dev-icon.svg?react'; import usePlatform from '@/hooks/use-platform'; /** diff --git a/packages/experience/src/containers/MfaFactorList/index.tsx b/packages/experience/src/containers/MfaFactorList/index.tsx index c213498a3..535555a9e 100644 --- a/packages/experience/src/containers/MfaFactorList/index.tsx +++ b/packages/experience/src/containers/MfaFactorList/index.tsx @@ -8,7 +8,7 @@ import useStartWebAuthnProcessing from '@/hooks/use-start-webauthn-processing'; import { UserMfaFlow } from '@/types'; import { type MfaFlowState } from '@/types/guard'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly flow: UserMfaFlow; diff --git a/packages/experience/src/containers/SetPassword/Lite.tsx b/packages/experience/src/containers/SetPassword/Lite.tsx index e3c831d76..a0ab77abd 100644 --- a/packages/experience/src/containers/SetPassword/Lite.tsx +++ b/packages/experience/src/containers/SetPassword/Lite.tsx @@ -8,7 +8,7 @@ import ErrorMessage from '@/components/ErrorMessage'; import { PasswordInputField } from '@/components/InputFields'; import HiddenIdentifierInput from './HiddenIdentifierInput'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly className?: string; diff --git a/packages/experience/src/containers/SetPassword/SetPassword.tsx b/packages/experience/src/containers/SetPassword/SetPassword.tsx index 0505c7bcf..d668270d8 100644 --- a/packages/experience/src/containers/SetPassword/SetPassword.tsx +++ b/packages/experience/src/containers/SetPassword/SetPassword.tsx @@ -3,7 +3,7 @@ import { useCallback, useEffect, useState } from 'react'; import { useForm } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; -import ClearIcon from '@/assets/icons/clear-icon.svg'; +import ClearIcon from '@/assets/icons/clear-icon.svg?react'; import Button from '@/components/Button'; import IconButton from '@/components/Button/IconButton'; import ErrorMessage from '@/components/ErrorMessage'; @@ -11,7 +11,7 @@ import { InputField } from '@/components/InputFields'; import HiddenIdentifierInput from './HiddenIdentifierInput'; import TogglePassword from './TogglePassword'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly className?: string; diff --git a/packages/experience/src/containers/SetPassword/TogglePassword.tsx b/packages/experience/src/containers/SetPassword/TogglePassword.tsx index 64e593393..4f302d821 100644 --- a/packages/experience/src/containers/SetPassword/TogglePassword.tsx +++ b/packages/experience/src/containers/SetPassword/TogglePassword.tsx @@ -3,7 +3,7 @@ import { useTranslation } from 'react-i18next'; import Checkbox from '@/components/Checkbox'; import { onKeyDownHandler } from '@/utils/a11y'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly isChecked?: boolean; diff --git a/packages/experience/src/containers/SocialLanding/index.tsx b/packages/experience/src/containers/SocialLanding/index.tsx index 0342d629b..9df755cf0 100644 --- a/packages/experience/src/containers/SocialLanding/index.tsx +++ b/packages/experience/src/containers/SocialLanding/index.tsx @@ -3,7 +3,7 @@ import classNames from 'classnames'; import { LoadingIcon } from '@/components/LoadingLayer'; import useConnectors from '@/hooks/use-connectors'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly className?: string; diff --git a/packages/experience/src/containers/SocialLinkAccount/index.tsx b/packages/experience/src/containers/SocialLinkAccount/index.tsx index 54852e41e..5733b65b2 100644 --- a/packages/experience/src/containers/SocialLinkAccount/index.tsx +++ b/packages/experience/src/containers/SocialLinkAccount/index.tsx @@ -11,7 +11,7 @@ import useSocialRegister from '@/hooks/use-social-register'; import type { SocialRelatedUserInfo } from '@/types/guard'; import { maskEmail, maskPhone } from '@/utils/format'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; import useBindSocialRelatedUser from './use-social-link-related-user'; type Props = { diff --git a/packages/experience/src/containers/SocialSignInList/index.tsx b/packages/experience/src/containers/SocialSignInList/index.tsx index 24c902482..a1f337fc8 100644 --- a/packages/experience/src/containers/SocialSignInList/index.tsx +++ b/packages/experience/src/containers/SocialSignInList/index.tsx @@ -6,7 +6,7 @@ import SocialLinkButton from '@/components/Button/SocialLinkButton'; import useNativeMessageListener from '@/hooks/use-native-message-listener'; import { getLogoUrl } from '@/utils/logo'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; import useSocial from './use-social'; type Props = { diff --git a/packages/experience/src/containers/TermsAndPrivacyCheckbox/index.tsx b/packages/experience/src/containers/TermsAndPrivacyCheckbox/index.tsx index 424f2078a..3ff868b56 100644 --- a/packages/experience/src/containers/TermsAndPrivacyCheckbox/index.tsx +++ b/packages/experience/src/containers/TermsAndPrivacyCheckbox/index.tsx @@ -7,7 +7,7 @@ import TermsLinks from '@/components/TermsLinks'; import useTerms from '@/hooks/use-terms'; import { onKeyDownHandler } from '@/utils/a11y'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly className?: string; diff --git a/packages/experience/src/containers/TotpCodeVerification/index.tsx b/packages/experience/src/containers/TotpCodeVerification/index.tsx index 6fb473000..a15080bb5 100644 --- a/packages/experience/src/containers/TotpCodeVerification/index.tsx +++ b/packages/experience/src/containers/TotpCodeVerification/index.tsx @@ -5,7 +5,7 @@ import Button from '@/components/Button'; import VerificationCodeInput from '@/components/VerificationCode'; import { type UserMfaFlow } from '@/types'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; import useTotpCodeVerification from './use-totp-code-verification'; const totpCodeLength = 6; diff --git a/packages/experience/src/containers/VerificationCode/PasswordSignInLink.tsx b/packages/experience/src/containers/VerificationCode/PasswordSignInLink.tsx index aea7cdafe..4719af732 100644 --- a/packages/experience/src/containers/VerificationCode/PasswordSignInLink.tsx +++ b/packages/experience/src/containers/VerificationCode/PasswordSignInLink.tsx @@ -1,4 +1,4 @@ -import SwitchIcon from '@/assets/icons/switch-icon.svg'; +import SwitchIcon from '@/assets/icons/switch-icon.svg?react'; import TextLink from '@/components/TextLink'; import { UserFlow } from '@/types'; diff --git a/packages/experience/src/containers/VerificationCode/index.tsx b/packages/experience/src/containers/VerificationCode/index.tsx index f24bfd927..26ee193fe 100644 --- a/packages/experience/src/containers/VerificationCode/index.tsx +++ b/packages/experience/src/containers/VerificationCode/index.tsx @@ -9,7 +9,7 @@ import VerificationCodeInput, { defaultLength } from '@/components/VerificationC import { UserFlow } from '@/types'; import PasswordSignInLink from './PasswordSignInLink'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; import useResendVerificationCode from './use-resend-verification-code'; import { getCodeVerificationHookByFlow } from './utils'; diff --git a/packages/experience/src/include.d/react-app.d.ts b/packages/experience/src/include.d/react-app.d.ts deleted file mode 100644 index c2ef4a4de..000000000 --- a/packages/experience/src/include.d/react-app.d.ts +++ /dev/null @@ -1,65 +0,0 @@ -// Copied from react-scripts/lib/react-app.d.ts - -declare module '*.avif' { - const src: string; - export default src; -} - -declare module '*.bmp' { - const src: string; - export default src; -} - -declare module '*.gif' { - const src: string; - export default src; -} - -declare module '*.jpg' { - const src: string; - export default src; -} - -declare module '*.jpeg' { - const src: string; - export default src; -} - -declare module '*.png' { - const src: string; - export default src; -} - -declare module '*.webp' { - const src: string; - export default src; -} - -declare module '*.svg' { - import type * as React from 'react'; - - export const ReactComponent: React.FunctionComponent< - React.SVGProps & { title?: string } - >; - - const src: string; - export default src; -} - -declare module '*.module.css' { - const classes: Readonly>; - export default classes; - export = classes; -} - -declare module '*.module.scss' { - const classes: Readonly>; - export default classes; - export = classes; -} - -declare module '*.module.sass' { - const classes: Readonly>; - export default classes; - export = classes; -} diff --git a/packages/experience/src/include.d/react-router-dom.d.ts b/packages/experience/src/include.d/react-router-dom.d.ts index 56d37327a..ff4278d74 100644 --- a/packages/experience/src/include.d/react-router-dom.d.ts +++ b/packages/experience/src/include.d/react-router-dom.d.ts @@ -6,7 +6,6 @@ * Reference: https://github.com/remix-run/react-router/issues/10241 */ -// eslint-disable-next-line import/no-unassigned-import import 'react-router-dom'; declare module 'react-router-dom' { diff --git a/packages/experience/src/include.d/vite-env.d.ts b/packages/experience/src/include.d/vite-env.d.ts new file mode 100644 index 000000000..eb5ce13cd --- /dev/null +++ b/packages/experience/src/include.d/vite-env.d.ts @@ -0,0 +1,2 @@ +import 'vite/client'; +import 'vite-plugin-svgr/client'; diff --git a/packages/experience/src/pages/Callback/index.tsx b/packages/experience/src/pages/Callback/index.tsx index bc141106f..a0e922499 100644 --- a/packages/experience/src/pages/Callback/index.tsx +++ b/packages/experience/src/pages/Callback/index.tsx @@ -4,7 +4,7 @@ import { useParams } from 'react-router-dom'; import StaticPageLayout from '@/Layout/StaticPageLayout'; import SocialLanding from '@/containers/SocialLanding'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; import useSocialCallbackHandler from './use-social-callback-handler'; type Parameters = { diff --git a/packages/experience/src/pages/Consent/OrganizationSelector/OrganizationItem/index.tsx b/packages/experience/src/pages/Consent/OrganizationSelector/OrganizationItem/index.tsx index f7f0abb03..435966dd4 100644 --- a/packages/experience/src/pages/Consent/OrganizationSelector/OrganizationItem/index.tsx +++ b/packages/experience/src/pages/Consent/OrganizationSelector/OrganizationItem/index.tsx @@ -2,11 +2,11 @@ import { type ConsentInfoResponse } from '@logto/schemas'; import classNames from 'classnames'; import { type ReactNode } from 'react'; -import CheckMark from '@/assets/icons/check-mark.svg'; -import OrganizationIcon from '@/assets/icons/organization-icon.svg'; +import CheckMark from '@/assets/icons/check-mark.svg?react'; +import OrganizationIcon from '@/assets/icons/organization-icon.svg?react'; import { onKeyDownHandler } from '@/utils/a11y'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; export type Organization = Exclude[number]; diff --git a/packages/experience/src/pages/Consent/OrganizationSelector/OrganizationSelectorModal/index.tsx b/packages/experience/src/pages/Consent/OrganizationSelector/OrganizationSelectorModal/index.tsx index 99c780efc..dacf13ec9 100644 --- a/packages/experience/src/pages/Consent/OrganizationSelector/OrganizationSelectorModal/index.tsx +++ b/packages/experience/src/pages/Consent/OrganizationSelector/OrganizationSelectorModal/index.tsx @@ -6,7 +6,7 @@ import usePlatform from '@/hooks/use-platform'; import OrganizationItem from '../OrganizationItem'; import { type Organization } from '../OrganizationItem'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly isOpen: boolean; diff --git a/packages/experience/src/pages/Consent/OrganizationSelector/index.tsx b/packages/experience/src/pages/Consent/OrganizationSelector/index.tsx index e89ccd5d7..f9f6e2ab5 100644 --- a/packages/experience/src/pages/Consent/OrganizationSelector/index.tsx +++ b/packages/experience/src/pages/Consent/OrganizationSelector/index.tsx @@ -3,13 +3,13 @@ import classNames from 'classnames'; import { useState, useRef } from 'react'; import { useTranslation } from 'react-i18next'; -import ExpandableIcon from '@/assets/icons/expandable-icon.svg'; +import ExpandableIcon from '@/assets/icons/expandable-icon.svg?react'; import ScopeGroup from '../ScopeGroup'; import OrganizationItem, { type Organization } from './OrganizationItem'; import OrganizationSelectorModal from './OrganizationSelectorModal'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; export { type Organization } from './OrganizationItem'; diff --git a/packages/experience/src/pages/Consent/ScopeGroup/index.tsx b/packages/experience/src/pages/Consent/ScopeGroup/index.tsx index 5559c6dd5..73402b7f1 100644 --- a/packages/experience/src/pages/Consent/ScopeGroup/index.tsx +++ b/packages/experience/src/pages/Consent/ScopeGroup/index.tsx @@ -2,11 +2,11 @@ import { type Nullable } from '@silverhand/essentials'; import classNames from 'classnames'; import { useState, useCallback } from 'react'; -import DownArrowIcon from '@/assets/icons/arrow-down.svg'; -import CheckMark from '@/assets/icons/check-mark.svg'; +import DownArrowIcon from '@/assets/icons/arrow-down.svg?react'; +import CheckMark from '@/assets/icons/check-mark.svg?react'; import { onKeyDownHandler } from '@/utils/a11y'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type ScopeGroupProps = { readonly groupName: string; diff --git a/packages/experience/src/pages/Consent/ScopesListCard/index.tsx b/packages/experience/src/pages/Consent/ScopesListCard/index.tsx index 8a562ea10..4d499ce86 100644 --- a/packages/experience/src/pages/Consent/ScopesListCard/index.tsx +++ b/packages/experience/src/pages/Consent/ScopesListCard/index.tsx @@ -5,7 +5,7 @@ import { useTranslation } from 'react-i18next'; import ScopeGroup from '../ScopeGroup'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; const isUserScope = (scope: string): scope is UserScope => Object.values(UserScope).includes(scope); diff --git a/packages/experience/src/pages/Consent/UserProfile/index.tsx b/packages/experience/src/pages/Consent/UserProfile/index.tsx index 3c037020e..5de5278a6 100644 --- a/packages/experience/src/pages/Consent/UserProfile/index.tsx +++ b/packages/experience/src/pages/Consent/UserProfile/index.tsx @@ -2,9 +2,9 @@ import { type ConsentInfoResponse } from '@logto/schemas'; import classNames from 'classnames'; import { useTranslation } from 'react-i18next'; -import UserAvatar from '@/assets/icons/default-user-avatar.svg'; +import UserAvatar from '@/assets/icons/default-user-avatar.svg?react'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly user: ConsentInfoResponse['user']; diff --git a/packages/experience/src/pages/Consent/index.tsx b/packages/experience/src/pages/Consent/index.tsx index 3c594989a..15b69846b 100644 --- a/packages/experience/src/pages/Consent/index.tsx +++ b/packages/experience/src/pages/Consent/index.tsx @@ -15,7 +15,7 @@ import useGlobalRedirectTo from '@/hooks/use-global-redirect-to'; import OrganizationSelector, { type Organization } from './OrganizationSelector'; import ScopesListCard from './ScopesListCard'; import UserProfile from './UserProfile'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; import { getRedirectUriOrigin } from './util'; const Consent = () => { diff --git a/packages/experience/src/pages/Continue/IdentifierProfileForm/index.tsx b/packages/experience/src/pages/Continue/IdentifierProfileForm/index.tsx index b26484ed6..28b965639 100644 --- a/packages/experience/src/pages/Continue/IdentifierProfileForm/index.tsx +++ b/packages/experience/src/pages/Continue/IdentifierProfileForm/index.tsx @@ -12,7 +12,7 @@ import type { } from '@/components/InputFields/SmartInputField'; import { getGeneralIdentifierErrorMessage, validateIdentifierField } from '@/utils/form'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly className?: string; diff --git a/packages/experience/src/pages/Continue/SetEmailOrPhone/SocialIdentityNotification.tsx b/packages/experience/src/pages/Continue/SetEmailOrPhone/SocialIdentityNotification.tsx index 0cc7bd388..8c67d4a64 100644 --- a/packages/experience/src/pages/Continue/SetEmailOrPhone/SocialIdentityNotification.tsx +++ b/packages/experience/src/pages/Continue/SetEmailOrPhone/SocialIdentityNotification.tsx @@ -7,7 +7,7 @@ import type { VerificationCodeIdentifier } from '@/types'; import { registeredSocialIdentityStateGuard } from '@/types/guard'; import { maskEmail } from '@/utils/format'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; const SocialIdentityNotification = ({ missingProfileTypes, diff --git a/packages/experience/src/pages/ErrorPage/index.tsx b/packages/experience/src/pages/ErrorPage/index.tsx index c104632d4..b58f536aa 100644 --- a/packages/experience/src/pages/ErrorPage/index.tsx +++ b/packages/experience/src/pages/ErrorPage/index.tsx @@ -4,13 +4,13 @@ import { useContext } from 'react'; import StaticPageLayout from '@/Layout/StaticPageLayout'; import PageContext from '@/Providers/PageContextProvider/PageContext'; -import EmptyStateDark from '@/assets/icons/empty-state-dark.svg'; -import EmptyState from '@/assets/icons/empty-state.svg'; +import EmptyStateDark from '@/assets/icons/empty-state-dark.svg?react'; +import EmptyState from '@/assets/icons/empty-state.svg?react'; import DynamicT from '@/components/DynamicT'; import NavBar from '@/components/NavBar'; import PageMeta from '@/components/PageMeta'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly title?: TFuncKey; diff --git a/packages/experience/src/pages/ForgotPassword/ForgotPasswordForm/index.tsx b/packages/experience/src/pages/ForgotPassword/ForgotPasswordForm/index.tsx index f05fd259b..ec8d810a2 100644 --- a/packages/experience/src/pages/ForgotPassword/ForgotPasswordForm/index.tsx +++ b/packages/experience/src/pages/ForgotPassword/ForgotPasswordForm/index.tsx @@ -12,7 +12,7 @@ import type { VerificationCodeIdentifier } from '@/types'; import { UserFlow } from '@/types'; import { getGeneralIdentifierErrorMessage, validateIdentifierField } from '@/utils/form'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly className?: string; diff --git a/packages/experience/src/pages/MfaBinding/BackupCodeBinding/index.tsx b/packages/experience/src/pages/MfaBinding/BackupCodeBinding/index.tsx index bf5f29b3d..1cf8cda40 100644 --- a/packages/experience/src/pages/MfaBinding/BackupCodeBinding/index.tsx +++ b/packages/experience/src/pages/MfaBinding/BackupCodeBinding/index.tsx @@ -14,7 +14,7 @@ import { UserMfaFlow } from '@/types'; import { backupCodeBindingStateGuard } from '@/types/guard'; import { isNativeWebview } from '@/utils/native-sdk'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; const BackupCodeBinding = () => { const { copyText, downloadText } = useTextHandler(); diff --git a/packages/experience/src/pages/MfaBinding/TotpBinding/SecretSection/index.tsx b/packages/experience/src/pages/MfaBinding/TotpBinding/SecretSection/index.tsx index 640433d68..6536081a8 100644 --- a/packages/experience/src/pages/MfaBinding/TotpBinding/SecretSection/index.tsx +++ b/packages/experience/src/pages/MfaBinding/TotpBinding/SecretSection/index.tsx @@ -8,7 +8,7 @@ import usePlatform from '@/hooks/use-platform'; import useTextHandler from '@/hooks/use-text-handler'; import { type TotpBindingState } from '@/types/guard'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; const SecretSection = ({ secret, secretQrCode }: TotpBindingState) => { const { t } = useTranslation(); diff --git a/packages/experience/src/pages/MfaBinding/TotpBinding/index.tsx b/packages/experience/src/pages/MfaBinding/TotpBinding/index.tsx index 7e4497e74..7d4bd534b 100644 --- a/packages/experience/src/pages/MfaBinding/TotpBinding/index.tsx +++ b/packages/experience/src/pages/MfaBinding/TotpBinding/index.tsx @@ -12,7 +12,7 @@ import { totpBindingStateGuard } from '@/types/guard'; import SecretSection from './SecretSection'; import VerificationSection from './VerificationSection'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; const TotpBinding = () => { const { state } = useLocation(); diff --git a/packages/experience/src/pages/MfaBinding/WebAuthnBinding/index.tsx b/packages/experience/src/pages/MfaBinding/WebAuthnBinding/index.tsx index 9eca7bc98..610fb5c4e 100644 --- a/packages/experience/src/pages/MfaBinding/WebAuthnBinding/index.tsx +++ b/packages/experience/src/pages/MfaBinding/WebAuthnBinding/index.tsx @@ -13,7 +13,7 @@ import { UserMfaFlow } from '@/types'; import { webAuthnStateGuard } from '@/types/guard'; import { isWebAuthnOptions } from '@/utils/webauthn'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; const WebAuthnBinding = () => { const { state } = useLocation(); diff --git a/packages/experience/src/pages/MfaVerification/BackupCodeVerification/index.tsx b/packages/experience/src/pages/MfaVerification/BackupCodeVerification/index.tsx index f7defbeb0..7d861cc65 100644 --- a/packages/experience/src/pages/MfaVerification/BackupCodeVerification/index.tsx +++ b/packages/experience/src/pages/MfaVerification/BackupCodeVerification/index.tsx @@ -13,7 +13,7 @@ import useSendMfaPayload from '@/hooks/use-send-mfa-payload'; import ErrorPage from '@/pages/ErrorPage'; import { UserMfaFlow } from '@/types'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type FormState = { code: string; diff --git a/packages/experience/src/pages/MfaVerification/TotpVerification/index.tsx b/packages/experience/src/pages/MfaVerification/TotpVerification/index.tsx index 04d38a498..7e9bc76d1 100644 --- a/packages/experience/src/pages/MfaVerification/TotpVerification/index.tsx +++ b/packages/experience/src/pages/MfaVerification/TotpVerification/index.tsx @@ -6,7 +6,7 @@ import useMfaFlowState from '@/hooks/use-mfa-factors-state'; import ErrorPage from '@/pages/ErrorPage'; import { UserMfaFlow } from '@/types'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; const TotpVerification = () => { const flowState = useMfaFlowState(); diff --git a/packages/experience/src/pages/MfaVerification/WebAuthnVerification/index.tsx b/packages/experience/src/pages/MfaVerification/WebAuthnVerification/index.tsx index 1f25f16f4..e825f0684 100644 --- a/packages/experience/src/pages/MfaVerification/WebAuthnVerification/index.tsx +++ b/packages/experience/src/pages/MfaVerification/WebAuthnVerification/index.tsx @@ -12,7 +12,7 @@ import { UserMfaFlow } from '@/types'; import { webAuthnStateGuard } from '@/types/guard'; import { isWebAuthnOptions } from '@/utils/webauthn'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; const WebAuthnVerification = () => { const { state } = useLocation(); diff --git a/packages/experience/src/pages/Register/IdentifierRegisterForm/index.tsx b/packages/experience/src/pages/Register/IdentifierRegisterForm/index.tsx index 3d03e1b18..254bf28bd 100644 --- a/packages/experience/src/pages/Register/IdentifierRegisterForm/index.tsx +++ b/packages/experience/src/pages/Register/IdentifierRegisterForm/index.tsx @@ -5,7 +5,7 @@ import { Controller, useForm } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import UserInteractionContext from '@/Providers/UserInteractionContextProvider/UserInteractionContext'; -import LockIcon from '@/assets/icons/lock.svg'; +import LockIcon from '@/assets/icons/lock.svg?react'; import Button from '@/components/Button'; import ErrorMessage from '@/components/ErrorMessage'; import { SmartInputField } from '@/components/InputFields'; @@ -15,7 +15,7 @@ import useSingleSignOnWatch from '@/hooks/use-single-sign-on-watch'; import useTerms from '@/hooks/use-terms'; import { getGeneralIdentifierErrorMessage, validateIdentifierField } from '@/utils/form'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; import useOnSubmit from './use-on-submit'; type Props = { diff --git a/packages/experience/src/pages/Register/index.tsx b/packages/experience/src/pages/Register/index.tsx index 60f808a25..7a33b3771 100644 --- a/packages/experience/src/pages/Register/index.tsx +++ b/packages/experience/src/pages/Register/index.tsx @@ -18,7 +18,7 @@ import useTerms from '@/hooks/use-terms'; import ErrorPage from '../ErrorPage'; import IdentifierRegisterForm from './IdentifierRegisterForm'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; const RegisterFooter = () => { const { t } = useTranslation(); diff --git a/packages/experience/src/pages/SignIn/IdentifierSignInForm/index.tsx b/packages/experience/src/pages/SignIn/IdentifierSignInForm/index.tsx index 5049b7f17..b39654907 100644 --- a/packages/experience/src/pages/SignIn/IdentifierSignInForm/index.tsx +++ b/packages/experience/src/pages/SignIn/IdentifierSignInForm/index.tsx @@ -5,7 +5,7 @@ import { useForm, Controller } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import UserInteractionContext from '@/Providers/UserInteractionContextProvider/UserInteractionContext'; -import LockIcon from '@/assets/icons/lock.svg'; +import LockIcon from '@/assets/icons/lock.svg?react'; import Button from '@/components/Button'; import ErrorMessage from '@/components/ErrorMessage'; import { SmartInputField } from '@/components/InputFields'; @@ -15,7 +15,7 @@ import useSingleSignOnWatch from '@/hooks/use-single-sign-on-watch'; import useTerms from '@/hooks/use-terms'; import { getGeneralIdentifierErrorMessage, validateIdentifierField } from '@/utils/form'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; import useOnSubmit from './use-on-submit'; type Props = { diff --git a/packages/experience/src/pages/SignIn/Main.tsx b/packages/experience/src/pages/SignIn/Main.tsx index 2060bffeb..051c03ff9 100644 --- a/packages/experience/src/pages/SignIn/Main.tsx +++ b/packages/experience/src/pages/SignIn/Main.tsx @@ -6,7 +6,7 @@ import useTerms from '@/hooks/use-terms'; import IdentifierSignInForm from './IdentifierSignInForm'; import PasswordSignInForm from './PasswordSignInForm'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly signInMethods: SignIn['methods']; diff --git a/packages/experience/src/pages/SignIn/PasswordSignInForm/index.tsx b/packages/experience/src/pages/SignIn/PasswordSignInForm/index.tsx index 47c91e213..5d6589c67 100644 --- a/packages/experience/src/pages/SignIn/PasswordSignInForm/index.tsx +++ b/packages/experience/src/pages/SignIn/PasswordSignInForm/index.tsx @@ -5,7 +5,7 @@ import { useForm, Controller } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import UserInteractionContext from '@/Providers/UserInteractionContextProvider/UserInteractionContext'; -import LockIcon from '@/assets/icons/lock.svg'; +import LockIcon from '@/assets/icons/lock.svg?react'; import Button from '@/components/Button'; import ErrorMessage from '@/components/ErrorMessage'; import { SmartInputField, PasswordInputField } from '@/components/InputFields'; @@ -18,7 +18,7 @@ import useSingleSignOnWatch from '@/hooks/use-single-sign-on-watch'; import useTerms from '@/hooks/use-terms'; import { getGeneralIdentifierErrorMessage, validateIdentifierField } from '@/utils/form'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type Props = { readonly className?: string; diff --git a/packages/experience/src/pages/SignIn/index.tsx b/packages/experience/src/pages/SignIn/index.tsx index 369e01424..5c0cc9496 100644 --- a/packages/experience/src/pages/SignIn/index.tsx +++ b/packages/experience/src/pages/SignIn/index.tsx @@ -18,7 +18,7 @@ import useTerms from '@/hooks/use-terms'; import ErrorPage from '../ErrorPage'; import Main from './Main'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; const SignInFooters = () => { const { t } = useTranslation(); diff --git a/packages/experience/src/pages/SignInPassword/PasswordForm/VerificationCodeLink.tsx b/packages/experience/src/pages/SignInPassword/PasswordForm/VerificationCodeLink.tsx index 18da2ae59..04294ffe7 100644 --- a/packages/experience/src/pages/SignInPassword/PasswordForm/VerificationCodeLink.tsx +++ b/packages/experience/src/pages/SignInPassword/PasswordForm/VerificationCodeLink.tsx @@ -1,6 +1,6 @@ import { useEffect } from 'react'; -import SwitchIcon from '@/assets/icons/switch-icon.svg'; +import SwitchIcon from '@/assets/icons/switch-icon.svg?react'; import TextLink from '@/components/TextLink'; import useSendVerificationCode from '@/hooks/use-send-verification-code'; import useToast from '@/hooks/use-toast'; diff --git a/packages/experience/src/pages/SignInPassword/PasswordForm/index.tsx b/packages/experience/src/pages/SignInPassword/PasswordForm/index.tsx index 207c3cb2b..7707ee22b 100644 --- a/packages/experience/src/pages/SignInPassword/PasswordForm/index.tsx +++ b/packages/experience/src/pages/SignInPassword/PasswordForm/index.tsx @@ -13,7 +13,7 @@ import ForgotPasswordLink from '@/containers/ForgotPasswordLink'; import usePasswordSignIn from '@/hooks/use-password-sign-in'; import { useForgotPasswordSettings } from '@/hooks/use-sie'; -import * as styles from '../index.module.scss'; +import styles from '../index.module.scss'; import VerificationCodeLink from './VerificationCodeLink'; diff --git a/packages/experience/src/pages/SingleSignOnConnectors/index.tsx b/packages/experience/src/pages/SingleSignOnConnectors/index.tsx index fb17d5b59..343f39494 100644 --- a/packages/experience/src/pages/SingleSignOnConnectors/index.tsx +++ b/packages/experience/src/pages/SingleSignOnConnectors/index.tsx @@ -9,7 +9,7 @@ import useNativeMessageListener from '@/hooks/use-native-message-listener'; import useSingleSignOn from '@/hooks/use-single-sign-on'; import { getLogoUrl } from '@/utils/logo'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; const SingleSignOnConnectors = () => { const { theme } = useContext(PageContext); diff --git a/packages/experience/src/pages/SingleSignOnEmail/index.tsx b/packages/experience/src/pages/SingleSignOnEmail/index.tsx index 3abe821ff..e9ff29c3d 100644 --- a/packages/experience/src/pages/SingleSignOnEmail/index.tsx +++ b/packages/experience/src/pages/SingleSignOnEmail/index.tsx @@ -4,7 +4,7 @@ import { Controller, useForm } from 'react-hook-form'; import SecondaryPageLayout from '@/Layout/SecondaryPageLayout'; import UserInteractionContext from '@/Providers/UserInteractionContextProvider/UserInteractionContext'; -import LockIcon from '@/assets/icons/lock.svg'; +import LockIcon from '@/assets/icons/lock.svg?react'; import Button from '@/components/Button'; import ErrorMessage from '@/components/ErrorMessage'; import SmartInputField, { @@ -13,7 +13,7 @@ import SmartInputField, { import useOnSubmit from '@/hooks/use-check-single-sign-on'; import { getGeneralIdentifierErrorMessage, validateIdentifierField } from '@/utils/form'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; type FormState = { identifier: IdentifierInputValue; diff --git a/packages/experience/src/pages/SocialLanding/index.tsx b/packages/experience/src/pages/SocialLanding/index.tsx index 6f187a7b6..30dd478c0 100644 --- a/packages/experience/src/pages/SocialLanding/index.tsx +++ b/packages/experience/src/pages/SocialLanding/index.tsx @@ -4,7 +4,7 @@ import { useParams } from 'react-router-dom'; import StaticPageLayout from '@/Layout/StaticPageLayout'; import SocialLandingContainer from '@/containers/SocialLanding'; -import * as styles from './index.module.scss'; +import styles from './index.module.scss'; import useSocialLandingHandler from './use-social-landing-handler'; type Parameters = { diff --git a/packages/experience/tsconfig.json b/packages/experience/tsconfig.json index 7d925ad29..0b0bd435e 100644 --- a/packages/experience/tsconfig.json +++ b/packages/experience/tsconfig.json @@ -10,6 +10,6 @@ }, "include": [ "src", - "jest.config.ts" + "*.config.ts" ] } diff --git a/packages/experience/vite.config.ts b/packages/experience/vite.config.ts new file mode 100644 index 000000000..16c2f1167 --- /dev/null +++ b/packages/experience/vite.config.ts @@ -0,0 +1,54 @@ +import react from '@vitejs/plugin-react'; +import browserslistToEsbuild from 'browserslist-to-esbuild'; +import { defineConfig, mergeConfig, type UserConfig } from 'vite'; +import viteCompression from 'vite-plugin-compression'; +import svgr from 'vite-plugin-svgr'; + +import { defaultConfig, manualChunks } from '../../vite.shared.config'; + +const buildConfig = (mode: string): UserConfig => ({ + server: { + port: 5001, + hmr: { + port: 6001, + }, + }, + css: { + modules: { + generateScopedName: + // Keep backward compatibility with the old CSS modules naming in production + mode === 'development' ? '__[hash:base64:5]__[local]' : '[hash:base64:5]_[local]', + }, + }, + plugins: [react(), svgr(), viteCompression({ disable: mode === 'development' })], + build: { + // Use the same browserslist configuration as in README.md. + // Consider using the esbuild target directly in the future. + target: browserslistToEsbuild('> 0.5%, last 2 versions, Firefox ESR, not dead'), + rollupOptions: { + output: { + manualChunks: (id, meta) => { + // Caution: React-related packages should be bundled together otherwise it will cause runtime errors + // Update this list if necessary when adding new React-related packages + if (/\/node_modules\/(react|react-[^/]*|@react-spring)\//.test(id)) { + return 'react'; + } + + if (/\/node_modules\/i18next[^/]*\//.test(id)) { + return 'i18next'; + } + + for (const largePackage of ['libphonenumber-js', 'core-js']) { + if (id.includes(`/node_modules/${largePackage}/`)) { + return largePackage; + } + } + + return manualChunks(id, meta); + }, + }, + }, + }, +}); + +export default defineConfig(({ mode }) => mergeConfig(defaultConfig, buildConfig(mode))); diff --git a/packages/toolkit/core-kit/declaration/index.ts b/packages/toolkit/core-kit/declaration/index.ts index 85057a144..069e02854 100644 --- a/packages/toolkit/core-kit/declaration/index.ts +++ b/packages/toolkit/core-kit/declaration/index.ts @@ -1,4 +1,3 @@ /* eslint-disable import/no-unassigned-import */ -import './react-app.d'; import './dom.d'; /* eslint-enable import/no-unassigned-import */ diff --git a/packages/toolkit/core-kit/declaration/react-app.d.ts b/packages/toolkit/core-kit/declaration/react-app.d.ts deleted file mode 100644 index 05f26074d..000000000 --- a/packages/toolkit/core-kit/declaration/react-app.d.ts +++ /dev/null @@ -1,65 +0,0 @@ -// Copied from react-scripts/lib/react-app.d.ts - -declare module '*.avif' { - const source: string; - export default source; -} - -declare module '*.bmp' { - const source: string; - export default source; -} - -declare module '*.gif' { - const source: string; - export default source; -} - -declare module '*.jpg' { - const source: string; - export default source; -} - -declare module '*.jpeg' { - const source: string; - export default source; -} - -declare module '*.png' { - const source: string; - export default source; -} - -declare module '*.webp' { - const source: string; - export default source; -} - -declare module '*.svg' { - import * as React from 'react'; - - export const ReactComponent: React.FunctionComponent< - React.SVGProps & { title?: string } - >; - - const source: string; - export default source; -} - -declare module '*.module.css' { - const classes: Readonly>; - export default classes; - export = classes; -} - -declare module '*.module.scss' { - const classes: Readonly>; - export default classes; - export = classes; -} - -declare module '*.module.sass' { - const classes: Readonly>; - export default classes; - export = classes; -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 59a997645..e77691556 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3612,21 +3612,6 @@ importers: '@logto/schemas': specifier: workspace:^1.18.0 version: link:../schemas - '@parcel/compressor-brotli': - specifier: 2.9.3 - version: 2.9.3(@parcel/core@2.9.3) - '@parcel/compressor-gzip': - specifier: 2.9.3 - version: 2.9.3(@parcel/core@2.9.3) - '@parcel/core': - specifier: 2.9.3 - version: 2.9.3 - '@parcel/transformer-sass': - specifier: 2.9.3 - version: 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-svg-react': - specifier: 2.9.3 - version: 2.9.3(@parcel/core@2.9.3) '@react-spring/shared': specifier: ^9.6.1 version: 9.6.1(react@18.3.1) @@ -3687,6 +3672,15 @@ importers: '@types/react-router-dom': specifier: ^5.3.2 version: 5.3.2 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.3.4(@types/node@20.12.7)(lightningcss@1.25.1)(sass@1.77.8)) + browserslist: + specifier: ^4.23.2 + version: 4.23.2 + browserslist-to-esbuild: + specifier: ^2.1.1 + version: 2.1.1(browserslist@4.23.2) camelcase-keys: specifier: ^9.1.3 version: 9.1.3 @@ -3699,9 +3693,6 @@ importers: core-js: specifier: ^3.34.0 version: 3.34.0 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 eslint: specifier: ^8.56.0 version: 8.57.0 @@ -3738,12 +3729,6 @@ importers: lint-staged: specifier: ^15.0.0 version: 15.0.2 - parcel: - specifier: 2.9.3 - version: 2.9.3(@swc/helpers@0.5.1)(postcss@8.4.31)(srcset@4.0.0) - parcel-resolver-ignore: - specifier: ^2.1.3 - version: 2.1.3(parcel@2.9.3(@swc/helpers@0.5.1)(postcss@8.4.31)(srcset@4.0.0)) postcss: specifier: ^8.4.31 version: 8.4.31 @@ -3801,9 +3786,15 @@ importers: use-debounced-loader: specifier: ^0.1.1 version: 0.1.1(react@18.3.1) - zod: - specifier: ^3.23.8 - version: 3.23.8 + vite: + specifier: ^5.3.4 + version: 5.3.4(@types/node@20.12.7)(lightningcss@1.25.1)(sass@1.77.8) + vite-plugin-compression: + specifier: ^0.5.1 + version: 0.5.1(vite@5.3.4(@types/node@20.12.7)(lightningcss@1.25.1)(sass@1.77.8)) + vite-plugin-svgr: + specifier: ^4.2.0 + version: 4.2.0(rollup@4.14.3)(typescript@5.5.3)(vite@5.3.4(@types/node@20.12.7)(lightningcss@1.25.1)(sass@1.77.8)) packages/integration-tests: dependencies: @@ -5449,12 +5440,6 @@ packages: '@levischuck/tiny-cbor@0.2.2': resolution: {integrity: sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==} - '@lezer/common@0.15.12': - resolution: {integrity: sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==} - - '@lezer/lr@0.15.8': - resolution: {integrity: sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==} - '@lit-labs/ssr-dom-shim@1.2.0': resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} @@ -5476,36 +5461,6 @@ packages: '@lit/reactive-element@2.0.4': resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} - '@lmdb/lmdb-darwin-arm64@2.7.11': - resolution: {integrity: sha512-r6+vYq2vKzE+vgj/rNVRMwAevq0+ZR9IeMFIqcSga+wMtMdXQ27KqQ7uS99/yXASg29bos7yHP3yk4x6Iio0lw==} - cpu: [arm64] - os: [darwin] - - '@lmdb/lmdb-darwin-x64@2.7.11': - resolution: {integrity: sha512-jhj1aB4K8ycRL1HOQT5OtzlqOq70jxUQEWRN9Gqh3TIDN30dxXtiHi6EWF516tzw6v2+3QqhDMJh8O6DtTGG8Q==} - cpu: [x64] - os: [darwin] - - '@lmdb/lmdb-linux-arm64@2.7.11': - resolution: {integrity: sha512-7xGEfPPbmVJWcY2Nzqo11B9Nfxs+BAsiiaY/OcT4aaTDdykKeCjvKMQJA3KXCtZ1AtiC9ljyGLi+BfUwdulY5A==} - cpu: [arm64] - os: [linux] - - '@lmdb/lmdb-linux-arm@2.7.11': - resolution: {integrity: sha512-dHfLFVSrw/v5X5lkwp0Vl7+NFpEeEYKfMG2DpdFJnnG1RgHQZngZxCaBagFoaJGykRpd2DYF1AeuXBFrAUAXfw==} - cpu: [arm] - os: [linux] - - '@lmdb/lmdb-linux-x64@2.7.11': - resolution: {integrity: sha512-vUKI3JrREMQsXX8q0Eq5zX2FlYCKWMmLiCyyJNfZK0Uyf14RBg9VtB3ObQ41b4swYh2EWaltasWVe93Y8+KDng==} - cpu: [x64] - os: [linux] - - '@lmdb/lmdb-win32-x64@2.7.11': - resolution: {integrity: sha512-BJwkHlSUgtB+Ei52Ai32M1AOMerSlzyIGA/KC4dAGL+GGwVMdwG8HGCOA2TxP3KjhbgDPMYkv7bt/NmOmRIFng==} - cpu: [x64] - os: [win32] - '@logto/affiliate@0.1.0': resolution: {integrity: sha512-yDWSZMI2Qo/xoYU92tnwSP/gnSvq8+CLK5DqD/4brO42QJa7xjt7eA+HSyuMmSUrKffY2nP3riU81gs+nR8DkA==} engines: {node: ^18.12.0} @@ -5557,10 +5512,6 @@ packages: '@microsoft/applicationinsights-web-snippet@1.0.1': resolution: {integrity: sha512-2IHAOaLauc8qaAitvWS+U931T+ze+7MNWrDHY47IENP5y2UA0vqJDu67kWZDdpCN1fFC77sfgfB+HV7SrKshnQ==} - '@mischnic/json-sourcemap@0.1.0': - resolution: {integrity: sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==} - engines: {node: '>=12.0.0'} - '@monaco-editor/loader@1.4.0': resolution: {integrity: sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==} peerDependencies: @@ -5573,36 +5524,6 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2': - resolution: {integrity: sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==} - cpu: [arm64] - os: [darwin] - - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2': - resolution: {integrity: sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==} - cpu: [x64] - os: [darwin] - - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2': - resolution: {integrity: sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==} - cpu: [arm64] - os: [linux] - - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2': - resolution: {integrity: sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==} - cpu: [arm] - os: [linux] - - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2': - resolution: {integrity: sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==} - cpu: [x64] - os: [linux] - - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2': - resolution: {integrity: sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==} - cpu: [x64] - os: [win32] - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -5662,248 +5583,6 @@ packages: '@otplib/preset-v11@12.0.1': resolution: {integrity: sha512-9hSetMI7ECqbFiKICrNa4w70deTUfArtwXykPUvSHWOdzOlfa9ajglu7mNCntlvxycTiOAXkQGwjQCzzDEMRMg==} - '@parcel/bundler-default@2.9.3': - resolution: {integrity: sha512-JjJK8dq39/UO/MWI/4SCbB1t/qgpQRFnFDetAAAezQ8oN++b24u1fkMDa/xqQGjbuPmGeTds5zxGgYs7id7PYg==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/cache@2.9.3': - resolution: {integrity: sha512-Bj/H2uAJJSXtysG7E/x4EgTrE2hXmm7td/bc97K8M9N7+vQjxf7xb0ebgqe84ePVMkj4MVQSMEJkEucXVx4b0Q==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@parcel/core': ^2.9.3 - - '@parcel/codeframe@2.9.3': - resolution: {integrity: sha512-z7yTyD6h3dvduaFoHpNqur74/2yDWL++33rjQjIjCaXREBN6dKHoMGMizzo/i4vbiI1p9dDox2FIDEHCMQxqdA==} - engines: {node: '>= 12.0.0'} - - '@parcel/compressor-brotli@2.9.3': - resolution: {integrity: sha512-yLxTous+fPIaw8v8kR5UdWLzJTL7e3ISThNWsu9w9L4vqK0DUUIUePvwZjSNiYQcxFu9L/1X3vlKSzHv3TvS0Q==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/compressor-gzip@2.9.3': - resolution: {integrity: sha512-ffQDpPlr3XzqDa/Gwgj7kFPMKYPHnpTZCYnoFW0zzHJTI0umDUULb2XHRke804yiHplKA6fcj2TQjC5FU1beYw==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/compressor-raw@2.9.3': - resolution: {integrity: sha512-jz3t4/ICMsHEqgiTmv5i1DJva2k5QRpZlBELVxfY+QElJTVe8edKJ0TiKcBxh2hx7sm4aUigGmp7JiqqHRRYmA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/config-default@2.9.3': - resolution: {integrity: sha512-tqN5tF7QnVABDZAu76co5E6N8mA9n8bxiWdK4xYyINYFIEHgX172oRTqXTnhEMjlMrdmASxvnGlbaPBaVnrCTw==} - peerDependencies: - '@parcel/core': ^2.9.3 - - '@parcel/core@2.9.3': - resolution: {integrity: sha512-4KlM1Zr/jpsqWuMXr2zmGsaOUs1zMMFh9vfCNKRZkptf+uk8I3sugHbNdo+F5B+4e2yMuOEb1zgAmvJLeuH6ww==} - engines: {node: '>= 12.0.0'} - - '@parcel/diagnostic@2.9.3': - resolution: {integrity: sha512-6jxBdyB3D7gP4iE66ghUGntWt2v64E6EbD4AetZk+hNJpgudOOPsKTovcMi/i7I4V0qD7WXSF4tvkZUoac0jwA==} - engines: {node: '>= 12.0.0'} - - '@parcel/events@2.9.3': - resolution: {integrity: sha512-K0Scx+Bx9f9p1vuShMzNwIgiaZUkxEnexaKYHYemJrM7pMAqxIuIqhnvwurRCsZOVLUJPDDNJ626cWTc5vIq+A==} - engines: {node: '>= 12.0.0'} - - '@parcel/fs-search@2.9.3': - resolution: {integrity: sha512-nsNz3bsOpwS+jphcd+XjZL3F3PDq9lik0O8HPm5f6LYkqKWT+u/kgQzA8OkAHCR3q96LGiHxUywHPEBc27vI4Q==} - engines: {node: '>= 12.0.0'} - - '@parcel/fs@2.9.3': - resolution: {integrity: sha512-/PrRKgCRw22G7rNPSpgN3Q+i2nIkZWuvIOAdMG4KWXC4XLp8C9jarNaWd5QEQ75amjhQSl3oUzABzkdCtkKrgg==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@parcel/core': ^2.9.3 - - '@parcel/graph@2.9.3': - resolution: {integrity: sha512-3LmRJmF8+OprAr6zJT3X2s8WAhLKkrhi6RsFlMWHifGU5ED1PFcJWFbOwJvSjcAhMQJP0fErcFIK1Ludv3Vm3g==} - engines: {node: '>= 12.0.0'} - - '@parcel/hash@2.9.3': - resolution: {integrity: sha512-qlH5B85XLzVAeijgKPjm1gQu35LoRYX/8igsjnN8vOlbc3O8BYAUIutU58fbHbtE8MJPbxQQUw7tkTjeoujcQQ==} - engines: {node: '>= 12.0.0'} - - '@parcel/logger@2.9.3': - resolution: {integrity: sha512-5FNBszcV6ilGFcijEOvoNVG6IUJGsnMiaEnGQs7Fvc1dktTjEddnoQbIYhcSZL63wEmzBZOgkT5yDMajJ/41jw==} - engines: {node: '>= 12.0.0'} - - '@parcel/markdown-ansi@2.9.3': - resolution: {integrity: sha512-/Q4X8F2aN8UNjAJrQ5NfK2OmZf6shry9DqetUSEndQ0fHonk78WKt6LT0zSKEBEW/bB/bXk6mNMsCup6L8ibjQ==} - engines: {node: '>= 12.0.0'} - - '@parcel/namer-default@2.9.3': - resolution: {integrity: sha512-1ynFEcap48/Ngzwwn318eLYpLUwijuuZoXQPCsEQ21OOIOtfhFQJaPwXTsw6kRitshKq76P2aafE0BioGSqxcA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/node-resolver-core@3.0.3': - resolution: {integrity: sha512-AjxNcZVHHJoNT/A99PKIdFtwvoze8PAiC3yz8E/dRggrDIOboUEodeQYV5Aq++aK76uz/iOP0tST2T8A5rhb1A==} - engines: {node: '>= 12.0.0'} - - '@parcel/optimizer-css@2.9.3': - resolution: {integrity: sha512-RK1QwcSdWDNUsFvuLy0hgnYKtPQebzCb0vPPzqs6LhL+vqUu9utOyRycGaQffHCkHVQP6zGlN+KFssd7YtFGhA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/optimizer-htmlnano@2.9.3': - resolution: {integrity: sha512-9g/KBck3c6DokmJfvJ5zpHFBiCSolaGrcsTGx8C3YPdCTVTI9P1TDCwUxvAr4LjpcIRSa82wlLCI+nF6sSgxKA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/optimizer-image@2.9.3': - resolution: {integrity: sha512-530YzthE7kmecnNhPbkAK+26yQNt69pfJrgE0Ev0BZaM1Wu2+33nki7o8qvkTkikhPrurEJLGIXt1qKmbKvCbA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - peerDependencies: - '@parcel/core': ^2.9.3 - - '@parcel/optimizer-svgo@2.9.3': - resolution: {integrity: sha512-ytQS0wY5JJhWU4mL0wfhYDUuHcfuw+Gy2+JcnTm1t1AZXHlOTbU6EzRWNqBShsgXjvdrQQXizAe3B6GFFlFJVQ==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/optimizer-swc@2.9.3': - resolution: {integrity: sha512-GQINNeqtdpL1ombq/Cpwi6IBk02wKJ/JJbYbyfHtk8lxlq13soenpwOlzJ5T9D2fdG+FUhai9NxpN5Ss4lNoAg==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/package-manager@2.9.3': - resolution: {integrity: sha512-NH6omcNTEupDmW4Lm1e4NUYBjdqkURxgZ4CNESESInHJe6tblVhNB8Rpr1ar7zDar7cly9ILr8P6N3Ei7bTEjg==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@parcel/core': ^2.9.3 - - '@parcel/packager-css@2.9.3': - resolution: {integrity: sha512-mePiWiYZOULY6e1RdAIJyRoYqXqGci0srOaVZYaP7mnrzvJgA63kaZFFsDiEWghunQpMUuUjM2x/vQVHzxmhKQ==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/packager-html@2.9.3': - resolution: {integrity: sha512-0Ex+O0EaZf9APNERRNGgGto02hFJ6f5RQEvRWBK55WAV1rXeU+kpjC0c0qZvnUaUtXfpWMsEBkevJCwDkUMeMg==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/packager-js@2.9.3': - resolution: {integrity: sha512-V5xwkoE3zQ3R+WqAWhA1KGQ791FvJeW6KonOlMI1q76Djjgox68hhObqcLu66AmYNhR2R/wUpkP18hP2z8dSFw==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/packager-raw@2.9.3': - resolution: {integrity: sha512-oPQTNoYanQ2DdJyL61uPYK2py83rKOT8YVh2QWAx0zsSli6Kiy64U3+xOCYWgDVCrHw9+9NpQMuAdSiFg4cq8g==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/packager-svg@2.9.3': - resolution: {integrity: sha512-p/Ya6UO9DAkaCUFxfFGyeHZDp9YPAlpdnh1OChuwqSFOXFjjeXuoK4KLT+ZRalVBo2Jo8xF70oKMZw4MVvaL7Q==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/plugin@2.9.3': - resolution: {integrity: sha512-qN85Gqr2GMuxX1dT1mnuO9hOcvlEv1lrYrCxn7CJN2nUhbwcfG+LEvcrCzCOJ6XtIHm+ZBV9h9p7FfoPLvpw+g==} - engines: {node: '>= 12.0.0'} - - '@parcel/profiler@2.9.3': - resolution: {integrity: sha512-pyHc9lw8VZDfgZoeZWZU9J0CVEv1Zw9O5+e0DJPDPHuXJYr72ZAOhbljtU3owWKAeW+++Q2AZWkbUGEOjI/e6g==} - engines: {node: '>= 12.0.0'} - - '@parcel/reporter-cli@2.9.3': - resolution: {integrity: sha512-pZiEvQpuXFuQBafMHxkDmwH8CnnK9sWHwa3bSbsnt385aUahtE8dpY0LKt+K1zfB6degKoczN6aWVj9WycQuZQ==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/reporter-dev-server@2.9.3': - resolution: {integrity: sha512-s6eboxdLEtRSvG52xi9IiNbcPKC0XMVmvTckieue2EqGDbDcaHQoHmmwkk0rNq0/Z/UxelGcQXoIYC/0xq3ykQ==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/reporter-tracer@2.9.3': - resolution: {integrity: sha512-9cXpKWk0m6d6d+4+TlAdOe8XIPaFEIKGWMWG+5SFAQE08u3olet4PSvd49F4+ZZo5ftRE7YI3j6xNbXvJT8KGw==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/resolver-default@2.9.3': - resolution: {integrity: sha512-8ESJk1COKvDzkmOnppNXoDamNMlYVIvrKc2RuFPmp8nKVj47R6NwMgvwxEaatyPzvkmyTpq5RvG9I3HFc+r4Cw==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/runtime-browser-hmr@2.9.3': - resolution: {integrity: sha512-EgiDIDrVAWpz7bOzWXqVinQkaFjLwT34wsonpXAbuI7f7r00d52vNAQC9AMu+pTijA3gyKoJ+Q4NWPMZf7ACDA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/runtime-js@2.9.3': - resolution: {integrity: sha512-EvIy+qXcKnB5qxHhe96zmJpSAViNVXHfQI5RSdZ2a7CPwORwhTI+zPNT9sb7xb/WwFw/WuTTgzT40b41DceU6Q==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/runtime-react-refresh@2.9.3': - resolution: {integrity: sha512-XBgryZQIyCmi6JwEfMUCmINB3l1TpTp9a2iFxmYNpzHlqj4Ve0saKaqWOVRLvC945ZovWIBzcSW2IYqWKGtbAA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/runtime-service-worker@2.9.3': - resolution: {integrity: sha512-qLJLqv1mMdWL7gyh8aKBFFAuEiJkhUUgLKpdn6eSfH/R7kTtb76WnOwqUrhvEI9bZFUM/8Pa1bzJnPpqSOM+Sw==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/source-map@2.1.1': - resolution: {integrity: sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==} - engines: {node: ^12.18.3 || >=14} - - '@parcel/transformer-babel@2.9.3': - resolution: {integrity: sha512-pURtEsnsp3h6tOBDuzh9wRvVtw4PgIlqwAArIWdrG7iwqOUYv9D8ME4+ePWEu7MQWAp58hv9pTJtqWv4T+Sq8A==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/transformer-css@2.9.3': - resolution: {integrity: sha512-duWMdbEBBPjg3fQdXF16iWIdThetDZvCs2TpUD7xOlXH6kR0V5BJy8ONFT15u1RCqIV9hSNGaS3v3I9YRNY5zQ==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/transformer-html@2.9.3': - resolution: {integrity: sha512-0NU4omcHzFXA1seqftAXA2KNZaMByoKaNdXnLgBgtCGDiYvOcL+6xGHgY6pw9LvOh5um10KI5TxSIMILoI7VtA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/transformer-image@2.9.3': - resolution: {integrity: sha512-7CEe35RaPadQzLIuxzTtIxnItvOoy46hcbXtOdDt6lmVa4omuOygZYRIya2lsGIP4JHvAaALMb5nt99a1uTwJg==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - peerDependencies: - '@parcel/core': ^2.9.3 - - '@parcel/transformer-js@2.9.3': - resolution: {integrity: sha512-Z2MVVg5FYcPOfxlUwxqb5l9yjTMEqE3KI3zq2MBRUme6AV07KxLmCDF23b6glzZlHWQUE8MXzYCTAkOPCcPz+Q==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - peerDependencies: - '@parcel/core': ^2.9.3 - - '@parcel/transformer-json@2.9.3': - resolution: {integrity: sha512-yNL27dbOLhkkrjaQjiQ7Im9VOxmkfuuSNSmS0rA3gEjVcm07SLKRzWkAaPnyx44Lb6bzyOTWwVrb9aMmxgADpA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/transformer-postcss@2.9.3': - resolution: {integrity: sha512-HoDvPqKzhpmvMmHqQhDnt8F1vH61m6plpGiYaYnYv2Om4HHi5ZIq9bO+9QLBnTKfaZ7ndYSefTKOxTYElg7wyw==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/transformer-posthtml@2.9.3': - resolution: {integrity: sha512-2fQGgrzRmaqbWf3y2/T6xhqrNjzqMMKksqJzvc8TMfK6f2kg3Ddjv158eaSW2JdkV39aY7tvAOn5f1uzo74BMA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/transformer-raw@2.9.3': - resolution: {integrity: sha512-oqdPzMC9QzWRbY9J6TZEqltknjno+dY24QWqf8ondmdF2+W+/2mRDu59hhCzQrqUHgTq4FewowRZmSfpzHxwaQ==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/transformer-react-refresh-wrap@2.9.3': - resolution: {integrity: sha512-cb9NyU6oJlDblFIlzqIE8AkvRQVGl2IwJNKwD4PdE7Y6sq2okGEPG4hOw3k/Y9JVjM4/2pUORqvjSRhWwd9oVQ==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/transformer-sass@2.9.3': - resolution: {integrity: sha512-i9abj9bKg3xCHghJyTM3rUVxIEn9n1Rl+DFdpyNAD8VZ52COfOshFDQOWNuhU1hEnJOFYCjnfcO0HRTsg3dWmg==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/transformer-svg-react@2.9.3': - resolution: {integrity: sha512-RXmCn58CkCBhpsS1AaRBrSRla0U5JN3r3hb7kQvEb+d7chGnsxCCWsBxtlrxPUjoUFLdQli9rhpCTkiyOBXY2A==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/transformer-svg@2.9.3': - resolution: {integrity: sha512-ypmE+dzB09IMCdEAkOsSxq1dEIm2A3h67nAFz4qbfHbwNgXBUuy/jB3ZMwXN/cO0f7SBh/Ap8Jhq6vmGqB5tWw==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - - '@parcel/types@2.9.3': - resolution: {integrity: sha512-NSNY8sYtRhvF1SqhnIGgGvJocyWt1K8Tnw5cVepm0g38ywtX6mwkBvMkmeehXkII4mSUn+frD9wGsydTunezvA==} - - '@parcel/utils@2.9.3': - resolution: {integrity: sha512-cesanjtj/oLehW8Waq9JFPmAImhoiHX03ihc3JTWkrvJYSbD7wYKCDgPAM3JiRAqvh1LZ6P699uITrYWNoRLUg==} - engines: {node: '>= 12.0.0'} - - '@parcel/watcher@2.0.7': - resolution: {integrity: sha512-gc3hoS6e+2XdIQ4HHljDB1l0Yx2EWh/sBBtCEFNKGSMlwASWeAQsOY/fPbxOBcZ/pg0jBh4Ga+4xHlZc4faAEQ==} - engines: {node: '>= 10.0.0'} - - '@parcel/workers@2.9.3': - resolution: {integrity: sha512-zRrDuZJzTevrrwElYosFztgldhqW6G9q5zOeQXfVQFkkEJCNfg36ixeiofKRU8uu2x+j+T6216mhMNB6HiuY+w==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@parcel/core': ^2.9.3 - '@parse5/tools@0.3.0': resolution: {integrity: sha512-zxRyTHkqb7WQMV8kTNBKWb1BeOFUKXBXTBWuxg9H9hfvQB3IwP6Iw2U75Ia5eyRxPNltmY7E8YAlz6zWwUnjKg==} @@ -6493,148 +6172,74 @@ packages: resolution: {integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==} engines: {node: '>=14.0.0'} - '@svgr/babel-plugin-add-jsx-attribute@6.5.1': - resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@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@6.5.0': - resolution: {integrity: sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==} - engines: {node: '>=10'} - 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@6.5.0': - resolution: {integrity: sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==} - engines: {node: '>=10'} - 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@6.5.1': - resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} - engines: {node: '>=10'} - 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@6.5.1': - resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} - engines: {node: '>=10'} - 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@6.5.1': - resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} - engines: {node: '>=10'} - 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@6.5.1': - resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} - engines: {node: '>=10'} - 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@6.5.1': - resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} - engines: {node: '>=12'} - 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@6.5.1': - resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} - engines: {node: '>=10'} - 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@6.5.1': - resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} - engines: {node: '>=10'} - '@svgr/core@8.1.0': resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} engines: {node: '>=14'} - '@svgr/hast-util-to-babel-ast@6.5.1': - resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} - engines: {node: '>=10'} - '@svgr/hast-util-to-babel-ast@8.0.0': resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} engines: {node: '>=14'} - '@svgr/plugin-jsx@6.5.1': - resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} - engines: {node: '>=10'} - peerDependencies: - '@svgr/core': ^6.0.0 - '@svgr/plugin-jsx@8.1.0': resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} engines: {node: '>=14'} peerDependencies: '@svgr/core': '*' - '@svgr/plugin-svgo@6.5.1': - resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} - engines: {node: '>=10'} - peerDependencies: - '@svgr/core': '*' - '@swc/core-darwin-arm64@1.3.52': resolution: {integrity: sha512-Y+4YDN7mAhMgqLVMjpIOagFg93uWdQRsJXd3NAXo24CAJXLBuXsiXQdJVdhGavQkF0+NuhFSTGrzB8TknzWQkg==} engines: {node: '>=10'} @@ -6759,10 +6364,6 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - '@tsconfig/node10@1.0.9': resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} @@ -6985,9 +6586,6 @@ packages: '@types/oidc-provider@8.4.4': resolution: {integrity: sha512-+SlmKc4qlCJLjpw6Du/8cXw18JsPEYyQwoy+xheLkiuNsCz1mPEYI/lRXLQHvfJD9TH6+2/WDTLZQ2UUJ5G4bw==} - '@types/parse-json@4.0.0': - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - '@types/parse5@6.0.3': resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} @@ -7256,9 +6854,6 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} - abortcontroller-polyfill@1.7.5: - resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} - accepts@1.3.7: resolution: {integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==} engines: {node: '>= 0.6'} @@ -7570,9 +7165,6 @@ packages: bare-path@2.1.1: resolution: {integrity: sha512-OHM+iwRDRMDBsSW7kl3dO62JyHdBKO3B25FB9vNQBPcGHMo4+eA8Yj41Lfbk3pS/seDY+siNge0LdRTulAau/A==} - base-x@3.0.9: - resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} - base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -7597,9 +7189,6 @@ packages: bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - boolean@3.1.4: resolution: {integrity: sha512-3hx0kwU3uzG6ReQ3pnaFQPSktpBw6RHN3/ivDKEuU8g1XSfafowyvDnadjv1xp8IZqhtSukxlwv9bF6FhX8m0w==} @@ -7619,15 +7208,12 @@ packages: breakword@1.0.5: resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} - browserslist@4.21.4: - resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + browserslist-to-esbuild@2.1.1: + resolution: {integrity: sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==} + engines: {node: '>=18'} hasBin: true + peerDependencies: + browserslist: '*' browserslist@4.23.2: resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==} @@ -7725,9 +7311,6 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - caniuse-lite@1.0.30001618: - resolution: {integrity: sha512-p407+D1tIkDvsEAPS22lJxLQQaG8OTBEqo0KhzfABGk0TU4juBNDSfH0hyAp/HRyx+M8L17z/ltyhxh27FTfQg==} - caniuse-lite@1.0.30001643: resolution: {integrity: sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==} @@ -7794,10 +7377,6 @@ packages: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} - chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} - chromium-bidi@0.5.17: resolution: {integrity: sha512-BqOuIWUgTPj8ayuBFJUYCCuwIcwjBsb3/614P7tt1bEPJ4i1M0kCdIl0Wi9xhtswBXnfO2bTpTMkHD71H8rJMg==} peerDependencies: @@ -8023,10 +7602,6 @@ packages: cosmiconfig: '>=8.2' typescript: '>=4' - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - cosmiconfig@8.3.6: resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} @@ -8057,11 +7632,6 @@ packages: create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true - cross-fetch@4.0.0: resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} @@ -8076,13 +7646,6 @@ packages: resolution: {integrity: sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==} engines: {node: '>=12 || >=16'} - css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - - css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - css-tree@2.3.1: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} @@ -8090,19 +7653,11 @@ packages: css-unit-converter@1.1.2: resolution: {integrity: sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==} - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true - csso@4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} - cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} @@ -8553,27 +8108,14 @@ packages: dom-helpers@3.4.0: resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==} - dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} deprecated: Use your platform's native DOMException instead - domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - dompurify@3.1.5: resolution: {integrity: sha512-lwG+n5h8QNpxtyrJW/gJWckL+1/DQiYMX8f7t8Z2AZTPw1esVrqjI63i7Zc2Gz0aKzLVMYC1V1PL/ky+aY/NgA==} - domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -8581,17 +8123,10 @@ packages: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} - dotenv-expand@5.1.0: - resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} - dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} - dotenv@7.0.0: - resolution: {integrity: sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==} - engines: {node: '>=6'} - duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} @@ -8607,12 +8142,6 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.4.281: - resolution: {integrity: sha512-yer0w5wCYdFoZytfmbNhwiGI/3cW06+RV7E23ln4490DVMxs7PvYpbsrSmAiBn/V6gode8wvJlST2YfWgvzWIg==} - - electron-to-chromium@1.4.738: - resolution: {integrity: sha512-lwKft2CLFztD+vEIpesrOtCrko/TFnEJlHFdRhazU7Y/jx5qc4cqsocfVrBg4So4gGe9lvxnbLIoev47WMpg+A==} - electron-to-chromium@1.5.0: resolution: {integrity: sha512-Vb3xHHYnLseK8vlMJQKJYXJ++t4u1/qJ3vykuVrVjvdiOEhYyT1AuP4x03G8EnPmYvYOhe9T+dADTmthjRQMkA==} @@ -8656,17 +8185,6 @@ packages: ent@2.2.0: resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} - entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - - entities@3.0.1: - resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} - engines: {node: '>=0.12'} - - entities@4.4.0: - resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} - engines: {node: '>=0.12'} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -9317,10 +8835,6 @@ packages: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} - get-port@4.2.0: - resolution: {integrity: sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==} - engines: {node: '>=6'} - get-set-props@0.1.0: resolution: {integrity: sha512-7oKuKzAGKj0ag+eWZwcGw2fjiZ78tXnXQoBgY0aU7ZOxTu4bB7hSuQSDgtKy978EDH062P5FmD2EWiDpQS9K9Q==} engines: {node: '>=0.10.0'} @@ -9584,38 +9098,6 @@ packages: html-url-attributes@3.0.0: resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} - htmlnano@2.0.3: - resolution: {integrity: sha512-S4PGGj9RbdgW8LhbILNK7W9JhmYP8zmDY7KDV/8eCiJBQJlbmltp5I0gv8c5ntLljfdxxfmJ+UJVSqyH4mb41A==} - peerDependencies: - cssnano: ^5.0.11 - postcss: ^8.3.11 - purgecss: ^5.0.0 - relateurl: ^0.2.7 - srcset: 4.0.0 - svgo: ^2.8.0 - terser: ^5.10.0 - uncss: ^0.17.3 - peerDependenciesMeta: - cssnano: - optional: true - postcss: - optional: true - purgecss: - optional: true - relateurl: - optional: true - srcset: - optional: true - svgo: - optional: true - terser: - optional: true - uncss: - optional: true - - htmlparser2@7.2.0: - resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} - http-assert@1.5.0: resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} engines: {node: '>= 0.8'} @@ -9945,9 +9427,6 @@ packages: is-js-type@2.0.0: resolution: {integrity: sha512-Aj13l47+uyTjlQNHtXBV8Cji3jb037vxwMWCgopRR8h6xocgBGW3qG8qGlIOEmbXQtkKShKuBM9e8AA1OeQ+xw==} - is-json@2.0.1: - resolution: {integrity: sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==} - is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -10639,10 +10118,6 @@ packages: lit@3.1.4: resolution: {integrity: sha512-q6qKnKXHy2g1kjBaNfcoLlgbI3+aSOZ9Q4tiGa9bGYXq5RBXxkVTqTIVmP2VWMp29L4GyvCFm8ZQ2o56eUAMyA==} - lmdb@2.7.11: - resolution: {integrity: sha512-x9bD4hVp7PFLUoELL8RglbNXhAMt5CYhkmss+CEau9KlNoilsTzNi9QDsPZb3KMpOGZXG6jmXhW3bBxE2XVztw==} - hasBin: true - load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -10904,9 +10379,6 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} @@ -10922,6 +10394,10 @@ packages: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + meow@6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} @@ -11224,13 +10700,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msgpackr-extract@3.0.2: - resolution: {integrity: sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==} - hasBin: true - - msgpackr@1.8.5: - resolution: {integrity: sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==} - mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} @@ -11297,12 +10766,6 @@ packages: resolution: {integrity: sha512-+EQMm5W9K8YnBE2Ceg4hnJynaCZmvK8ZlFXQ2fxGwtkOkBUq8GpQLTks2m1jpvse9XDxMDDOHgOWpiznFuh0bA==} engines: {node: '>= 18'} - node-addon-api@3.2.1: - resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} - - node-addon-api@4.3.0: - resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} - node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -11316,18 +10779,6 @@ packages: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} - node-gyp-build-optional-packages@5.0.6: - resolution: {integrity: sha512-2ZJErHG4du9G3/8IWl/l9Bp5BBFy63rno5GVmjQijvTuUZKsl6g8RB4KH/x3NLcV5ZBb4GsXmAuTYr6dRml3Gw==} - hasBin: true - - node-gyp-build-optional-packages@5.0.7: - resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==} - hasBin: true - - node-gyp-build@4.5.0: - resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} - hasBin: true - node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -11338,9 +10789,6 @@ packages: node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - node-releases@2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} - node-rsa@1.1.1: resolution: {integrity: sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==} @@ -11386,12 +10834,6 @@ packages: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - nwsapi@2.2.2: resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} @@ -11496,9 +10938,6 @@ packages: resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} engines: {node: '>=18'} - ordered-binary@1.4.0: - resolution: {integrity: sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ==} - os-homedir@1.0.2: resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} engines: {node: '>=0.10.0'} @@ -11619,17 +11058,6 @@ packages: pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - parcel-resolver-ignore@2.1.3: - resolution: {integrity: sha512-C8uLvR4o7SPRSsQ/Nylm1/PdsLwn/Z9bzCs66qT3XIebJC7ojaFFF3MDl/mie5audngjcFF8wzU0AoEQkZq2pA==} - engines: {parcel: '>=2.0.0'} - peerDependencies: - parcel: '>=2.0.0' - - parcel@2.9.3: - resolution: {integrity: sha512-2GTVocFkwblV/TIg9AmT7TI2fO4xdWkyN8aFUEVtiVNWt96GTR3FgQyHFValfCbcj1k9Xf962Ws2hYXYUr9k1Q==} - engines: {node: '>= 12.0.0'} - hasBin: true - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -11951,22 +11379,6 @@ packages: postgres-range@1.1.2: resolution: {integrity: sha512-CmPJDSpd3/xYJrtw/tI0Cv029B0zMtnesUOHCZmgvypGBLn+eExXcjCS5OY7mpiw6imYEvd2IMD36sAOYA9U1w==} - posthtml-parser@0.10.2: - resolution: {integrity: sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==} - engines: {node: '>=12'} - - posthtml-parser@0.11.0: - resolution: {integrity: sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==} - engines: {node: '>=12'} - - posthtml-render@3.0.0: - resolution: {integrity: sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==} - engines: {node: '>=12'} - - posthtml@0.16.6: - resolution: {integrity: sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==} - engines: {node: '>=12.0.0'} - preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} @@ -12185,9 +11597,6 @@ packages: peerDependencies: react: '>=16.13.1' - react-error-overlay@6.0.9: - resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} - react-fast-compare@3.2.1: resolution: {integrity: sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg==} @@ -12262,10 +11671,6 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react-refresh@0.9.0: - resolution: {integrity: sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==} - engines: {node: '>=0.10.0'} - react-resize-detector@7.1.2: resolution: {integrity: sha512-zXnPJ2m8+6oq9Nn8zsep/orts9vQv3elrpA+R8XTcW7DVVUJ9vwDwMXaBtykAYjMnkCIaOoK9vObyR7ZgFNlOw==} peerDependencies: @@ -12831,14 +12236,6 @@ packages: resolution: {integrity: sha512-e2ExBX6iDHoCDC1zN2NvZV49UMhKVLvvwrDjzSVHFS3TKHKtIpl2nMDQkdlbTjDVvf2bxRYBq9iXAAMZvZpGVA==} engines: {node: '>=0.10'} - srcset@4.0.0: - resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} - engines: {node: '>=12'} - - stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - stack-chain@1.3.7: resolution: {integrity: sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==} @@ -13072,11 +12469,6 @@ packages: svg-tags@1.0.0: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} - svgo@2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} - engines: {node: '>=10.13.0'} - hasBin: true - swr@2.2.0: resolution: {integrity: sha512-AjqHOv2lAhkuUdIiBu9xbuettzAzWXmCEcLONNKJRba87WAefz8Ca9d6ds/SzrPc235n1IxWYdhJ2zF3MNUaoQ==} peerDependencies: @@ -13152,9 +12544,6 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - timsort@0.3.0: - resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} - tiny-cookie@2.4.1: resolution: {integrity: sha512-h8ueaMyvUd/9ZfRqCfa1t+0tXqfVFhdK8WpLHz8VXMqsiaj3Sqg64AOCH/xevLQGZk0ZV+/75ouITdkvp3taVA==} @@ -13457,18 +12846,6 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - update-browserslist-db@1.0.10: - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - update-browserslist-db@1.1.0: resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} hasBin: true @@ -13498,10 +12875,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - utility-types@3.10.0: - resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==} - engines: {node: '>= 4'} - uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -13632,9 +13005,6 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - weak-lru-cache@1.2.2: - resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} - web-worker@1.3.0: resolution: {integrity: sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==} @@ -13794,9 +13164,6 @@ packages: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - xxhash-wasm@0.4.2: - resolution: {integrity: sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==} - y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} @@ -13817,10 +13184,6 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - yaml@2.3.3: resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} engines: {node: '>= 14'} @@ -14674,7 +14037,7 @@ snapshots: dependencies: '@babel/compat-data': 7.24.4 '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 + browserslist: 4.23.2 lru-cache: 5.1.1 semver: 6.3.1 @@ -15791,12 +15154,6 @@ snapshots: '@levischuck/tiny-cbor@0.2.2': {} - '@lezer/common@0.15.12': {} - - '@lezer/lr@0.15.8': - dependencies: - '@lezer/common': 0.15.12 - '@lit-labs/ssr-dom-shim@1.2.0': {} '@lit/context@1.1.2': @@ -15829,24 +15186,6 @@ snapshots: dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 - '@lmdb/lmdb-darwin-arm64@2.7.11': - optional: true - - '@lmdb/lmdb-darwin-x64@2.7.11': - optional: true - - '@lmdb/lmdb-linux-arm64@2.7.11': - optional: true - - '@lmdb/lmdb-linux-arm@2.7.11': - optional: true - - '@lmdb/lmdb-linux-x64@2.7.11': - optional: true - - '@lmdb/lmdb-win32-x64@2.7.11': - optional: true - '@logto/affiliate@0.1.0': dependencies: '@silverhand/essentials': 2.9.1 @@ -15953,12 +15292,6 @@ snapshots: '@microsoft/applicationinsights-web-snippet@1.0.1': {} - '@mischnic/json-sourcemap@0.1.0': - dependencies: - '@lezer/common': 0.15.12 - '@lezer/lr': 0.15.8 - json5: 2.2.3 - '@monaco-editor/loader@1.4.0(monaco-editor@0.47.0)': dependencies: monaco-editor: 0.47.0 @@ -15971,24 +15304,6 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2': - optional: true - - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2': - optional: true - - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2': - optional: true - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -16057,547 +15372,6 @@ snapshots: '@otplib/plugin-crypto': 12.0.1 '@otplib/plugin-thirty-two': 12.0.1 - '@parcel/bundler-default@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/graph': 2.9.3 - '@parcel/hash': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/cache@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/core': 2.9.3 - '@parcel/fs': 2.9.3(@parcel/core@2.9.3) - '@parcel/logger': 2.9.3 - '@parcel/utils': 2.9.3 - lmdb: 2.7.11 - - '@parcel/codeframe@2.9.3': - dependencies: - chalk: 4.1.2 - - '@parcel/compressor-brotli@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/compressor-gzip@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/compressor-raw@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/config-default@2.9.3(@parcel/core@2.9.3)(@swc/helpers@0.5.1)(postcss@8.4.31)(srcset@4.0.0)': - dependencies: - '@parcel/bundler-default': 2.9.3(@parcel/core@2.9.3) - '@parcel/compressor-raw': 2.9.3(@parcel/core@2.9.3) - '@parcel/core': 2.9.3 - '@parcel/namer-default': 2.9.3(@parcel/core@2.9.3) - '@parcel/optimizer-css': 2.9.3(@parcel/core@2.9.3) - '@parcel/optimizer-htmlnano': 2.9.3(@parcel/core@2.9.3)(postcss@8.4.31)(srcset@4.0.0) - '@parcel/optimizer-image': 2.9.3(@parcel/core@2.9.3) - '@parcel/optimizer-svgo': 2.9.3(@parcel/core@2.9.3) - '@parcel/optimizer-swc': 2.9.3(@parcel/core@2.9.3)(@swc/helpers@0.5.1) - '@parcel/packager-css': 2.9.3(@parcel/core@2.9.3) - '@parcel/packager-html': 2.9.3(@parcel/core@2.9.3) - '@parcel/packager-js': 2.9.3(@parcel/core@2.9.3) - '@parcel/packager-raw': 2.9.3(@parcel/core@2.9.3) - '@parcel/packager-svg': 2.9.3(@parcel/core@2.9.3) - '@parcel/reporter-dev-server': 2.9.3(@parcel/core@2.9.3) - '@parcel/resolver-default': 2.9.3(@parcel/core@2.9.3) - '@parcel/runtime-browser-hmr': 2.9.3(@parcel/core@2.9.3) - '@parcel/runtime-js': 2.9.3(@parcel/core@2.9.3) - '@parcel/runtime-react-refresh': 2.9.3(@parcel/core@2.9.3) - '@parcel/runtime-service-worker': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-babel': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-css': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-html': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-image': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-js': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-json': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-postcss': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-posthtml': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-raw': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-react-refresh-wrap': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-svg': 2.9.3(@parcel/core@2.9.3) - transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - uncss - - '@parcel/core@2.9.3': - dependencies: - '@mischnic/json-sourcemap': 0.1.0 - '@parcel/cache': 2.9.3(@parcel/core@2.9.3) - '@parcel/diagnostic': 2.9.3 - '@parcel/events': 2.9.3 - '@parcel/fs': 2.9.3(@parcel/core@2.9.3) - '@parcel/graph': 2.9.3 - '@parcel/hash': 2.9.3 - '@parcel/logger': 2.9.3 - '@parcel/package-manager': 2.9.3(@parcel/core@2.9.3) - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/profiler': 2.9.3 - '@parcel/source-map': 2.1.1 - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - abortcontroller-polyfill: 1.7.5 - base-x: 3.0.9 - browserslist: 4.21.4 - clone: 2.1.2 - dotenv: 7.0.0 - dotenv-expand: 5.1.0 - json5: 2.2.3 - msgpackr: 1.8.5 - nullthrows: 1.1.1 - semver: 7.6.0 - - '@parcel/diagnostic@2.9.3': - dependencies: - '@mischnic/json-sourcemap': 0.1.0 - nullthrows: 1.1.1 - - '@parcel/events@2.9.3': {} - - '@parcel/fs-search@2.9.3': {} - - '@parcel/fs@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/core': 2.9.3 - '@parcel/fs-search': 2.9.3 - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - '@parcel/watcher': 2.0.7 - '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - - '@parcel/graph@2.9.3': - dependencies: - nullthrows: 1.1.1 - - '@parcel/hash@2.9.3': - dependencies: - xxhash-wasm: 0.4.2 - - '@parcel/logger@2.9.3': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/events': 2.9.3 - - '@parcel/markdown-ansi@2.9.3': - dependencies: - chalk: 4.1.2 - - '@parcel/namer-default@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/node-resolver-core@3.0.3(@parcel/core@2.9.3)': - dependencies: - '@mischnic/json-sourcemap': 0.1.0 - '@parcel/diagnostic': 2.9.3 - '@parcel/fs': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - semver: 7.6.0 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/optimizer-css@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.9.3 - browserslist: 4.21.4 - lightningcss: 1.25.1 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/optimizer-htmlnano@2.9.3(@parcel/core@2.9.3)(postcss@8.4.31)(srcset@4.0.0)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - htmlnano: 2.0.3(postcss@8.4.31)(srcset@4.0.0)(svgo@2.8.0) - nullthrows: 1.1.1 - posthtml: 0.16.6 - svgo: 2.8.0 - transitivePeerDependencies: - - '@parcel/core' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - uncss - - '@parcel/optimizer-image@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/core': 2.9.3 - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - - '@parcel/optimizer-svgo@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - svgo: 2.8.0 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/optimizer-swc@2.9.3(@parcel/core@2.9.3)(@swc/helpers@0.5.1)': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.9.3 - '@swc/core': 1.3.52(@swc/helpers@0.5.1) - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/package-manager@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/core': 2.9.3 - '@parcel/diagnostic': 2.9.3 - '@parcel/fs': 2.9.3(@parcel/core@2.9.3) - '@parcel/logger': 2.9.3 - '@parcel/node-resolver-core': 3.0.3(@parcel/core@2.9.3) - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - semver: 7.6.0 - - '@parcel/packager-css@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/packager-html@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - posthtml: 0.16.6 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/packager-js@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/hash': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.9.3 - globals: 13.20.0 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/packager-raw@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/packager-svg@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - posthtml: 0.16.6 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/plugin@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/profiler@2.9.3': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/events': 2.9.3 - chrome-trace-event: 1.0.3 - - '@parcel/reporter-cli@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - chalk: 4.1.2 - term-size: 2.2.1 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/reporter-dev-server@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/reporter-tracer@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - chrome-trace-event: 1.0.3 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/resolver-default@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/node-resolver-core': 3.0.3(@parcel/core@2.9.3) - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/runtime-browser-hmr@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/runtime-js@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/runtime-react-refresh@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - react-error-overlay: 6.0.9 - react-refresh: 0.9.0 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/runtime-service-worker@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/source-map@2.1.1': - dependencies: - detect-libc: 1.0.3 - - '@parcel/transformer-babel@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.9.3 - browserslist: 4.21.4 - json5: 2.2.3 - nullthrows: 1.1.1 - semver: 7.6.0 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/transformer-css@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.9.3 - browserslist: 4.21.4 - lightningcss: 1.25.1 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/transformer-html@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/hash': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - nullthrows: 1.1.1 - posthtml: 0.16.6 - posthtml-parser: 0.10.2 - posthtml-render: 3.0.0 - semver: 7.6.0 - srcset: 4.0.0 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/transformer-image@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/core': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - nullthrows: 1.1.1 - - '@parcel/transformer-js@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/core': 2.9.3 - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.9.3 - '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - '@swc/helpers': 0.5.1 - browserslist: 4.21.4 - nullthrows: 1.1.1 - regenerator-runtime: 0.13.11 - semver: 7.6.0 - - '@parcel/transformer-json@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - json5: 2.2.3 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/transformer-postcss@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/hash': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - clone: 2.1.2 - nullthrows: 1.1.1 - postcss-value-parser: 4.2.0 - semver: 7.6.0 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/transformer-posthtml@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - posthtml: 0.16.6 - posthtml-parser: 0.10.2 - posthtml-render: 3.0.0 - semver: 7.6.0 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/transformer-raw@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/transformer-react-refresh-wrap@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - react-refresh: 0.9.0 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/transformer-sass@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - sass: 1.77.8 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/transformer-svg-react@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@svgr/core': 6.5.1 - '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) - '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) - transitivePeerDependencies: - - '@parcel/core' - - supports-color - - '@parcel/transformer-svg@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/hash': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - nullthrows: 1.1.1 - posthtml: 0.16.6 - posthtml-parser: 0.10.2 - posthtml-render: 3.0.0 - semver: 7.6.0 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/types@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/cache': 2.9.3(@parcel/core@2.9.3) - '@parcel/diagnostic': 2.9.3 - '@parcel/fs': 2.9.3(@parcel/core@2.9.3) - '@parcel/package-manager': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - utility-types: 3.10.0 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/utils@2.9.3': - dependencies: - '@parcel/codeframe': 2.9.3 - '@parcel/diagnostic': 2.9.3 - '@parcel/hash': 2.9.3 - '@parcel/logger': 2.9.3 - '@parcel/markdown-ansi': 2.9.3 - '@parcel/source-map': 2.1.1 - chalk: 4.1.2 - nullthrows: 1.1.1 - - '@parcel/watcher@2.0.7': - dependencies: - node-addon-api: 3.2.1 - node-gyp-build: 4.5.0 - - '@parcel/workers@2.9.3(@parcel/core@2.9.3)': - dependencies: - '@parcel/core': 2.9.3 - '@parcel/diagnostic': 2.9.3 - '@parcel/logger': 2.9.3 - '@parcel/profiler': 2.9.3 - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - '@parse5/tools@0.3.0': dependencies: parse5: 7.1.1 @@ -16966,10 +15740,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.7.0(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3))(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(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.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-n: 17.2.1(eslint@8.57.0) eslint-plugin-no-use-extend-native: 0.5.0 eslint-plugin-prettier: 5.1.3(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.0.0) @@ -17396,82 +16170,38 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.6.2 - '@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@svgr/babel-plugin-remove-jsx-attribute@6.5.0(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@svgr/babel-plugin-remove-jsx-empty-expression@6.5.0(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@svgr/babel-preset@6.5.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.24.4) - '@svgr/babel-plugin-remove-jsx-attribute': 6.5.0(@babel/core@7.24.4) - '@svgr/babel-plugin-remove-jsx-empty-expression': 6.5.0(@babel/core@7.24.4) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.24.4) - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.24.4) - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.24.4) - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.24.4) - '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.24.4) - '@svgr/babel-preset@8.1.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17484,16 +16214,6 @@ snapshots: '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.24.4) '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.24.4) - '@svgr/core@6.5.1': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-preset': 6.5.1(@babel/core@7.24.4) - '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) - camelcase: 6.3.0 - cosmiconfig: 7.1.0 - transitivePeerDependencies: - - supports-color - '@svgr/core@8.1.0(typescript@5.5.3)': dependencies: '@babel/core': 7.24.4 @@ -17505,26 +16225,11 @@ snapshots: - supports-color - typescript - '@svgr/hast-util-to-babel-ast@6.5.1': - dependencies: - '@babel/types': 7.24.0 - entities: 4.4.0 - '@svgr/hast-util-to-babel-ast@8.0.0': dependencies: '@babel/types': 7.24.0 entities: 4.5.0 - '@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-preset': 6.5.1(@babel/core@7.24.4) - '@svgr/core': 6.5.1 - '@svgr/hast-util-to-babel-ast': 6.5.1 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.5.3))': dependencies: '@babel/core': 7.24.4 @@ -17535,13 +16240,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@svgr/plugin-svgo@6.5.1(@svgr/core@6.5.1)': - dependencies: - '@svgr/core': 6.5.1 - cosmiconfig: 7.1.0 - deepmerge: 4.3.1 - svgo: 2.8.0 - '@swc/core-darwin-arm64@1.3.52': optional: true @@ -17589,6 +16287,7 @@ snapshots: '@swc/helpers@0.5.1': dependencies: tslib: 2.6.2 + optional: true '@swc/jest@0.2.26(@swc/core@1.3.52(@swc/helpers@0.5.1))': dependencies: @@ -17634,8 +16333,6 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trysound/sax@0.2.0': {} - '@tsconfig/node10@1.0.9': optional: true @@ -17913,8 +16610,6 @@ snapshots: '@types/koa': 2.15.0 '@types/node': 20.12.7 - '@types/parse-json@4.0.0': {} - '@types/parse5@6.0.3': {} '@types/pg@8.11.2': @@ -18359,8 +17054,6 @@ snapshots: dependencies: event-target-shim: 5.0.1 - abortcontroller-polyfill@1.7.5: {} - accepts@1.3.7: dependencies: mime-types: 2.1.35 @@ -18730,10 +17423,6 @@ snapshots: bare-os: 2.2.1 optional: true - base-x@3.0.9: - dependencies: - safe-buffer: 5.2.1 - base64-js@1.5.1: {} basic-ftp@5.0.3: {} @@ -18754,8 +17443,6 @@ snapshots: bluebird@3.7.2: {} - boolbase@1.0.0: {} - boolean@3.1.4: {} bowser@2.11.0: {} @@ -18777,19 +17464,10 @@ snapshots: dependencies: wcwidth: 1.0.1 - browserslist@4.21.4: + browserslist-to-esbuild@2.1.1(browserslist@4.23.2): dependencies: - caniuse-lite: 1.0.30001618 - electron-to-chromium: 1.4.281 - node-releases: 2.0.6 - update-browserslist-db: 1.0.10(browserslist@4.21.4) - - browserslist@4.23.0: - dependencies: - caniuse-lite: 1.0.30001618 - electron-to-chromium: 1.4.738 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) + browserslist: 4.23.2 + meow: 13.2.0 browserslist@4.23.2: dependencies: @@ -18888,8 +17566,6 @@ snapshots: camelcase@8.0.0: {} - caniuse-lite@1.0.30001618: {} - caniuse-lite@1.0.30001643: {} ccount@2.0.1: {} @@ -18953,8 +17629,6 @@ snapshots: chownr@3.0.0: {} - chrome-trace-event@1.0.3: {} - chromium-bidi@0.5.17(devtools-protocol@0.0.1262051): dependencies: devtools-protocol: 0.0.1262051 @@ -19151,7 +17825,7 @@ snapshots: core-js-compat@3.37.0: dependencies: - browserslist: 4.23.0 + browserslist: 4.23.2 core-js@3.34.0: {} @@ -19166,14 +17840,6 @@ snapshots: jiti: 1.21.0 typescript: 5.0.2 - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.0 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - cosmiconfig@8.3.6(typescript@5.0.2): dependencies: import-fresh: 3.3.0 @@ -19238,10 +17904,6 @@ snapshots: create-require@1.1.1: optional: true - cross-env@7.0.3: - dependencies: - cross-spawn: 7.0.3 - cross-fetch@4.0.0: dependencies: node-fetch: 2.7.0 @@ -19262,19 +17924,6 @@ snapshots: css-functions-list@3.2.1: {} - css-select@4.3.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - - css-tree@1.1.3: - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - css-tree@2.3.1: dependencies: mdn-data: 2.0.30 @@ -19282,14 +17931,8 @@ snapshots: css-unit-converter@1.1.2: {} - css-what@6.1.0: {} - cssesc@3.0.0: {} - csso@4.2.0: - dependencies: - css-tree: 1.1.3 - cssom@0.3.8: {} cssom@0.5.0: {} @@ -19657,7 +18300,8 @@ snapshots: detect-indent@6.1.0: {} - detect-libc@1.0.3: {} + detect-libc@1.0.3: + optional: true detect-newline@3.1.0: {} @@ -19713,30 +18357,12 @@ snapshots: dependencies: '@babel/runtime': 7.24.4 - dom-serializer@1.4.1: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - - domelementtype@2.3.0: {} - domexception@4.0.0: dependencies: webidl-conversions: 7.0.0 - domhandler@4.3.1: - dependencies: - domelementtype: 2.3.0 - dompurify@3.1.5: {} - domutils@2.8.0: - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -19746,12 +18372,8 @@ snapshots: dependencies: is-obj: 2.0.0 - dotenv-expand@5.1.0: {} - dotenv@16.4.5: {} - dotenv@7.0.0: {} - duplexer@0.1.2: {} duplexify@4.1.3: @@ -19769,10 +18391,6 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.4.281: {} - - electron-to-chromium@1.4.738: {} - electron-to-chromium@1.5.0: {} elkjs@0.9.3: {} @@ -19808,12 +18426,6 @@ snapshots: ent@2.2.0: {} - entities@2.2.0: {} - - entities@3.0.1: {} - - entities@4.4.0: {} - entities@4.5.0: {} env-paths@2.2.1: {} @@ -20061,13 +18673,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0): dependencies: debug: 4.3.4 enhanced-resolve: 5.16.0 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.3 is-core-module: 2.13.1 @@ -20078,14 +18690,14 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7(supports-color@5.5.0) optionalDependencies: '@typescript-eslint/parser': 7.7.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color @@ -20107,7 +18719,7 @@ snapshots: eslint: 8.57.0 ignore: 5.3.1 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -20117,7 +18729,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.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -20709,8 +19321,6 @@ snapshots: get-package-type@0.1.0: {} - get-port@4.2.0: {} - get-set-props@0.1.0: {} get-stack-trace@2.1.1: @@ -21046,23 +19656,6 @@ snapshots: html-url-attributes@3.0.0: {} - htmlnano@2.0.3(postcss@8.4.31)(srcset@4.0.0)(svgo@2.8.0): - dependencies: - cosmiconfig: 7.1.0 - posthtml: 0.16.6 - timsort: 0.3.0 - optionalDependencies: - postcss: 8.4.31 - srcset: 4.0.0 - svgo: 2.8.0 - - htmlparser2@7.2.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 3.0.1 - http-assert@1.5.0: dependencies: deep-equal: 1.0.1 @@ -21186,7 +19779,8 @@ snapshots: ignore@5.3.1: {} - immutable@4.1.0: {} + immutable@4.1.0: + optional: true import-fresh@3.3.0: dependencies: @@ -21398,8 +19992,6 @@ snapshots: dependencies: js-types: 1.0.0 - is-json@2.0.1: {} - is-map@2.0.3: {} is-module@1.0.0: {} @@ -21706,7 +20298,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.12.7 - ts-node: 10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3) + ts-node: 10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -22449,6 +21041,7 @@ snapshots: lightningcss-linux-x64-gnu: 1.25.1 lightningcss-linux-x64-musl: 1.25.1 lightningcss-win32-x64-msvc: 1.25.1 + optional: true lilconfig@2.1.0: {} @@ -22496,21 +21089,6 @@ snapshots: lit-element: 4.0.6 lit-html: 3.1.4 - lmdb@2.7.11: - dependencies: - msgpackr: 1.8.5 - node-addon-api: 4.3.0 - node-gyp-build-optional-packages: 5.0.6 - ordered-binary: 1.4.0 - weak-lru-cache: 1.2.2 - optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 2.7.11 - '@lmdb/lmdb-darwin-x64': 2.7.11 - '@lmdb/lmdb-linux-arm': 2.7.11 - '@lmdb/lmdb-linux-arm64': 2.7.11 - '@lmdb/lmdb-linux-x64': 2.7.11 - '@lmdb/lmdb-win32-x64': 2.7.11 - load-tsconfig@0.2.5: {} load-yaml-file@0.2.0: @@ -22868,8 +21446,6 @@ snapshots: dependencies: '@types/mdast': 4.0.1 - mdn-data@2.0.14: {} - mdn-data@2.0.30: {} media-typer@0.3.0: {} @@ -22891,6 +21467,8 @@ snapshots: meow@12.1.1: {} + meow@13.2.0: {} + meow@6.1.1: dependencies: '@types/minimist': 1.2.2 @@ -23411,22 +21989,6 @@ snapshots: ms@2.1.3: {} - msgpackr-extract@3.0.2: - dependencies: - node-gyp-build-optional-packages: 5.0.7 - optionalDependencies: - '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.2 - optional: true - - msgpackr@1.8.5: - optionalDependencies: - msgpackr-extract: 3.0.2 - mute-stream@0.0.8: {} mz@2.7.0: @@ -23487,23 +22049,12 @@ snapshots: json-stringify-safe: 5.0.1 propagate: 2.0.1 - node-addon-api@3.2.1: {} - - node-addon-api@4.3.0: {} - node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 node-forge@1.3.1: {} - node-gyp-build-optional-packages@5.0.6: {} - - node-gyp-build-optional-packages@5.0.7: - optional: true - - node-gyp-build@4.5.0: {} - node-int64@0.4.0: {} node-mocks-http@1.12.1: @@ -23521,8 +22072,6 @@ snapshots: node-releases@2.0.14: {} - node-releases@2.0.6: {} - node-rsa@1.1.1: dependencies: asn1: 0.2.6 @@ -23576,12 +22125,6 @@ snapshots: dependencies: path-key: 4.0.0 - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - nullthrows@1.1.1: {} - nwsapi@2.2.2: {} obj-props@1.4.0: {} @@ -23731,8 +22274,6 @@ snapshots: string-width: 7.0.0 strip-ansi: 7.1.0 - ordered-binary@1.4.0: {} - os-homedir@1.0.2: {} os-tmpdir@1.0.2: {} @@ -23843,36 +22384,6 @@ snapshots: pako@1.0.11: {} - parcel-resolver-ignore@2.1.3(parcel@2.9.3(@swc/helpers@0.5.1)(postcss@8.4.31)(srcset@4.0.0)): - dependencies: - parcel: 2.9.3(@swc/helpers@0.5.1)(postcss@8.4.31)(srcset@4.0.0) - - parcel@2.9.3(@swc/helpers@0.5.1)(postcss@8.4.31)(srcset@4.0.0): - dependencies: - '@parcel/config-default': 2.9.3(@parcel/core@2.9.3)(@swc/helpers@0.5.1)(postcss@8.4.31)(srcset@4.0.0) - '@parcel/core': 2.9.3 - '@parcel/diagnostic': 2.9.3 - '@parcel/events': 2.9.3 - '@parcel/fs': 2.9.3(@parcel/core@2.9.3) - '@parcel/logger': 2.9.3 - '@parcel/package-manager': 2.9.3(@parcel/core@2.9.3) - '@parcel/reporter-cli': 2.9.3(@parcel/core@2.9.3) - '@parcel/reporter-dev-server': 2.9.3(@parcel/core@2.9.3) - '@parcel/reporter-tracer': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - chalk: 4.1.2 - commander: 7.2.0 - get-port: 4.2.0 - transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - uncss - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -24205,23 +22716,6 @@ snapshots: postgres-range@1.1.2: {} - posthtml-parser@0.10.2: - dependencies: - htmlparser2: 7.2.0 - - posthtml-parser@0.11.0: - dependencies: - htmlparser2: 7.2.0 - - posthtml-render@3.0.0: - dependencies: - is-json: 2.0.1 - - posthtml@0.16.6: - dependencies: - posthtml-parser: 0.11.0 - posthtml-render: 3.0.0 - preferred-pm@3.0.3: dependencies: find-up: 5.0.0 @@ -24444,8 +22938,6 @@ snapshots: '@babel/runtime': 7.24.4 react: 18.3.1 - react-error-overlay@6.0.9: {} - react-fast-compare@3.2.1: {} react-helmet@6.1.0(react@18.3.1): @@ -24523,8 +23015,6 @@ snapshots: react-refresh@0.14.2: {} - react-refresh@0.9.0: {} - react-resize-detector@7.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: lodash: 4.17.21 @@ -25017,6 +23507,7 @@ snapshots: chokidar: 3.5.3 immutable: 4.1.0 source-map-js: 1.2.0 + optional: true sax@1.2.4: {} @@ -25230,10 +23721,6 @@ snapshots: sql-parse@0.1.5: {} - srcset@4.0.0: {} - - stable@0.1.8: {} - stack-chain@1.3.7: {} stack-utils@2.0.5: @@ -25535,16 +24022,6 @@ snapshots: svg-tags@1.0.0: {} - svgo@2.8.0: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 4.3.0 - css-tree: 1.1.3 - csso: 4.2.0 - picocolors: 1.0.1 - stable: 0.1.8 - swr@2.2.0(react@18.3.1): dependencies: react: 18.3.1 @@ -25645,8 +24122,6 @@ snapshots: through@2.3.8: {} - timsort@0.3.0: {} - tiny-cookie@2.4.1: {} tinybench@2.8.0: {} @@ -25714,27 +24189,6 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.7 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.5.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.3.52(@swc/helpers@0.5.1) - optional: true - ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -25975,18 +24429,6 @@ snapshots: unpipe@1.0.0: {} - update-browserslist-db@1.0.10(browserslist@4.21.4): - dependencies: - browserslist: 4.21.4 - escalade: 3.1.1 - picocolors: 1.0.1 - - update-browserslist-db@1.0.13(browserslist@4.23.0): - dependencies: - browserslist: 4.23.0 - escalade: 3.1.1 - picocolors: 1.0.1 - update-browserslist-db@1.1.0(browserslist@4.23.2): dependencies: browserslist: 4.23.2 @@ -26014,8 +24456,6 @@ snapshots: util-deprecate@1.0.2: {} - utility-types@3.10.0: {} - uuid@8.3.2: {} uuid@9.0.1: {} @@ -26295,8 +24735,6 @@ snapshots: dependencies: defaults: 1.0.4 - weak-lru-cache@1.2.2: {} - web-worker@1.3.0: {} webidl-conversions@3.0.1: {} @@ -26456,8 +24894,6 @@ snapshots: xtend@4.0.2: {} - xxhash-wasm@0.4.2: {} - y18n@4.0.3: {} y18n@5.0.8: {} @@ -26470,8 +24906,6 @@ snapshots: yallist@5.0.0: {} - yaml@1.10.2: {} - yaml@2.3.3: {} yaml@2.4.5: {} diff --git a/vite.shared.config.ts b/vite.shared.config.ts index 10b5ab015..44cee6999 100644 --- a/vite.shared.config.ts +++ b/vite.shared.config.ts @@ -1,7 +1,21 @@ /** @fileoverview The common config for frontend projects. */ -import { UserConfig } from 'vite'; -import fs from 'fs'; +import { Rollup, UserConfig } from 'vite'; + +export const manualChunks: Rollup.GetManualChunk = (id) => { + if (id.includes('/@logto/')) { + return 'logto'; + } + + if (id.includes('/node_modules/')) { + return 'vendors'; + } + + const match = /\/lib\/locales\/([^/]+)/.exec(id); + if (match?.[1]) { + return `phrases-${match[1]}`; + } +}; export const defaultConfig: UserConfig = { resolve: { @@ -18,22 +32,7 @@ export const defaultConfig: UserConfig = { build: { sourcemap: false, rollupOptions: { - output: { - manualChunks(id) { - if (id.includes('/@logto/')) { - return 'logto'; - } - - if (id.includes('/node_modules/')) { - return 'vendors'; - } - - const match = /\/lib\/locales\/([^/]+)/.exec(id); - if (match?.[1]) { - return `phrases-${match[1]}`; - } - }, - }, + output: { manualChunks }, }, }, };