diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..2f47b83 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Identity \ No newline at end of file diff --git a/pkg/view/.dockerignore b/pkg/view/.dockerignore deleted file mode 100644 index 8179c84..0000000 --- a/pkg/view/.dockerignore +++ /dev/null @@ -1,5 +0,0 @@ -/dist -/node_modules -/package-lock.json - -*.lock \ No newline at end of file diff --git a/pkg/view/.eslintrc.cjs b/pkg/view/.eslintrc.cjs new file mode 100644 index 0000000..d6c9537 --- /dev/null +++ b/pkg/view/.eslintrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/pkg/view/README.md b/pkg/view/README.md index 99613fc..0d6babe 100644 --- a/pkg/view/README.md +++ b/pkg/view/README.md @@ -1,28 +1,30 @@ -## Usage +# React + TypeScript + Vite -```bash -$ npm install # or pnpm install or yarn install +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default { + // other rules... + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + }, +} ``` -### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs) - -## Available Scripts - -In the project directory, you can run: - -### `npm run dev` - -Runs the app in the development mode.
-Open [http://localhost:5173](http://localhost:5173) to view it in the browser. - -### `npm run build` - -Builds the app for production to the `dist` folder.
-It correctly bundles Solid in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.
-Your app is ready to be deployed! - -## Deployment - -Learn more about deploying your application with the [documentations](https://vitejs.dev/guide/static-deploy.html) +- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` +- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/pkg/view/bun.lockb b/pkg/view/bun.lockb new file mode 100755 index 0000000..4f36ee3 Binary files /dev/null and b/pkg/view/bun.lockb differ diff --git a/pkg/view/index.html b/pkg/view/index.html index 3c940c2..346559b 100644 --- a/pkg/view/index.html +++ b/pkg/view/index.html @@ -8,6 +8,6 @@
- + diff --git a/pkg/view/package.json b/pkg/view/package.json index 9f79d7d..f1b648f 100644 --- a/pkg/view/package.json +++ b/pkg/view/package.json @@ -1,27 +1,42 @@ { - "name": "@hydrogen/identity-web", + "name": "identity-web", "private": true, "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview" }, "dependencies": { - "@fortawesome/fontawesome-free": "^6.5.1", - "@solidjs/router": "^0.10.10", - "solid-js": "^1.8.7", - "universal-cookie": "^7.0.2" + "@emotion/react": "^11.11.3", + "@emotion/styled": "^11.11.0", + "@mui/icons-material": "^5.15.10", + "@mui/material": "^5.15.10", + "@unocss/reset": "^0.58.5", + "localforage": "^1.10.0", + "match-sorter": "^6.3.4", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.22.1", + "react-swipeable-views": "^0.14.0", + "sort-by": "^1.2.0", + "universal-cookie": "^7.1.0", + "use-debounce": "^10.0.0" }, "devDependencies": { - "autoprefixer": "^10.4.17", - "daisyui": "^4.6.0", - "postcss": "^8.4.33", - "solid-devtools": "^0.29.3", - "tailwindcss": "^3.4.1", + "@types/node": "^20.11.20", + "@types/react": "^18.2.56", + "@types/react-dom": "^18.2.19", + "@typescript-eslint/eslint-plugin": "^7.0.2", + "@typescript-eslint/parser": "^7.0.2", + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^8.56.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", "typescript": "^5.2.2", - "vite": "^5.0.8", - "vite-plugin-solid": "^2.8.0" + "unocss": "^0.58.5", + "vite": "^5.1.4" } } diff --git a/pkg/view/postcss.config.js b/pkg/view/postcss.config.js deleted file mode 100644 index 2e7af2b..0000000 --- a/pkg/view/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/pkg/view/public/favicon.svg b/pkg/view/public/favicon.svg old mode 100644 new mode 100755 diff --git a/pkg/view/src/.prettierrc b/pkg/view/src/.prettierrc deleted file mode 100644 index 78bd232..0000000 --- a/pkg/view/src/.prettierrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "printWidth": 120, - "tabWidth": 2, - "singleQuote": false -} \ No newline at end of file diff --git a/pkg/view/src/assets/fonts/fonts.css b/pkg/view/src/assets/fonts/fonts.css deleted file mode 100644 index 3688303..0000000 --- a/pkg/view/src/assets/fonts/fonts.css +++ /dev/null @@ -1,184 +0,0 @@ -:root { - --bs-body-font-family: "IBM Plex Sans", "Noto Serif SC", sans-serif !important; -} - -html, -body { - font-family: var(--bs-body-font-family); -} - -/* ibm-plex-sans-100 - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'IBM Plex Sans'; - font-style: normal; - font-weight: 100; - src: url('./ibm-plex-sans-v19-latin-100.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} -/* ibm-plex-sans-100italic - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'IBM Plex Sans'; - font-style: italic; - font-weight: 100; - src: url('./ibm-plex-sans-v19-latin-100italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} -/* ibm-plex-sans-200 - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'IBM Plex Sans'; - font-style: normal; - font-weight: 200; - src: url('./ibm-plex-sans-v19-latin-200.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} -/* ibm-plex-sans-200italic - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'IBM Plex Sans'; - font-style: italic; - font-weight: 200; - src: url('./ibm-plex-sans-v19-latin-200italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} -/* ibm-plex-sans-300 - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'IBM Plex Sans'; - font-style: normal; - font-weight: 300; - src: url('./ibm-plex-sans-v19-latin-300.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} -/* ibm-plex-sans-300italic - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'IBM Plex Sans'; - font-style: italic; - font-weight: 300; - src: url('./ibm-plex-sans-v19-latin-300italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} -/* ibm-plex-sans-regular - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'IBM Plex Sans'; - font-style: normal; - font-weight: 400; - src: url('./ibm-plex-sans-v19-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} -/* ibm-plex-sans-italic - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'IBM Plex Sans'; - font-style: italic; - font-weight: 400; - src: url('./ibm-plex-sans-v19-latin-italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} -/* ibm-plex-sans-500 - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'IBM Plex Sans'; - font-style: normal; - font-weight: 500; - src: url('./ibm-plex-sans-v19-latin-500.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} -/* ibm-plex-sans-500italic - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'IBM Plex Sans'; - font-style: italic; - font-weight: 500; - src: url('./ibm-plex-sans-v19-latin-500italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} -/* ibm-plex-sans-600 - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'IBM Plex Sans'; - font-style: normal; - font-weight: 600; - src: url('./ibm-plex-sans-v19-latin-600.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} -/* ibm-plex-sans-600italic - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'IBM Plex Sans'; - font-style: italic; - font-weight: 600; - src: url('./ibm-plex-sans-v19-latin-600italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} -/* ibm-plex-sans-700 - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'IBM Plex Sans'; - font-style: normal; - font-weight: 700; - src: url('./ibm-plex-sans-v19-latin-700.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} -/* ibm-plex-sans-700italic - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'IBM Plex Sans'; - font-style: italic; - font-weight: 700; - src: url('./ibm-plex-sans-v19-latin-700italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* noto-serif-sc-200 - chinese-simplified */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: "Noto Serif SC"; - font-style: normal; - font-weight: 200; - src: url("./noto-serif-sc-v22-chinese-simplified-200.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* noto-serif-sc-300 - chinese-simplified */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: "Noto Serif SC"; - font-style: normal; - font-weight: 300; - src: url("./noto-serif-sc-v22-chinese-simplified-300.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* noto-serif-sc-regular - chinese-simplified */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: "Noto Serif SC"; - font-style: normal; - font-weight: 400; - src: url("./noto-serif-sc-v22-chinese-simplified-regular.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* noto-serif-sc-500 - chinese-simplified */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: "Noto Serif SC"; - font-style: normal; - font-weight: 500; - src: url("./noto-serif-sc-v22-chinese-simplified-500.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* noto-serif-sc-600 - chinese-simplified */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: "Noto Serif SC"; - font-style: normal; - font-weight: 600; - src: url("./noto-serif-sc-v22-chinese-simplified-600.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* noto-serif-sc-700 - chinese-simplified */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: "Noto Serif SC"; - font-style: normal; - font-weight: 700; - src: url("./noto-serif-sc-v22-chinese-simplified-700.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* noto-serif-sc-900 - chinese-simplified */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: "Noto Serif SC"; - font-style: normal; - font-weight: 900; - src: url("./noto-serif-sc-v22-chinese-simplified-900.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} diff --git a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-100.woff2 b/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-100.woff2 deleted file mode 100755 index bbe5a8b..0000000 Binary files a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-100.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-100italic.woff2 b/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-100italic.woff2 deleted file mode 100755 index 075d1c8..0000000 Binary files a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-100italic.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-200.woff2 b/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-200.woff2 deleted file mode 100755 index 13e9069..0000000 Binary files a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-200.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-200italic.woff2 b/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-200italic.woff2 deleted file mode 100755 index 0947013..0000000 Binary files a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-200italic.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-300.woff2 b/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-300.woff2 deleted file mode 100755 index 8737b6b..0000000 Binary files a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-300.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-300italic.woff2 b/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-300italic.woff2 deleted file mode 100755 index a5f9f4c..0000000 Binary files a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-300italic.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-500.woff2 b/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-500.woff2 deleted file mode 100755 index adbbd4c..0000000 Binary files a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-500.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-500italic.woff2 b/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-500italic.woff2 deleted file mode 100755 index 6d6a9b1..0000000 Binary files a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-500italic.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-600.woff2 b/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-600.woff2 deleted file mode 100755 index 0ac91d6..0000000 Binary files a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-600.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-600italic.woff2 b/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-600italic.woff2 deleted file mode 100755 index c71f94c..0000000 Binary files a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-600italic.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-700.woff2 b/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-700.woff2 deleted file mode 100755 index da7d57f..0000000 Binary files a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-700.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-700italic.woff2 b/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-700italic.woff2 deleted file mode 100755 index 9cd1838..0000000 Binary files a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-700italic.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-italic.woff2 b/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-italic.woff2 deleted file mode 100755 index eea1618..0000000 Binary files a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-italic.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-regular.woff2 b/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-regular.woff2 deleted file mode 100755 index 93bcd64..0000000 Binary files a/pkg/view/src/assets/fonts/ibm-plex-sans-v19-latin-regular.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-200.woff2 b/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-200.woff2 deleted file mode 100755 index d90173a..0000000 Binary files a/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-200.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-300.woff2 b/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-300.woff2 deleted file mode 100755 index 385e4f8..0000000 Binary files a/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-300.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-500.woff2 b/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-500.woff2 deleted file mode 100755 index 9699234..0000000 Binary files a/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-500.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-600.woff2 b/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-600.woff2 deleted file mode 100755 index ee418fd..0000000 Binary files a/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-600.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-700.woff2 b/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-700.woff2 deleted file mode 100755 index 03494a8..0000000 Binary files a/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-700.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-900.woff2 b/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-900.woff2 deleted file mode 100755 index 149b461..0000000 Binary files a/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-900.woff2 and /dev/null differ diff --git a/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-regular.woff2 b/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-regular.woff2 deleted file mode 100755 index 6c638af..0000000 Binary files a/pkg/view/src/assets/fonts/noto-serif-sc-v22-chinese-simplified-regular.woff2 and /dev/null differ diff --git a/pkg/view/src/components/AppLoader.tsx b/pkg/view/src/components/AppLoader.tsx new file mode 100644 index 0000000..b17de46 --- /dev/null +++ b/pkg/view/src/components/AppLoader.tsx @@ -0,0 +1,14 @@ +import { ReactNode, useEffect } from "react"; +import { useWellKnown } from "@/stores/wellKnown.tsx"; +import { useUserinfo } from "@/stores/userinfo.tsx"; + +export default function AppLoader({ children }: { children: ReactNode }) { + const { readWellKnown } = useWellKnown(); + const { readProfiles } = useUserinfo(); + + useEffect(() => { + Promise.all([readWellKnown(), readProfiles()]); + }, []); + + return children; +} \ No newline at end of file diff --git a/pkg/view/src/components/AppShell.tsx b/pkg/view/src/components/AppShell.tsx new file mode 100644 index 0000000..1184bcc --- /dev/null +++ b/pkg/view/src/components/AppShell.tsx @@ -0,0 +1,136 @@ +import { + Slide, + Toolbar, + Typography, + AppBar as MuiAppBar, + AppBarProps as MuiAppBarProps, + useScrollTrigger, + IconButton, + styled, + Box, + useMediaQuery, +} from "@mui/material"; +import { ReactElement, ReactNode, useEffect, useState } from "react"; +import { SITE_NAME } from "@/consts"; +import { Link } from "react-router-dom"; +import NavigationDrawer, { DRAWER_WIDTH, AppNavigationHeader, isMobileQuery } from "@/components/NavigationDrawer"; +import MenuIcon from "@mui/icons-material/Menu"; + +function HideOnScroll(props: { window?: () => Window; children: ReactElement }) { + const { children, window } = props; + const trigger = useScrollTrigger({ + target: window ? window() : undefined, + }); + + return ( + + {children} + + ); +} + +interface AppBarProps extends MuiAppBarProps { + open?: boolean; +} + +const ShellAppBar = styled(MuiAppBar, { + shouldForwardProp: (prop) => prop !== "open", +})(({ theme, open }) => { + const isMobile = useMediaQuery(isMobileQuery); + + return { + transition: theme.transitions.create(["margin", "width"], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen, + }), + ...(!isMobile && + open && { + width: `calc(100% - ${DRAWER_WIDTH}px)`, + transition: theme.transitions.create(["margin", "width"], { + easing: theme.transitions.easing.easeOut, + duration: theme.transitions.duration.enteringScreen, + }), + marginRight: DRAWER_WIDTH, + }), + }; +}); + +const AppMain = styled("main", { shouldForwardProp: (prop) => prop !== "open" })<{ + open?: boolean; +}>(({ theme, open }) => { + const isMobile = useMediaQuery(isMobileQuery); + + return { + flexGrow: 1, + transition: theme.transitions.create("margin", { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen, + }), + marginRight: -DRAWER_WIDTH, + ...(!isMobile && + open && { + transition: theme.transitions.create("margin", { + easing: theme.transitions.easing.easeOut, + duration: theme.transitions.duration.enteringScreen, + }), + marginRight: 0, + }), + position: "relative", + }; +}); + +export default function AppShell({ children }: { children: ReactNode }) { + let documentWindow: Window; + + const isMobile = useMediaQuery(isMobileQuery); + const [open, setOpen] = useState(false); + + useEffect(() => { + documentWindow = window; + }); + + return ( + <> + documentWindow}> + + + + Logo + + + + {SITE_NAME} + + + setOpen(true)} + sx={{ width: 64, mr: 1, display: !isMobile && open ? "none" : "block" }} + > + + + + + + + + + + + {children} + + + setOpen(false)} /> + + + ); +} diff --git a/pkg/view/src/components/NavigationDrawer.tsx b/pkg/view/src/components/NavigationDrawer.tsx new file mode 100644 index 0000000..3d07adc --- /dev/null +++ b/pkg/view/src/components/NavigationDrawer.tsx @@ -0,0 +1,151 @@ +import ChevronLeftIcon from "@mui/icons-material/ChevronLeft"; +import ChevronRightIcon from "@mui/icons-material/ChevronRight"; +import { + Box, Collapse, + Divider, + Drawer, + IconButton, + List, + ListItemButton, + ListItemIcon, + ListItemText, + styled, + useMediaQuery +} from "@mui/material"; +import { theme } from "@/theme"; +import { Fragment, ReactNode, useState } from "react"; +import HomeIcon from "@mui/icons-material/Home"; +import ArticleIcon from "@mui/icons-material/Article"; +import FeedIcon from "@mui/icons-material/RssFeed"; +import InfoIcon from "@mui/icons-material/Info"; +import GavelIcon from "@mui/icons-material/Gavel"; +import PolicyIcon from "@mui/icons-material/Policy"; +import SupervisedUserCircleIcon from "@mui/icons-material/SupervisedUserCircle"; +import ExpandLess from "@mui/icons-material/ExpandLess"; +import ExpandMore from "@mui/icons-material/ExpandMore"; + +export interface NavigationItem { + icon?: ReactNode; + title?: string; + link?: string; + divider?: boolean; + children?: NavigationItem[]; +} + +export const DRAWER_WIDTH = 320; +export const NAVIGATION_ITEMS: NavigationItem[] = [ + { icon: , title: "首页", link: "/" }, + { icon: , title: "博客", link: "/posts" }, + { + icon: , title: "信息中心", children: [ + { icon: , title: "用户协议", link: "/i/user-agreement" }, + { icon: , title: "隐私协议", link: "/i/privacy-policy" }, + { icon: , title: "社区准则", link: "/i/community-guidelines" } + ] + }, + { divider: true }, + { icon: , title: "订阅源", link: "/feed" } +]; + +export const AppNavigationHeader = styled("div")(({ theme }) => ({ + display: "flex", + alignItems: "center", + padding: theme.spacing(0, 1), + justifyContent: "flex-start", + height: 64, + ...theme.mixins.toolbar +})); + +export function AppNavigationSection({ items, depth }: { items: NavigationItem[], depth?: number }) { + const [open, setOpen] = useState(false); + + return items.map((item, idx) => { + if (item.divider) { + return ; + } else if (item.children) { + return ( + + setOpen(!open)} sx={{ pl: 2 + (depth ?? 0) * 2 }}> + {item.icon} + + {open ? : } + + + + + + + + ); + } else { + return ( + + + {item.icon} + + + + ); + } + }); +} + +export function AppNavigation({ showClose, onClose }: { showClose?: boolean; onClose: () => void }) { + return ( + <> + + {showClose && ( + + {theme.direction === "rtl" ? : } + + )} + + + + + + + ); +} + +export const isMobileQuery = theme.breakpoints.down("md"); + +export default function NavigationDrawer({ open, onClose }: { open: boolean; onClose: () => void }) { + const isMobile = useMediaQuery(isMobileQuery); + + return isMobile ? ( + <> + + + + + + ) : ( + + + + ); +} diff --git a/pkg/view/src/consts.tsx b/pkg/view/src/consts.tsx new file mode 100644 index 0000000..461c2ca --- /dev/null +++ b/pkg/view/src/consts.tsx @@ -0,0 +1 @@ +export const SITE_NAME = "Goatpass"; diff --git a/pkg/view/src/error.tsx b/pkg/view/src/error.tsx new file mode 100644 index 0000000..8be7cde --- /dev/null +++ b/pkg/view/src/error.tsx @@ -0,0 +1,23 @@ +import { Link as RouterLink, useRouteError } from "react-router-dom"; +import { Box, Container, Link, Typography } from "@mui/material"; + +export default function ErrorBoundary() { + const error = useRouteError() as any; + + return ( + + + {error.status} + {error?.message ?? "Something went wrong"} + + Back to homepage + + + ); +} \ No newline at end of file diff --git a/pkg/view/src/index.css b/pkg/view/src/index.css index 55b7c9b..e69de29 100644 --- a/pkg/view/src/index.css +++ b/pkg/view/src/index.css @@ -1,8 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -html, body { - padding: 0; - margin: 0; -} \ No newline at end of file diff --git a/pkg/view/src/index.tsx b/pkg/view/src/index.tsx deleted file mode 100644 index 459afe9..0000000 --- a/pkg/view/src/index.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import "solid-devtools"; - -/* @refresh reload */ -import { render } from "solid-js/web"; - -import "./index.css"; -import "./assets/fonts/fonts.css"; -import { lazy } from "solid-js"; -import { Route, Router } from "@solidjs/router"; - -import "@fortawesome/fontawesome-free/css/all.min.css"; - -import RootLayout from "./layouts/RootLayout.tsx"; -import { UserinfoProvider } from "./stores/userinfo.tsx"; -import { WellKnownProvider } from "./stores/wellKnown.tsx"; - -const root = document.getElementById("root"); - -const router = (basename?: string) => ( - - - - import("./pages/dashboard.tsx"))} /> - import("./pages/security.tsx"))} /> - import("./pages/personalise.tsx"))} /> - import("./pages/auth/login.tsx"))} /> - import("./pages/auth/register.tsx"))} /> - import("./pages/auth/connect.tsx"))} /> - import("./pages/auth/callback.tsx"))} /> - import("./pages/users/confirm.tsx"))} /> - - - -); - -declare const __GARFISH_EXPORTS__: { - provider: Object; - registerProvider?: (provider: any) => void; -}; - -declare global { - interface Window { - __GARFISH__: boolean; - __LAUNCHPAD_TARGET__?: string; - } -} - -export const provider = () => ({ - render: ({ dom, basename }: { dom: any, basename: string }) => { - render( - () => router(basename), - dom.querySelector("#root") - ); - }, - destroy: () => { - } -}); - -if (!window.__GARFISH__) { - console.log("Running directly!") - render(router, root!); -} else if (typeof __GARFISH_EXPORTS__ !== "undefined") { - console.log("Running in launchpad container!") - console.log("Launchpad target:", window.__LAUNCHPAD_TARGET__) - if (__GARFISH_EXPORTS__.registerProvider) { - __GARFISH_EXPORTS__.registerProvider(provider); - } else { - __GARFISH_EXPORTS__.provider = provider; - } -} diff --git a/pkg/view/src/layouts/RootLayout.tsx b/pkg/view/src/layouts/RootLayout.tsx deleted file mode 100644 index 828f538..0000000 --- a/pkg/view/src/layouts/RootLayout.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import Navigator from "./shared/Navigator.tsx"; -import { readProfiles, useUserinfo } from "../stores/userinfo.tsx"; -import { createEffect, createMemo, createSignal, Show } from "solid-js"; -import { readWellKnown } from "../stores/wellKnown.tsx"; -import { BeforeLeaveEventArgs, useLocation, useNavigate, useSearchParams } from "@solidjs/router"; - -export default function RootLayout(props: any) { - const [ready, setReady] = createSignal(false); - - Promise.all([readWellKnown(), readProfiles()]).then(() => setReady(true)); - - const navigate = useNavigate(); - const userinfo = useUserinfo(); - - const [searchParams] = useSearchParams(); - const location = useLocation(); - - createEffect(() => { - if (ready()) { - keepGate(location.pathname + location.search, searchParams["embedded"] != null); - } - }, [ready, userinfo, location]); - - function keepGate(path: string, embedded: boolean, e?: BeforeLeaveEventArgs) { - const pathname = path.split("?")[0]; - const whitelist = ["/auth/login", "/auth/register", "/users/me/confirm"]; - - if (!userinfo?.isLoggedIn && !whitelist.includes(pathname)) { - if (!e?.defaultPrevented) e?.preventDefault(); - if (embedded) { - navigate(`/auth/login?redirect_uri=${encodeURIComponent(path)}&embedded=yes`); - } else { - navigate(`/auth/login?redirect_uri=${encodeURIComponent(path)}`); - } - } - } - - const mainContentStyles = createMemo(() => { - if (searchParams["embedded"]) { - return "h-screen"; - } else { - return "h-[calc(100vh-64px)] mt-[64px]"; - } - }); - - return ( - -
- -
- - }> - - - - -
{props.children}
-
- ); -} \ No newline at end of file diff --git a/pkg/view/src/layouts/shared/Navigator.tsx b/pkg/view/src/layouts/shared/Navigator.tsx deleted file mode 100644 index 38372da..0000000 --- a/pkg/view/src/layouts/shared/Navigator.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import { For, Match, Show, Switch } from "solid-js"; -import { clearUserinfo, useUserinfo } from "../../stores/userinfo.tsx"; -import { useNavigate } from "@solidjs/router"; - -interface MenuItem { - label: string; - href?: string; - children?: MenuItem[]; -} - -export default function Navigator() { - const nav: MenuItem[] = [ - { - label: "You", children: [ - { label: "Dashboard", href: "/" }, - { label: "Security", href: "/security" }, - { label: "Personalise", href: "/personalise" } - ] - } - ]; - - const userinfo = useUserinfo(); - const navigate = useNavigate(); - - function logout() { - clearUserinfo(); - navigate("/auth/login"); - } - - return ( - - ); -} diff --git a/pkg/view/src/main.tsx b/pkg/view/src/main.tsx new file mode 100644 index 0000000..b962432 --- /dev/null +++ b/pkg/view/src/main.tsx @@ -0,0 +1,60 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import { createBrowserRouter, Outlet, RouterProvider } from "react-router-dom"; +import { CssBaseline, ThemeProvider } from "@mui/material"; +import { theme } from "@/theme.ts"; + +import "virtual:uno.css"; + +import "./index.css"; +import "@unocss/reset/tailwind.css"; + +import AppShell from "@/components/AppShell.tsx"; +import LandingPage from "@/pages/landing.tsx"; +import SignUpPage from "@/pages/auth/sign-up.tsx"; +import SignInPage from "@/pages/auth/sign-in.tsx"; +import ErrorBoundary from "@/error.tsx"; +import AppLoader from "@/components/AppLoader.tsx"; +import { UserinfoProvider } from "@/stores/userinfo.tsx"; +import { WellKnownProvider } from "@/stores/wellKnown.tsx"; + +declare const __GARFISH_EXPORTS__: { + provider: Object; + registerProvider?: (provider: any) => void; +}; + +declare global { + interface Window { + __LAUNCHPAD_TARGET__?: string; + } +} + +const router = createBrowserRouter([ + { + path: "/", + element: , + errorElement: , + children: [ + { path: "/", element: } + ] + }, + { path: "/auth/sign-up", element: , errorElement: }, + { path: "/auth/sign-in", element: , errorElement: } +]); + +const element = ( + + + + + + + + + + + + +); + +ReactDOM.createRoot(document.getElementById("root")!).render(element); \ No newline at end of file diff --git a/pkg/view/src/pages/auth/callback.tsx b/pkg/view/src/pages/auth/callback.tsx deleted file mode 100644 index a682c66..0000000 --- a/pkg/view/src/pages/auth/callback.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { useSearchParams } from "@solidjs/router"; - -export default function DefaultCallbackPage() { - const [searchParams] = useSearchParams(); - - return ( -
-
-
- - -
-

Authorization Code

- {searchParams["code"]} -
-
-
-
- ); -} \ No newline at end of file diff --git a/pkg/view/src/pages/auth/connect.tsx b/pkg/view/src/pages/auth/connect.tsx deleted file mode 100644 index 3ed65c6..0000000 --- a/pkg/view/src/pages/auth/connect.tsx +++ /dev/null @@ -1,141 +0,0 @@ -import { createSignal, Show } from "solid-js"; -import { useLocation, useSearchParams } from "@solidjs/router"; -import { getAtk, useUserinfo } from "../../stores/userinfo.tsx"; -import { request } from "../../scripts/request.ts"; - -export default function OauthConnectPage() { - const [title, setTitle] = createSignal("Connect Third-party"); - const [subtitle, setSubtitle] = createSignal("Via your Goatpass account"); - - const [error, setError] = createSignal(null); - const [status, setStatus] = createSignal("Handshaking..."); - const [loading, setLoading] = createSignal(true); - - const [client, setClient] = createSignal(null); - - const [searchParams] = useSearchParams(); - - const userinfo = useUserinfo(); - const location = useLocation(); - - async function preConnect() { - const res = await request(`/api/auth/o/connect${location.search}`, { - headers: { "Authorization": `Bearer ${getAtk()}` } - }); - - if (res.status !== 200) { - setError(await res.text()); - } else { - const data = await res.json(); - - if (data["session"]) { - setStatus("Redirecting..."); - redirect(data["session"]); - } else { - setTitle(`Connect ${data["client"].name}`); - setSubtitle(`Via ${userinfo?.displayName}`); - setClient(data["client"]); - setLoading(false); - } - } - } - - function decline() { - if (window.history.length > 0) { - window.history.back(); - } else { - window.close(); - } - } - - async function approve() { - setLoading(true); - setStatus("Approving..."); - - const res = await request("/api/auth/o/connect?" + new URLSearchParams({ - client_id: searchParams["client_id"] as string, - redirect_uri: encodeURIComponent(searchParams["redirect_uri"] as string), - response_type: "code", - scope: searchParams["scope"] as string - }), { - method: "POST", - headers: { "Authorization": `Bearer ${getAtk()}` } - }); - - if (res.status !== 200) { - setError(await res.text()); - setLoading(false); - } else { - const data = await res.json(); - setStatus("Redirecting..."); - setTimeout(() => redirect(data["session"]), 1850); - } - } - - function redirect(session: any) { - const url = `${searchParams["redirect_uri"]}?code=${session["grant_token"]}&state=${searchParams["state"]}`; - window.open(url, "_self"); - } - - preConnect(); - - return ( -
-
-
- - - -
- -
-
- - -
-
-
- -
- {status()} -
-
-
- - -
-

About who you connecting to

-

{client().description}

-
-
-

Make sure you trust them

-

You may share your personal information after connect them. Learn about their privacy policy and user - agreement to keep your personal information in safe.

-
-
-

After approve this request

-

- You will be redirect to{" "} - {searchParams["redirect_uri"]} -

-
-
- - -
-
-
-
-
- ); -} \ No newline at end of file diff --git a/pkg/view/src/pages/auth/login.tsx b/pkg/view/src/pages/auth/login.tsx deleted file mode 100644 index 51f2ec9..0000000 --- a/pkg/view/src/pages/auth/login.tsx +++ /dev/null @@ -1,241 +0,0 @@ -import { readProfiles } from "../../stores/userinfo.tsx"; -import { useNavigate, useSearchParams } from "@solidjs/router"; -import { createSignal, For, Match, Show, Switch } from "solid-js"; -import { request } from "../../scripts/request.ts"; - -export default function LoginPage() { - const [title, setTitle] = createSignal("Sign in"); - const [subtitle, setSubtitle] = createSignal("Via your Goatpass account"); - - const [error, setError] = createSignal(null); - const [loading, setLoading] = createSignal(false); - - const [factor, setFactor] = createSignal(); - const [factors, setFactors] = createSignal([]); - const [challenge, setChallenge] = createSignal(); - const [stage, setStage] = createSignal("starting"); - - const [searchParams] = useSearchParams(); - - const navigate = useNavigate(); - - const handlers: { [id: string]: any } = { - "starting": async (evt: SubmitEvent) => { - evt.preventDefault(); - - const data = Object.fromEntries(new FormData(evt.target as HTMLFormElement)); - if (!data.id) return; - - setLoading(true); - const res = await request("/api/auth", { - method: "PUT", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify(data) - }); - if (res.status !== 200) { - setError(await res.text()); - } else { - const data = await res.json(); - setTitle(`Welcome, ${data["display_name"]}`); - setSubtitle("Before continue, we need verify that's you"); - setFactors(data["factors"]); - setChallenge(data["challenge"]); - setError(null); - setStage("choosing"); - } - setLoading(false); - }, - "choosing": async (evt: SubmitEvent) => { - evt.preventDefault(); - - const data = Object.fromEntries(new FormData(evt.target as HTMLFormElement)); - if (!data.factor) return; - - setLoading(true); - const res = await request(`/api/auth/factors/${data.factor}`, { - method: "POST" - }); - if (res.status !== 200 && res.status !== 204) { - setError(await res.text()); - } else { - setTitle(`Enter the code`); - setSubtitle(res.status === 204 ? "Enter your credentials" : "Code has been sent to your inbox"); - setError(null); - setFactor(parseInt(data.factor as string)); - setStage("verifying"); - } - setLoading(false); - }, - "verifying": async (evt: SubmitEvent) => { - evt.preventDefault(); - - const data = Object.fromEntries(new FormData(evt.target as HTMLFormElement)); - if (!data.credentials) return; - - setLoading(true); - const res = await request(`/api/auth`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - challenge_id: challenge().id, - factor_id: factor(), - secret: data.credentials - }) - }); - if (res.status !== 200) { - setError(await res.text()); - } else { - const data = await res.json(); - if (data["is_finished"]) { - await grantToken(data["session"]["grant_token"]); - await readProfiles(); - navigate(searchParams["redirect_uri"] ? decodeURIComponent(searchParams["redirect_uri"]) : "/"); - } else { - setError(null); - setStage("choosing"); - setTitle("Continue verifying"); - setSubtitle("You passed one check, but that's not enough."); - setChallenge(data["challenge"]); - } - } - setLoading(false); - } - }; - - async function grantToken(tk: string) { - const res = await request("/api/auth/token", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - code: tk, - grant_type: "grant_token" - }) - }); - if (res.status !== 200) { - const err = await res.text(); - setError(err); - throw new Error(err); - } else { - setError(null); - } - } - - function getFactorAvailable(factor: any) { - const blacklist: number[] = challenge()?.blacklist_factors ?? []; - return blacklist.includes(factor.id); - } - - function getFactorName(factor: any) { - switch (factor.type) { - case 0: - return "Password Verification"; - case 1: - return "Email Verification Code"; - default: - return "Unknown"; - } - } - - return ( -
-
-
-
- - - -
- -
-
- -
handlers[stage()](e)}> - - - - - -
- - {item => - - } - -
-

Choose a way to verify that's you

-
- - - -
- - -
-
- -
- -
- -
- Risk {challenge().risk_level} - Progress {challenge().progress}/{challenge().requirements} -
-
-
- - - - -
-
- - -
-
- ); -} \ No newline at end of file diff --git a/pkg/view/src/pages/auth/register.tsx b/pkg/view/src/pages/auth/register.tsx deleted file mode 100644 index cc06261..0000000 --- a/pkg/view/src/pages/auth/register.tsx +++ /dev/null @@ -1,154 +0,0 @@ -import { createSignal, Show } from "solid-js"; -import { useWellKnown } from "../../stores/wellKnown.tsx"; -import { useNavigate, useSearchParams } from "@solidjs/router"; -import { request } from "../../scripts/request.ts"; - -export default function RegisterPage() { - const [title, setTitle] = createSignal("Create an account"); - const [subtitle, setSubtitle] = createSignal("The first step to join our community."); - - const [error, setError] = createSignal(null); - const [loading, setLoading] = createSignal(false); - const [done, setDone] = createSignal(false); - - const [searchParams] = useSearchParams() - - const metadata = useWellKnown(); - const navigate = useNavigate(); - - async function submit(evt: SubmitEvent) { - evt.preventDefault(); - - const data = Object.fromEntries(new FormData(evt.target as HTMLFormElement)); - if (!data.name || !data.nick || !data.email || !data.password) return; - - setLoading(true); - const res = await request("/api/users", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify(data) - }); - if (res.status !== 200) { - setError(await res.text()); - } else { - setError(null); - setTitle("Congratulations!"); - setSubtitle("Your account has been created and activation email has sent to your inbox!"); - setDone(true); - } - setLoading(false); - } - - function callback() { - if(searchParams["closable"]) { - window.close() - } else { - navigate("/auth/login") - } - } - - return ( -
-
-
-
- - - -
- -
-
- - -
- - - - - - - - - -
-
- - -
-

What's next?

- - callback()} class="link">Go login{" "} - then you can take part in the entire smartsheep community. - -
-
-
-
- - -
-
- ); -} \ No newline at end of file diff --git a/pkg/view/src/pages/auth/sign-in.tsx b/pkg/view/src/pages/auth/sign-in.tsx new file mode 100644 index 0000000..ce4620a --- /dev/null +++ b/pkg/view/src/pages/auth/sign-in.tsx @@ -0,0 +1,327 @@ +import { Link as RouterLink, useNavigate, useSearchParams } from "react-router-dom"; +import { + Alert, + Avatar, + Box, + Button, + Card, + CardContent, + Collapse, + Grid, + LinearProgress, + Link, + Paper, + TextField, + ToggleButton, + ToggleButtonGroup, + Typography +} from "@mui/material"; +import { FormEvent, useState } from "react"; +import { request } from "@/scripts/request.ts"; +import { useUserinfo } from "@/stores/userinfo.tsx"; +import LoginIcon from "@mui/icons-material/Login"; +import SecurityIcon from "@mui/icons-material/Security"; +import KeyIcon from "@mui/icons-material/Key"; +import PasswordIcon from "@mui/icons-material/Password"; +import EmailIcon from "@mui/icons-material/Email"; + +export default function SignInPage() { + const [panel, setPanel] = useState(0); + + const [error, setError] = useState(null); + const [loading, setLoading] = useState(false); + + const [factor, setFactor] = useState(); + const [factorType, setFactorType] = useState(); + + const [factors, setFactors] = useState(null); + const [challenge, setChallenge] = useState(null); + + const { readProfiles } = useUserinfo(); + + const [searchParams] = useSearchParams(); + const navigate = useNavigate(); + + const handlers: any[] = [ + async (evt: FormEvent) => { + evt.preventDefault(); + + const data = Object.fromEntries(new FormData(evt.target as HTMLFormElement)); + if (!data.id) return; + + setLoading(true); + const res = await request("/api/auth", { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(data) + }); + if (res.status !== 200) { + setError(await res.text()); + } else { + const data = await res.json(); + setFactors(data["factors"]); + setChallenge(data["challenge"]); + setPanel(1); + setError(null); + } + setLoading(false); + }, + async (evt: FormEvent) => { + evt.preventDefault(); + + if (!factor) return; + + setLoading(true); + const res = await request(`/api/auth/factors/${factor}`, { + method: "POST" + }); + if (res.status !== 200 && res.status !== 204) { + setError(await res.text()); + } else { + const item = factors.find((item: any) => item.id === factor).type; + setError(null); + setPanel(2); + setFactorType(factorTypes[item]); + } + setLoading(false); + }, + async (evt: SubmitEvent) => { + evt.preventDefault(); + + const data = Object.fromEntries(new FormData(evt.target as HTMLFormElement)); + if (!data.credentials) return; + + setLoading(true); + const res = await request(`/api/auth`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + challenge_id: challenge?.id, + factor_id: factor, + secret: data.credentials + }) + }); + if (res.status !== 200) { + setError(await res.text()); + } else { + const data = await res.json(); + if (data["is_finished"]) { + await grantToken(data["session"]["grant_token"]); + await readProfiles(); + callback(); + } else { + setError(null); + setPanel(1); + setFactor(undefined); + setFactorType(undefined); + setChallenge(data["challenge"]); + } + } + setLoading(false); + } + ]; + + function callback() { + if (searchParams.has("closable")) { + window.close(); + } else if (searchParams.has("redirect_uri")) { + window.open(searchParams.get("redirect_uri") ?? "/", "_self"); + } else { + navigate("/users"); + } + } + + function getFactorAvailable(factor: any) { + const blacklist: number[] = challenge?.blacklist_factors ?? []; + return blacklist.includes(factor.id); + } + + const factorTypes = [ + { icon: , label: "Password Verification", autoComplete: "password" }, + { icon: , label: "Email One Time Password", autoComplete: "one-time-code" } + ]; + + const elements = [ + ( + <> + + + + + Welcome back + + + + + + + + + + + ), + ( + <> + + + + + Verify that's you + + + + + setFactor(val)} + > + {factors?.map((item: any, idx: number) => ( + + + + {factorTypes[item.type]?.icon} + + + {factorTypes[item.type]?.label} + + + + ))} + + + + + + + ), + ( + <> + + + + + Enter the credentials + + + + + + + + + + + ) + ]; + + async function grantToken(tk: string) { + const res = await request("/api/auth/token", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + code: tk, + grant_type: "grant_token" + }) + }); + if (res.status !== 200) { + const err = await res.text(); + setError(err); + throw new Error(err); + } else { + setError(null); + } + } + + return ( + + + {error && {error}} + + + + + + + + {elements[panel]} + + + + + + + Risk {challenge?.risk_level}  + Progress {challenge?.progress}/{challenge?.requirements} + + + + + + + + + + + Haven't an account? Sign up! + + + + + + ); +} \ No newline at end of file diff --git a/pkg/view/src/pages/auth/sign-up.tsx b/pkg/view/src/pages/auth/sign-up.tsx new file mode 100644 index 0000000..319ebeb --- /dev/null +++ b/pkg/view/src/pages/auth/sign-up.tsx @@ -0,0 +1,200 @@ +import UserIcon from "@mui/icons-material/PersonAddAlt1"; +import HowToRegIcon from "@mui/icons-material/HowToReg"; +import { Link as RouterLink, useNavigate, useSearchParams } from "react-router-dom"; +import { + Alert, + Avatar, + Box, + Button, + Card, + CardContent, + Checkbox, + Collapse, + FormControlLabel, + Grid, + LinearProgress, + Link, + TextField, + Typography +} from "@mui/material"; +import { FormEvent, useState } from "react"; +import { request } from "@/scripts/request.ts"; +import { useWellKnown } from "@/stores/wellKnown.tsx"; + +export default function SignUpPage() { + const [done, setDone] = useState(false); + + const [error, setError] = useState(null); + const [loading, setLoading] = useState(false); + + const { wellKnown } = useWellKnown(); + + const [searchParams] = useSearchParams(); + const navigate = useNavigate(); + + async function submit(evt: FormEvent) { + evt.preventDefault(); + + const data = Object.fromEntries(new FormData(evt.target as HTMLFormElement)); + if (!data.human_verification) return; + if (!data.name || !data.nick || !data.email || !data.password) return; + + setLoading(true); + const res = await request("/api/users", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(data) + }); + if (res.status !== 200) { + setError(await res.text()); + } else { + setError(null); + setDone(true); + } + setLoading(false); + } + + function callback() { + if (searchParams.has("closable")) { + window.close(); + } else { + navigate("/auth/sign-in"); + } + } + + const elements = [ + ( + <> + + + + + Create an account + + + + + + + + + + + + + + + + { + !wellKnown?.open_registration && + + + } + + } + label={"I'm not a robot."} + /> + + + + + + ), + ( + <> + + + + + Congratulations! + + Your account has been created and activation email has sent to your inbox! + + + + callback()} className="cursor-pointer">Go login + + + + After you login, then you can take part in the entire smartsheep community. + + + ) + ]; + + return ( + + + {error && {error}} + + + + + + + + {!done ? elements[0] : elements[1]} + + + + + + + Already have an account? Sign in! + + + + + + ); +} \ No newline at end of file diff --git a/pkg/view/src/pages/dashboard.tsx b/pkg/view/src/pages/dashboard.tsx deleted file mode 100644 index fb05010..0000000 --- a/pkg/view/src/pages/dashboard.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import { getAtk, readProfiles, useUserinfo } from "../stores/userinfo.tsx"; -import { createSignal, For, Show } from "solid-js"; -import { request } from "../scripts/request.ts"; - -export default function DashboardPage() { - const userinfo = useUserinfo(); - - const [error, setError] = createSignal(null); - - function getGreeting() { - const currentHour = new Date().getHours(); - - if (currentHour >= 0 && currentHour < 12) { - return "Good morning! Wishing you a day filled with joy and success. ☀️"; - } else if (currentHour >= 12 && currentHour < 18) { - return "Afternoon! Hope you have a productive and joyful afternoon! ☀️"; - } else { - return "Good evening! Wishing you a relaxing and pleasant evening. 🌙"; - } - } - - async function readNotification(item: any) { - const res = await request(`/api/notifications/${item.id}/read`, { - method: "PUT", - headers: { Authorization: `Bearer ${getAtk()}` } - }); - if (res.status !== 200) { - setError(await res.text()); - } else { - await readProfiles(); - setError(null); - } - } - - return ( -
-
-

{userinfo?.displayName}

-

{getGreeting()}

-
- -
- - - - - - -
- -
-
-

Notifications

-
- - - - - - - -
You're done! There are no notifications unread for you.
-
- 0}> - - - - {item => - - - - } - - -
-

{item.subject}

-

{item.content}

-
- - {item => {item.label}} - -
- -
-
-
-
-
- -
- ); -} \ No newline at end of file diff --git a/pkg/view/src/pages/landing.tsx b/pkg/view/src/pages/landing.tsx new file mode 100644 index 0000000..837bf8e --- /dev/null +++ b/pkg/view/src/pages/landing.tsx @@ -0,0 +1,22 @@ +import { Button, Container, Grid, Typography } from "@mui/material"; +import { Link as RouterLink } from "react-router-dom"; + +export default function LandingPage() { + return ( + + + + All Goatworks® Services + In a single account + + That's + Goatpass + + + + Logo + + + + ); +} \ No newline at end of file diff --git a/pkg/view/src/pages/personalise.tsx b/pkg/view/src/pages/personalise.tsx deleted file mode 100644 index 099de36..0000000 --- a/pkg/view/src/pages/personalise.tsx +++ /dev/null @@ -1,164 +0,0 @@ -import { getAtk, readProfiles, useUserinfo } from "../stores/userinfo.tsx"; -import { createSignal, Show } from "solid-js"; -import { request } from "../scripts/request.ts"; - -export default function PersonalPage() { - const userinfo = useUserinfo(); - - const [error, setError] = createSignal(null); - const [success, setSuccess] = createSignal(null); - const [loading, setLoading] = createSignal(false); - - async function updateBasis(evt: SubmitEvent) { - evt.preventDefault(); - - const data = Object.fromEntries(new FormData(evt.target as HTMLFormElement)); - - setLoading(true); - const res = await request("/api/users/me", { - method: "PUT", - headers: { - "Content-Type": "application/json", - "Authorization": `Bearer ${getAtk()}` - }, - body: JSON.stringify(data) - }); - if (res.status !== 200) { - setSuccess(null); - setError(await res.text()); - } else { - await readProfiles(); - setSuccess("Your basic information has been update."); - setError(null); - } - setLoading(false); - } - - async function updateAvatar(evt: SubmitEvent) { - evt.preventDefault(); - - setLoading(true); - const data = new FormData(evt.target as HTMLFormElement); - const res = await request("/api/avatar", { - method: "PUT", - headers: { "Authorization": `Bearer ${getAtk()}` }, - body: data - }); - if (res.status !== 200) { - setSuccess(null); - setError(await res.text()); - } else { - await readProfiles(); - setSuccess("Your avatar has been update."); - setError(null); - } - setLoading(false); - } - - return ( -
-
-

Personalize

-

Customize your account and let us provide a better service to you.

-
- -
- - - - - - - -
- -
- -
-
- - -
- - - -
- -
- -
-
-
- -
-
- - - -
-
- -
-
- ); -} \ No newline at end of file diff --git a/pkg/view/src/pages/security.tsx b/pkg/view/src/pages/security.tsx deleted file mode 100644 index 95280b8..0000000 --- a/pkg/view/src/pages/security.tsx +++ /dev/null @@ -1,235 +0,0 @@ -import { getAtk } from "../stores/userinfo.tsx"; -import { createSignal, For, Match, Show, Switch } from "solid-js"; -import { request } from "../scripts/request.ts"; - -export default function DashboardPage() { - const [challenges, setChallenges] = createSignal([]); - const [challengeCount, setChallengeCount] = createSignal(0); - const [sessions, setSessions] = createSignal([]); - const [sessionCount, setSessionCount] = createSignal(0); - const [events, setEvents] = createSignal([]); - const [eventCount, setEventCount] = createSignal(0); - - const [error, setError] = createSignal(null); - const [submitting, setSubmitting] = createSignal(false); - - const [contentTab, setContentTab] = createSignal(0); - - async function readChallenges() { - const res = await request("/api/users/me/challenges?take=10", { - headers: { Authorization: `Bearer ${getAtk()}` } - }); - if (res.status !== 200) { - setError(await res.text()); - } else { - const data = await res.json(); - setChallenges(data["data"]); - setChallengeCount(data["count"]); - } - } - - async function readSessions() { - const res = await request("/api/users/me/sessions?take=10", { - headers: { Authorization: `Bearer ${getAtk()}` } - }); - if (res.status !== 200) { - setError(await res.text()); - } else { - const data = await res.json(); - setSessions(data["data"]); - setSessionCount(data["count"]); - } - } - - async function readEvents() { - const res = await request("/api/users/me/events?take=10", { - headers: { Authorization: `Bearer ${getAtk()}` } - }); - if (res.status !== 200) { - setError(await res.text()); - } else { - const data = await res.json(); - setEvents(data["data"]); - setEventCount(data["count"]); - } - } - - async function killSession(item: any) { - setSubmitting(true); - const res = await request(`/api/users/me/sessions/${item.id}`, { - method: "DELETE", - headers: { Authorization: `Bearer ${getAtk()}` } - }); - if (res.status !== 200) { - setError(await res.text()); - } else { - await readSessions(); - setError(null); - } - setSubmitting(false); - } - - readChallenges(); - readSessions(); - readEvents(); - - return ( -
-
-

Security

-

Here is your account status of security.

-
- -
- - - -
- -
-
-
-
- -
-
Challenges
-
{challengeCount()}
-
- -
-
- -
-
Sessions
-
{sessionCount()}
-
- -
-
- -
-
Events
-
{eventCount()}
-
-
-
- -
-
- setContentTab(0)} /> - setContentTab(1)} /> - setContentTab(2)} /> -
-
- -
- - -
- - - - - - - - - - - - - {item => - - - - - - } - - -
StateIP AddressUser AgentDate
{item.id}{item.state}{item.ip_address} - - {item.user_agent.substring(0, 10) + "..."} - - {new Date(item.created_at).toLocaleString()}
-
-
- - -
- - - - - - - - - - - - - {item => - - - - - - } - - -
Third ClientAudiencesDate
{item.id}{item.client_id ? "Linked" : "Non-linked"}{item.audiences?.join(", ")}{new Date(item.created_at).toLocaleString()} - -
-
-
- - -
- - - - - - - - - - - - - - {item => - - - - - - - } - - -
TypeTargetIP AddressUser AgentDate
{item.id}{item.type}{item.target}{item.ip_address} - - {item.user_agent.substring(0, 10) + "..."} - - {new Date(item.created_at).toLocaleString()}
-
-
-
-
-
- ); -} \ No newline at end of file diff --git a/pkg/view/src/pages/users/confirm.tsx b/pkg/view/src/pages/users/confirm.tsx deleted file mode 100644 index 5d3ee15..0000000 --- a/pkg/view/src/pages/users/confirm.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { createSignal, Show } from "solid-js"; -import { useNavigate, useSearchParams } from "@solidjs/router"; -import { readProfiles } from "../../stores/userinfo.tsx"; -import { request } from "../../scripts/request.ts"; - -export default function ConfirmRegistrationPage() { - const [error, setError] = createSignal(null); - const [status, setStatus] = createSignal("Confirming your account..."); - - const [searchParams] = useSearchParams(); - - const navigate = useNavigate(); - - async function doConfirm() { - if (!searchParams["tk"]) { - setError("Bad Request: Code was not exists"); - } - - const res = await request("/api/users/me/confirm", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - code: searchParams["tk"] - }) - }); - if (res.status !== 200) { - setError(await res.text()); - } else { - setStatus("Confirmed. Redirecting to dashboard..."); - await readProfiles(); - navigate("/"); - } - } - - doConfirm(); - - return ( -
-
-
- - -
-
-
- -
- {status()} -
-
- -
}> -
- -
- -
-
- - ); -} \ No newline at end of file diff --git a/pkg/view/src/stores/userinfo.tsx b/pkg/view/src/stores/userinfo.tsx index 77f4dea..35d8f2c 100644 --- a/pkg/view/src/stores/userinfo.tsx +++ b/pkg/view/src/stores/userinfo.tsx @@ -1,7 +1,6 @@ import Cookie from "universal-cookie"; -import { createContext, useContext } from "solid-js"; -import { createStore } from "solid-js/store"; import { request } from "../scripts/request.ts"; +import { createContext, useContext, useState } from "react"; export interface Userinfo { isLoggedIn: boolean, @@ -10,8 +9,6 @@ export interface Userinfo { meta: any } -const UserinfoContext = createContext(); - const defaultUserinfo: Userinfo = { isLoggedIn: false, displayName: "Citizen", @@ -19,53 +16,55 @@ const defaultUserinfo: Userinfo = { meta: null }; -const [userinfo, setUserinfo] = createStore(structuredClone(defaultUserinfo)); - -export function getAtk(): string { - return new Cookie().get("identity_auth_key"); -} - -function checkLoggedIn(): boolean { - return new Cookie().get("identity_auth_key"); -} - -export async function readProfiles() { - if (!checkLoggedIn()) return; - - const res = await request("/api/users/me", { - credentials: "include" - }); - - if (res.status !== 200) { - clearUserinfo(); - window.location.reload(); - } - - const data = await res.json(); - - setUserinfo({ - isLoggedIn: true, - displayName: data["nick"], - profiles: null, - meta: data - }); -} - -export function clearUserinfo() { - const cookies = document.cookie.split(";"); - for (let i = 0; i < cookies.length; i++) { - const cookie = cookies[i]; - const eqPos = cookie.indexOf("="); - const name = eqPos > -1 ? cookie.substring(0, eqPos) : cookie; - document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT"; - } - - setUserinfo(defaultUserinfo); -} +const UserinfoContext = createContext({ userinfo: defaultUserinfo }); export function UserinfoProvider(props: any) { + const [userinfo, setUserinfo] = useState(structuredClone(defaultUserinfo)); + + function getAtk(): string { + return new Cookie().get("identity_auth_key"); + } + + function checkLoggedIn(): boolean { + return new Cookie().get("identity_auth_key"); + } + + async function readProfiles() { + if (!checkLoggedIn()) return; + + const res = await request("/api/users/me", { + credentials: "include" + }); + + if (res.status !== 200) { + clearUserinfo(); + window.location.reload(); + } + + const data = await res.json(); + + setUserinfo({ + isLoggedIn: true, + displayName: data["nick"], + profiles: null, + meta: data + }); + } + + function clearUserinfo() { + const cookies = document.cookie.split(";"); + for (let i = 0; i < cookies.length; i++) { + const cookie = cookies[i]; + const eqPos = cookie.indexOf("="); + const name = eqPos > -1 ? cookie.substring(0, eqPos) : cookie; + document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT"; + } + + setUserinfo(defaultUserinfo); + } + return ( - + {props.children} ); diff --git a/pkg/view/src/stores/wellKnown.tsx b/pkg/view/src/stores/wellKnown.tsx index 42bebf3..f3f9d2d 100644 --- a/pkg/view/src/stores/wellKnown.tsx +++ b/pkg/view/src/stores/wellKnown.tsx @@ -1,19 +1,18 @@ -import { createContext, useContext } from "solid-js"; -import { createStore } from "solid-js/store"; +import { createContext, useContext, useState } from "react"; import { request } from "../scripts/request.ts"; -const WellKnownContext = createContext(); - -const [wellKnown, setWellKnown] = createStore(null); - -export async function readWellKnown() { - const res = await request("/.well-known") - setWellKnown(await res.json()) -} +const WellKnownContext = createContext(null); export function WellKnownProvider(props: any) { + const [wellKnown, setWellKnown] = useState(null); + + async function readWellKnown() { + const res = await request("/.well-known"); + setWellKnown(await res.json()); + } + return ( - + {props.children} ); diff --git a/pkg/view/src/theme.ts b/pkg/view/src/theme.ts new file mode 100644 index 0000000..0c38afc --- /dev/null +++ b/pkg/view/src/theme.ts @@ -0,0 +1,20 @@ +import { createTheme } from "@mui/material/styles"; + +export const theme = createTheme({ + palette: { + primary: { + main: "#49509e", + }, + secondary: { + main: "#d43630", + }, + }, + typography: { + h1: { fontSize: "2.5rem" }, + h2: { fontSize: "2rem" }, + h3: { fontSize: "1.75rem" }, + h4: { fontSize: "1.5rem" }, + h5: { fontSize: "1.25rem" }, + h6: { fontSize: "1.15rem" }, + }, +}); diff --git a/pkg/view/tailwind.config.js b/pkg/view/tailwind.config.js deleted file mode 100644 index ef0f6ee..0000000 --- a/pkg/view/tailwind.config.js +++ /dev/null @@ -1,44 +0,0 @@ -/** @type {import("tailwindcss").Config} */ -export default { - content: [ - "./src/**/*.{js,jsx,ts,tsx}" - ], - daisyui: { - themes: [ - { - light: { - ...require("daisyui/src/theming/themes")["light"], - primary: "#4750a3", - secondary: "#93c5fd", - accent: "#0f766e", - info: "#67e8f9", - success: "#15803d", - warning: "#f97316", - error: "#dc2626", - "--rounded-box": "0", - "--rounded-btn": "0", - "--rounded-badge": "0", - "--tab-radius": "0" - } - }, - { - dark: { - ...require("daisyui/src/theming/themes")["dark"], - primary: "#4750a3", - secondary: "#93c5fd", - accent: "#0f766e", - info: "#67e8f9", - success: "#15803d", - warning: "#f97316", - error: "#dc2626", - "--rounded-box": "0", - "--rounded-btn": "0", - "--rounded-badge": "0", - "--tab-radius": "0" - } - } - ] - }, - plugins: [require("daisyui")] -}; - diff --git a/pkg/view/tsconfig.json b/pkg/view/tsconfig.json index b5ebb60..67398cd 100644 --- a/pkg/view/tsconfig.json +++ b/pkg/view/tsconfig.json @@ -2,8 +2,8 @@ "compilerOptions": { "target": "ES2020", "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], "module": "ESNext", - "lib": ["ES2020", "ES2015", "DOM", "DOM.Iterable"], "skipLibCheck": true, /* Bundler mode */ @@ -12,14 +12,18 @@ "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, - "jsx": "preserve", - "jsxImportSource": "solid-js", + "jsx": "react-jsx", /* Linting */ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true + "noFallthroughCasesInSwitch": true, + + "baseUrl": "./src", + "paths": { + "@/*": ["./*"] + } }, "include": ["src"], "references": [{ "path": "./tsconfig.node.json" }] diff --git a/pkg/view/tsconfig.node.json b/pkg/view/tsconfig.node.json index 42872c5..97ede7e 100644 --- a/pkg/view/tsconfig.node.json +++ b/pkg/view/tsconfig.node.json @@ -4,7 +4,8 @@ "skipLibCheck": true, "module": "ESNext", "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true + "allowSyntheticDefaultImports": true, + "strict": true }, "include": ["vite.config.ts"] } diff --git a/pkg/view/uno.config.ts b/pkg/view/uno.config.ts new file mode 100644 index 0000000..b6816ad --- /dev/null +++ b/pkg/view/uno.config.ts @@ -0,0 +1,5 @@ +import { defineConfig, presetUno } from "unocss"; + +export default defineConfig({ + presets: [presetUno({ preflight: false })] +}); \ No newline at end of file diff --git a/pkg/view/vite.config.ts b/pkg/view/vite.config.ts index e8abad0..b707ccd 100644 --- a/pkg/view/vite.config.ts +++ b/pkg/view/vite.config.ts @@ -1,13 +1,20 @@ -import { defineConfig } from "vite"; -import solid from "vite-plugin-solid"; -import devtools from "solid-devtools/vite"; +import { defineConfig } from 'vite' +import path from "path"; +import react from '@vitejs/plugin-react-swc' +import unocss from "unocss/vite" +// https://vitejs.dev/config/ export default defineConfig({ - plugins: [devtools({ autoname: true }), solid()], + plugins: [react(), unocss()], + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, server: { proxy: { - "/api": "http://localhost:8444", - "/.well-known": "http://localhost:8444" + "/.well-known": "http://localhost:8444", + "/api": "http://localhost:8444" } } -}); +}) diff --git a/pkg/view/yarn.lock b/pkg/view/yarn.lock deleted file mode 100644 index ba9d4c1..0000000 --- a/pkg/view/yarn.lock +++ /dev/null @@ -1,1689 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@alloc/quick-lru@^5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" - integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== - -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== - dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" - -"@babel/compat-data@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" - integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== - -"@babel/core@^7.23.3": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" - integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.9" - "@babel/parser" "^7.23.9" - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== - dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-plugin-utils@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helpers@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" - integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== - dependencies: - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - -"@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" - integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== - -"@babel/plugin-syntax-jsx@^7.18.6": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" - integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-typescript@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" - integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/template@^7.22.15", "@babel/template@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" - integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - -"@babel/traverse@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" - integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.23.6", "@babel/types@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" - integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@esbuild/aix-ppc64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" - integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== - -"@esbuild/android-arm64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" - integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== - -"@esbuild/android-arm@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" - integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== - -"@esbuild/android-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" - integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== - -"@esbuild/darwin-arm64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" - integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== - -"@esbuild/darwin-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" - integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== - -"@esbuild/freebsd-arm64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" - integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== - -"@esbuild/freebsd-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" - integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== - -"@esbuild/linux-arm64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" - integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== - -"@esbuild/linux-arm@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" - integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== - -"@esbuild/linux-ia32@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" - integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== - -"@esbuild/linux-loong64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" - integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== - -"@esbuild/linux-mips64el@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" - integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== - -"@esbuild/linux-ppc64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" - integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== - -"@esbuild/linux-riscv64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" - integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== - -"@esbuild/linux-s390x@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" - integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== - -"@esbuild/linux-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" - integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== - -"@esbuild/netbsd-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" - integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== - -"@esbuild/openbsd-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" - integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== - -"@esbuild/sunos-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" - integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== - -"@esbuild/win32-arm64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" - integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== - -"@esbuild/win32-ia32@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" - integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== - -"@esbuild/win32-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" - integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== - -"@fortawesome/fontawesome-free@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.1.tgz#55cc8410abf1003b726324661ce5b0d1c10de258" - integrity sha512-CNy5vSwN3fsUStPRLX7fUYojyuzoEMSXPl7zSLJ8TgtRfjv24LOnOWKT2zYwaHZCJGkdyRnTmstR0P+Ah503Gw== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.22" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" - integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@nothing-but/utils@~0.12.0": - version "0.12.1" - resolved "https://registry.yarnpkg.com/@nothing-but/utils/-/utils-0.12.1.tgz#e95549e78738d328fed740e1055e696bd5ce9126" - integrity sha512-1qZU1Q5El0IjE7JT/ucvJNzdr2hL3W8Rm27xNf1p6gb3Nw8pGnZmxp6/GEW9h+I1k1cICxXNq25hBwknTQ7yhg== - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@rollup/rollup-android-arm-eabi@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz#38c3abd1955a3c21d492af6b1a1dca4bb1d894d6" - integrity sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w== - -"@rollup/rollup-android-arm64@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz#3822e929f415627609e53b11cec9a4be806de0e2" - integrity sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ== - -"@rollup/rollup-darwin-arm64@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz#6c082de71f481f57df6cfa3701ab2a7afde96f69" - integrity sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ== - -"@rollup/rollup-darwin-x64@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz#c34ca0d31f3c46a22c9afa0e944403eea0edcfd8" - integrity sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg== - -"@rollup/rollup-linux-arm-gnueabihf@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz#48e899c1e438629c072889b824a98787a7c2362d" - integrity sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA== - -"@rollup/rollup-linux-arm64-gnu@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz#788c2698a119dc229062d40da6ada8a090a73a68" - integrity sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA== - -"@rollup/rollup-linux-arm64-musl@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz#3882a4e3a564af9e55804beeb67076857b035ab7" - integrity sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ== - -"@rollup/rollup-linux-riscv64-gnu@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz#0c6ad792e1195c12bfae634425a3d2aa0fe93ab7" - integrity sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw== - -"@rollup/rollup-linux-x64-gnu@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz#9d62485ea0f18d8674033b57aa14fb758f6ec6e3" - integrity sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA== - -"@rollup/rollup-linux-x64-musl@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz#50e8167e28b33c977c1f813def2b2074d1435e05" - integrity sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw== - -"@rollup/rollup-win32-arm64-msvc@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz#68d233272a2004429124494121a42c4aebdc5b8e" - integrity sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw== - -"@rollup/rollup-win32-ia32-msvc@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz#366ca62221d1689e3b55a03f4ae12ae9ba595d40" - integrity sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA== - -"@rollup/rollup-win32-x64-msvc@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz#9ffdf9ed133a7464f4ae187eb9e1294413fab235" - integrity sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg== - -"@solid-devtools/debugger@^0.23.3": - version "0.23.3" - resolved "https://registry.yarnpkg.com/@solid-devtools/debugger/-/debugger-0.23.3.tgz#f56fa5952460db45a146673eda764b349474381d" - integrity sha512-VrgswTjb2FyHxQJp5y5u7OaJ2k1R14LYlAOX/1rDZrGHWKdGYCaWHGzxI7C8AExtMP+LS+WOxy0uXMPQpoAD2g== - dependencies: - "@nothing-but/utils" "~0.12.0" - "@solid-devtools/shared" "^0.13.1" - "@solid-primitives/bounds" "^0.0.118" - "@solid-primitives/cursor" "^0.0.112" - "@solid-primitives/event-bus" "^1.0.8" - "@solid-primitives/event-listener" "^2.3.0" - "@solid-primitives/keyboard" "^1.2.5" - "@solid-primitives/platform" "^0.1.0" - "@solid-primitives/rootless" "^1.4.2" - "@solid-primitives/scheduled" "^1.4.1" - "@solid-primitives/static-store" "^0.0.5" - "@solid-primitives/utils" "^6.2.1" - -"@solid-devtools/shared@^0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@solid-devtools/shared/-/shared-0.13.1.tgz#f672ec4c96d77b6f91e9b0e598dd3ae3abf4a6fb" - integrity sha512-qaAcZF47FFr4alVQSy5ooLy7mMt4MMDxSHw52heY1oCut8yfXDrnLcYDONabfoin2WYIwsQpjYhryHgjtB0uDg== - dependencies: - "@solid-primitives/event-bus" "^1.0.8" - "@solid-primitives/event-listener" "^2.3.0" - "@solid-primitives/media" "^2.2.5" - "@solid-primitives/refs" "^1.0.5" - "@solid-primitives/rootless" "^1.4.2" - "@solid-primitives/scheduled" "^1.4.1" - "@solid-primitives/static-store" "^0.0.5" - "@solid-primitives/styles" "^0.0.111" - "@solid-primitives/utils" "^6.2.1" - -"@solid-primitives/bounds@^0.0.118": - version "0.0.118" - resolved "https://registry.yarnpkg.com/@solid-primitives/bounds/-/bounds-0.0.118.tgz#098229e9996288e0220ec4639731f8977a90c706" - integrity sha512-Qj42w8LlnhJ3r/t+t0c0vrdwIvvQMPgjEFGmLiwREaA85ojLbgL9lSBq2tKvljeLCvRVkgj10KEUf+vc99VCIg== - dependencies: - "@solid-primitives/event-listener" "^2.3.0" - "@solid-primitives/resize-observer" "^2.0.22" - "@solid-primitives/static-store" "^0.0.5" - "@solid-primitives/utils" "^6.2.1" - -"@solid-primitives/cursor@^0.0.112": - version "0.0.112" - resolved "https://registry.yarnpkg.com/@solid-primitives/cursor/-/cursor-0.0.112.tgz#00f5bf5492bbfb0c927407f07bef38c5d53bc6fd" - integrity sha512-TAtU7qD7ipSLSXHnq8FhhosAPVX+dnOCb/ITcGcLlj8e/C9YKcxDhgBHJ3R/d1xDRb5/vO/szJtEz6fnQD311Q== - dependencies: - "@solid-primitives/utils" "^6.2.1" - -"@solid-primitives/event-bus@^1.0.8": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@solid-primitives/event-bus/-/event-bus-1.0.9.tgz#8c618145dea3f7f187938c259c5221e4a2fd6fa3" - integrity sha512-BI9dla3GQzINsufEzr/CV3B/9e0D1pyk7Ig6kPI6s4geUkiVgFadY5V8R95PEeHH1NagOny7AHpw+RaRIuBpkA== - dependencies: - "@solid-primitives/utils" "^6.2.2" - -"@solid-primitives/event-listener@^2.3.0", "@solid-primitives/event-listener@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@solid-primitives/event-listener/-/event-listener-2.3.1.tgz#a303bc1f090a6c145cf8d71556ec2eac9d37cb7b" - integrity sha512-S1AfFYatOJ3g/ZUbGDoKplSGLTTfarQ3Mfd3F/fXb9SnzGtROtd+Y6yLkPVzK4AVw83r2wUSaS0GS6dg8izTEQ== - dependencies: - "@solid-primitives/utils" "^6.2.2" - -"@solid-primitives/keyboard@^1.2.5": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@solid-primitives/keyboard/-/keyboard-1.2.6.tgz#b23692239253478c406d6a7c61d0ff84a52a73d7" - integrity sha512-ZbXkzAwFs+6hyaZ2hT9uQ38iPZzGTjV6kWvVvJ3BDfKASg0dDDuhEZRKmpkmpLfnqOabV58BUkASJWMAA4dZCg== - dependencies: - "@solid-primitives/event-listener" "^2.3.1" - "@solid-primitives/rootless" "^1.4.3" - "@solid-primitives/utils" "^6.2.2" - -"@solid-primitives/media@^2.2.5": - version "2.2.6" - resolved "https://registry.yarnpkg.com/@solid-primitives/media/-/media-2.2.6.tgz#a36b39242518a4bdfcc69f44aee10cd118cbbc0a" - integrity sha512-VopOSqoUZgmSFY4SNnwBzHYaoGG+7gQYcwX+RJ/qQtuZJgzOiC+PejZEwNJh+aBZ383HPwrypyd3zrYVm7EnpQ== - dependencies: - "@solid-primitives/event-listener" "^2.3.1" - "@solid-primitives/rootless" "^1.4.3" - "@solid-primitives/static-store" "^0.0.6" - "@solid-primitives/utils" "^6.2.2" - -"@solid-primitives/platform@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@solid-primitives/platform/-/platform-0.1.1.tgz#a90a84b2325d1b42b9d87b4ce5be60abbbfbd6c5" - integrity sha512-Ln7dzHFjNDpjmhnKiMAUWBjObRZ01FQtj4ABkSmE51VjLI0i9JW54lbZhJImYjpCyoBjtxBEGWsCgYi9JyRXrA== - -"@solid-primitives/refs@^1.0.5": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@solid-primitives/refs/-/refs-1.0.6.tgz#636b4a792243e00e3899ed948be00857d1b16666" - integrity sha512-ruh4YdVMxThEVnvqbpeLXKojW442vpFU8q7dSKtElGOTa31aKOAkRb9BTbdaTwVjN4BEq79fiiYIXozJNl4dSw== - dependencies: - "@solid-primitives/utils" "^6.2.2" - -"@solid-primitives/resize-observer@^2.0.22": - version "2.0.23" - resolved "https://registry.yarnpkg.com/@solid-primitives/resize-observer/-/resize-observer-2.0.23.tgz#5ba0cdc415ea03e86fb31ffafade68d33a0536c3" - integrity sha512-SgKRzRfy1oFbPSapmtF5H9VQcN66foQaQK3QTyzh4cihIG2k/UiVNjbC+el1nEDnSeAP7zTO4Xsf2UW8dc+aBw== - dependencies: - "@solid-primitives/event-listener" "^2.3.1" - "@solid-primitives/rootless" "^1.4.3" - "@solid-primitives/static-store" "^0.0.6" - "@solid-primitives/utils" "^6.2.2" - -"@solid-primitives/rootless@^1.4.2", "@solid-primitives/rootless@^1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@solid-primitives/rootless/-/rootless-1.4.3.tgz#9ac2fb5a96135a760031376428a0d195a1f97919" - integrity sha512-IPsfUhKsqQOxLtRMQWK2EZAYbL9RKJMLBelLwpaXl9+oa1tl5aNvA6GHgrNrK+85oUhiYh7/OuogO18AuHepqQ== - dependencies: - "@solid-primitives/utils" "^6.2.2" - -"@solid-primitives/scheduled@^1.4.1": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@solid-primitives/scheduled/-/scheduled-1.4.2.tgz#9ec2bec6d0961297a22da0b317e8623520ece6f9" - integrity sha512-duKaugDQtPk0v6MnkBuEalWk66/vA2G7zzoimQEvmUdh2+K2o8t908HIfI2NdBfwakQMQBV4epE3TFeN2Vsveg== - -"@solid-primitives/static-store@^0.0.5": - version "0.0.5" - resolved "https://registry.yarnpkg.com/@solid-primitives/static-store/-/static-store-0.0.5.tgz#ed3e5be8e72121f92fac54e7cfd4ed81aa2e29cd" - integrity sha512-ssQ+s/wrlFAEE4Zw8GV499yBfvWx7SMm+ZVc11wvao4T5xg9VfXCL9Oa+x4h+vPMvSV/Knv5LrsLiUa+wlJUXQ== - dependencies: - "@solid-primitives/utils" "^6.2.1" - -"@solid-primitives/static-store@^0.0.6": - version "0.0.6" - resolved "https://registry.yarnpkg.com/@solid-primitives/static-store/-/static-store-0.0.6.tgz#54249f5db9befef4818b22f8782cfcd8bb95088f" - integrity sha512-PtvkbbucbjT+9p95pksOciG9gOnCtJz4IUyAKX1Ld7YwI+QgtPTo0Wuxs8gNbNtLtoDv5PNv5t4YRzUyl0fwdg== - dependencies: - "@solid-primitives/utils" "^6.2.2" - -"@solid-primitives/styles@^0.0.111": - version "0.0.111" - resolved "https://registry.yarnpkg.com/@solid-primitives/styles/-/styles-0.0.111.tgz#b11372dc07f64b87042c20c0be742e2c02ca2869" - integrity sha512-1mBxOGAPXmfD5oYCvqjKBDN7SuNjz2qz7RdH7KtsuNLQh6lpuSKadtHnLvru0Y8Vz1InqTJisBIy/6P5kyDmPw== - dependencies: - "@solid-primitives/rootless" "^1.4.2" - "@solid-primitives/utils" "^6.2.1" - -"@solid-primitives/utils@^6.2.1", "@solid-primitives/utils@^6.2.2": - version "6.2.2" - resolved "https://registry.yarnpkg.com/@solid-primitives/utils/-/utils-6.2.2.tgz#01c28bab7b2842b46bd5559716497decc51ad3cd" - integrity sha512-11ypVbp987XxETeRqY5Y3OmmTpm8/jZqJXRvo6AyqBthzkvvjEdReuUMU2yVb+pwWGxfZpWHZ6EUCcGXUMhfwg== - -"@solidjs/router@^0.10.10": - version "0.10.10" - resolved "https://registry.yarnpkg.com/@solidjs/router/-/router-0.10.10.tgz#cd236ef438e9aa50864e7361db710af26b152ad5" - integrity sha512-nGl7gMgsojuaupI5MAK2cFtkndmWWSAPhill/8La3IjujY3vMBamcQFymBsA2ejzxEYJjkOlEQHYgp2jNFkwuQ== - -"@types/babel__core@^7.20.4": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" - integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== - dependencies: - "@babel/types" "^7.20.7" - -"@types/cookie@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.6.0.tgz#eac397f28bf1d6ae0ae081363eca2f425bedf0d5" - integrity sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA== - -"@types/estree@1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -arg@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" - integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== - -autoprefixer@^10.4.17: - version "10.4.17" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.17.tgz#35cd5695cbbe82f536a50fa025d561b01fdec8be" - integrity sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg== - dependencies: - browserslist "^4.22.2" - caniuse-lite "^1.0.30001578" - fraction.js "^4.3.7" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -babel-plugin-jsx-dom-expressions@^0.37.17: - version "0.37.17" - resolved "https://registry.yarnpkg.com/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.37.17.tgz#3bf0a756e2701e0ea830a95b4f8d7e5b617aabaf" - integrity sha512-1bv8rOTzs6TR3DVyVZ7ElxyPEhnS556FMWRIsB3gBPfkn/cSKaLvXLGk+X1lvI+SzcUo4G+UcmJrn3vr1ig8mQ== - dependencies: - "@babel/helper-module-imports" "7.18.6" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.20.7" - html-entities "2.3.3" - validate-html-nesting "^1.2.1" - -babel-preset-solid@^1.8.4: - version "1.8.15" - resolved "https://registry.yarnpkg.com/babel-preset-solid/-/babel-preset-solid-1.8.15.tgz#59a80e7048a6ab7142768de6f7f1f887cfc5fdcc" - integrity sha512-P2yOQbB7Hn/m4YvpXV6ExHIMcgNWXWXcvY4kJzG3yqAB3hKS58OZRsvJ7RObsZWqXRvZTITBIwnpK0BMGu+ZIQ== - dependencies: - babel-plugin-jsx-dom-expressions "^0.37.17" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.22.2: - version "4.23.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" - integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== - dependencies: - caniuse-lite "^1.0.30001587" - electron-to-chromium "^1.4.668" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -camelcase-css@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - -caniuse-lite@^1.0.30001578, caniuse-lite@^1.0.30001587: - version "1.0.30001588" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz#07f16b65a7f95dba82377096923947fb25bce6e3" - integrity sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ== - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chokidar@^3.5.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -commander@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== - -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-selector-tokenizer@^0.8: - version "0.8.0" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz#88267ef6238e64f2215ea2764b3e2cf498b845dd" - integrity sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg== - dependencies: - cssesc "^3.0.0" - fastparse "^1.1.2" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -csstype@^3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - -culori@^3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/culori/-/culori-3.3.0.tgz#e33530adbd124d53bd6550394397e695eaaed739" - integrity sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ== - -daisyui@^4.6.0: - version "4.7.2" - resolved "https://registry.yarnpkg.com/daisyui/-/daisyui-4.7.2.tgz#d2359d9eb1cac2082302ca55b6b35eca437a011f" - integrity sha512-9UCss12Zmyk/22u+JbkVrHHxOzFOyY17HuqP5LeswI4hclbj6qbjJTovdj2zRy8cCH6/n6Wh0lTLjriGnyGh0g== - dependencies: - css-selector-tokenizer "^0.8" - culori "^3" - picocolors "^1" - postcss-js "^4" - -debug@^4.1.0, debug@^4.3.1: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -didyoumean@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" - integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== - -dlv@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -electron-to-chromium@^1.4.668: - version "1.4.673" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.673.tgz#1f077d9a095761804aec7ec6346c3f4b69b56534" - integrity sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -esbuild@^0.19.3: - version "0.19.12" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" - integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== - optionalDependencies: - "@esbuild/aix-ppc64" "0.19.12" - "@esbuild/android-arm" "0.19.12" - "@esbuild/android-arm64" "0.19.12" - "@esbuild/android-x64" "0.19.12" - "@esbuild/darwin-arm64" "0.19.12" - "@esbuild/darwin-x64" "0.19.12" - "@esbuild/freebsd-arm64" "0.19.12" - "@esbuild/freebsd-x64" "0.19.12" - "@esbuild/linux-arm" "0.19.12" - "@esbuild/linux-arm64" "0.19.12" - "@esbuild/linux-ia32" "0.19.12" - "@esbuild/linux-loong64" "0.19.12" - "@esbuild/linux-mips64el" "0.19.12" - "@esbuild/linux-ppc64" "0.19.12" - "@esbuild/linux-riscv64" "0.19.12" - "@esbuild/linux-s390x" "0.19.12" - "@esbuild/linux-x64" "0.19.12" - "@esbuild/netbsd-x64" "0.19.12" - "@esbuild/openbsd-x64" "0.19.12" - "@esbuild/sunos-x64" "0.19.12" - "@esbuild/win32-arm64" "0.19.12" - "@esbuild/win32-ia32" "0.19.12" - "@esbuild/win32-x64" "0.19.12" - -escalade@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -fast-glob@^3.3.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fastparse@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== - -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -fraction.js@^4.3.7: - version "4.3.7" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" - integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== - -fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^10.3.10: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -hasown@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" - integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== - dependencies: - function-bind "^1.1.2" - -html-entities@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" - integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.13.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-what@^4.1.8: - version "4.1.16" - resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.16.tgz#1ad860a19da8b4895ad5495da3182ce2acdd7a6f" - integrity sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -jackspeak@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jiti@^1.19.1: - version "1.21.0" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" - integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -lilconfig@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== - -lilconfig@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.0.tgz#aabf03fd46934d0566d75b4b64ce41a2cdea1167" - integrity sha512-p3cz0JV5vw/XeouBU3Ldnp+ZkBjE+n8ydJ4mcwBrOiXXPqNlrzGBqWs9X4MWF7f+iKUBu794Y8Hh8yawiJbCjw== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -"lru-cache@^9.1.1 || ^10.0.0": - version "10.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" - integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== - -merge-anything@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/merge-anything/-/merge-anything-5.1.7.tgz#94f364d2b0cf21ac76067b5120e429353b3525d7" - integrity sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ== - dependencies: - is-what "^4.1.8" - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -minimatch@^9.0.1: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== - dependencies: - lru-cache "^9.1.1 || ^10.0.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -picocolors@^1, picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -pirates@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -postcss-import@^15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" - integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== - dependencies: - postcss-value-parser "^4.0.0" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-js@^4, postcss-js@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" - integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== - dependencies: - camelcase-css "^2.0.1" - -postcss-load-config@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" - integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== - dependencies: - lilconfig "^3.0.0" - yaml "^2.3.4" - -postcss-nested@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" - integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== - dependencies: - postcss-selector-parser "^6.0.11" - -postcss-selector-parser@^6.0.11: - version "6.0.15" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" - integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.35: - version "8.4.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" - integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== - dependencies: - pify "^2.3.0" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -resolve@^1.1.7, resolve@^1.22.2: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rollup@^4.2.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.12.0.tgz#0b6d1e5f3d46bbcf244deec41a7421dc54cc45b5" - integrity sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q== - dependencies: - "@types/estree" "1.0.5" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.12.0" - "@rollup/rollup-android-arm64" "4.12.0" - "@rollup/rollup-darwin-arm64" "4.12.0" - "@rollup/rollup-darwin-x64" "4.12.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.12.0" - "@rollup/rollup-linux-arm64-gnu" "4.12.0" - "@rollup/rollup-linux-arm64-musl" "4.12.0" - "@rollup/rollup-linux-riscv64-gnu" "4.12.0" - "@rollup/rollup-linux-x64-gnu" "4.12.0" - "@rollup/rollup-linux-x64-musl" "4.12.0" - "@rollup/rollup-win32-arm64-msvc" "4.12.0" - "@rollup/rollup-win32-ia32-msvc" "4.12.0" - "@rollup/rollup-win32-x64-msvc" "4.12.0" - fsevents "~2.3.2" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -seroval-plugins@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/seroval-plugins/-/seroval-plugins-1.0.4.tgz#917d2cd103525f0238433a49479def0ce65a56e4" - integrity sha512-DQ2IK6oQVvy8k+c2V5x5YCtUa/GGGsUwUBNN9UqohrZ0rWdUapBFpNMYP1bCyRHoxOJjdKGl+dieacFIpU/i1A== - -seroval@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/seroval/-/seroval-1.0.4.tgz#0400d24a48b1f6f44b8a3d55af0476a1c5e8643f" - integrity sha512-qQs/N+KfJu83rmszFQaTxcoJoPn6KNUruX4KmnmyD0oZkUoiNvJ1rpdYKDf4YHM05k+HOgCxa3yvf15QbVijGg== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -solid-devtools@^0.29.3: - version "0.29.3" - resolved "https://registry.yarnpkg.com/solid-devtools/-/solid-devtools-0.29.3.tgz#62c563ab5c340d02168b63017c204f5632aad537" - integrity sha512-9j3VxVbEoC54ML22gAMytR8ZS1nk9xKatsWziKSkI4c/Bcyh4sxQBGESHuXSLs9xaxpyGVTmFl3hknoxEpKzlA== - dependencies: - "@babel/core" "^7.23.3" - "@babel/plugin-syntax-typescript" "^7.23.3" - "@babel/types" "^7.23.3" - "@solid-devtools/debugger" "^0.23.3" - "@solid-devtools/shared" "^0.13.1" - -solid-js@^1.8.7: - version "1.8.15" - resolved "https://registry.yarnpkg.com/solid-js/-/solid-js-1.8.15.tgz#af4eef7203203efefb605613f3c244b5bcdb63bc" - integrity sha512-d0QP/efr3UVcwGgWVPveQQ0IHOH6iU7yUhc2piy8arNG8wxKmvUy1kFxyF8owpmfCWGB87usDKMaVnsNYZm+Vw== - dependencies: - csstype "^3.1.0" - seroval "^1.0.3" - seroval-plugins "^1.0.3" - -solid-refresh@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/solid-refresh/-/solid-refresh-0.6.3.tgz#d23ef80f04e177619c9234a809c573cb16360627" - integrity sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA== - dependencies: - "@babel/generator" "^7.23.6" - "@babel/helper-module-imports" "^7.22.15" - "@babel/types" "^7.23.6" - -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: - name string-width-cjs - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - name strip-ansi-cjs - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -sucrase@^3.32.0: - version "3.35.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" - integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== - dependencies: - "@jridgewell/gen-mapping" "^0.3.2" - commander "^4.0.0" - glob "^10.3.10" - lines-and-columns "^1.1.6" - mz "^2.7.0" - pirates "^4.0.1" - ts-interface-checker "^0.1.9" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -tailwindcss@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.1.tgz#f512ca5d1dd4c9503c7d3d28a968f1ad8f5c839d" - integrity sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA== - dependencies: - "@alloc/quick-lru" "^5.2.0" - arg "^5.0.2" - chokidar "^3.5.3" - didyoumean "^1.2.2" - dlv "^1.1.3" - fast-glob "^3.3.0" - glob-parent "^6.0.2" - is-glob "^4.0.3" - jiti "^1.19.1" - lilconfig "^2.1.0" - micromatch "^4.0.5" - normalize-path "^3.0.0" - object-hash "^3.0.0" - picocolors "^1.0.0" - postcss "^8.4.23" - postcss-import "^15.1.0" - postcss-js "^4.0.1" - postcss-load-config "^4.0.1" - postcss-nested "^6.0.1" - postcss-selector-parser "^6.0.11" - resolve "^1.22.2" - sucrase "^3.32.0" - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - -typescript@^5.2.2: - version "5.3.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" - integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== - -universal-cookie@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/universal-cookie/-/universal-cookie-7.0.2.tgz#490221c790bc13694347340a758ac65adbaa30b8" - integrity sha512-EC9PA+1nojhJtVnKW2Z7WYah01jgYJApqhX+Y8XU97TnFd7KaoxWTHiTZFtfpfV50jEF1L8V5p64ZxIx3Q67dg== - dependencies: - "@types/cookie" "^0.6.0" - cookie "^0.6.0" - -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -util-deprecate@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -validate-html-nesting@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/validate-html-nesting/-/validate-html-nesting-1.2.2.tgz#2d74de14b598a0de671fad01bd71deabb93b8aca" - integrity sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg== - -vite-plugin-solid@^2.8.0: - version "2.10.1" - resolved "https://registry.yarnpkg.com/vite-plugin-solid/-/vite-plugin-solid-2.10.1.tgz#f09a353c6b9414c62b258422ddeb73f9d320dd92" - integrity sha512-kfVdNLWaJqaJVL52U6iCCKNW/nXE7bS1VVGOWPGllOkJfcNILymVSY0LCBLSnyy0iYnRtrXpiHm14rMuzeC7CA== - dependencies: - "@babel/core" "^7.23.3" - "@types/babel__core" "^7.20.4" - babel-preset-solid "^1.8.4" - merge-anything "^5.1.7" - solid-refresh "^0.6.3" - vitefu "^0.2.5" - -vite@^5.0.8: - version "5.1.3" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.1.3.tgz#dd072653a80225702265550a4700561740dfde55" - integrity sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew== - dependencies: - esbuild "^0.19.3" - postcss "^8.4.35" - rollup "^4.2.0" - optionalDependencies: - fsevents "~2.3.3" - -vitefu@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/vitefu/-/vitefu-0.2.5.tgz#c1b93c377fbdd3e5ddd69840ea3aa70b40d90969" - integrity sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q== - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yaml@^2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" - integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==