chore: add prettier-plugin-tailwindcss, upgrade husky and lint-staged (#329)

This commit is contained in:
Kaiyi
2023-02-28 12:18:43 +08:00
committed by GitHub
parent ef9f01dbab
commit 70377d0f54
33 changed files with 342 additions and 403 deletions

3
.github/stale.yml vendored
View File

@@ -7,7 +7,6 @@ exemptLabels:
- pinned - pinned
- security - security
- Category: Announcement - Category: Announcement
-
# Label to use when marking an issue as stale # Label to use when marking an issue as stale
staleLabel: stale-issue staleLabel: stale-issue
# Comment to post when marking an issue as stale. Set to `false` to disable # Comment to post when marking an issue as stale. Set to `false` to disable
@@ -16,4 +15,4 @@ markComment: >
recent activity. It will be closed if no further activity occurs. Thank you recent activity. It will be closed if no further activity occurs. Thank you
for your contributions. for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable # Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false closeComment: false

6
.husky/pre-commit Executable file
View File

@@ -0,0 +1,6 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
yarn run lint-staged
yarn run eslint . --fix
yarn run prettier --write .

View File

@@ -11,5 +11,6 @@
"files": ".prettierrc", "files": ".prettierrc",
"options": { "parser": "json" } "options": { "parser": "json" }
} }
] ],
"plugins": ["prettier-plugin-tailwindcss"]
} }

View File

@@ -1,12 +1,11 @@
version: "3" version: '3'
services: services:
qwertylearner: qwertylearner:
image: "node:16" image: 'node:16'
user: "root" user: 'root'
working_dir: "/app/qwerty-learner" working_dir: '/app/qwerty-learner'
ports: ports: [8990:3000]
[8990:3000]
volumes: volumes:
- $PWD/:/app/qwerty-learner - $PWD/:/app/qwerty-learner
command: command:

View File

@@ -1,30 +1,35 @@
## 如何导入自己的词单 ## 如何导入自己的词单
> 这是一种方法 有更方便的可以继续分享 > 这是一种方法 有更方便的可以继续分享
### 制作 csv ### 制作 csv
> 工具: 欧路词典、excel、Numbers表格 > 工具: 欧路词典、excel、Numbers 表格
#### STEP1 构建自己生词本 #### STEP1 构建自己生词本
1. 在欧路词典中 添加一个生词本,并勾选默认添加到此生词本 1. 在欧路词典中 添加一个生词本,并勾选默认添加到此生词本
2. 正常看单词,不会的点击收藏 2. 正常看单词,不会的点击收藏
> 此收藏会自动添加到设置默认添加的生词本中,请确保默认添加生词本的正确性。
3. 登陆`my.eudic.net` --> 我的生词本 --> 生词本工具 --> 打印当前列表 --> 复制到excel中 > 此收藏会自动添加到设置默认添加的生词本中,请确保默认添加生词本的正确性。
3. 登陆`my.eudic.net` --> 我的生词本 --> 生词本工具 --> 打印当前列表 --> 复制到 excel 中
4. excel 中的格式
4. excel中的格式
``` ```
name | trans name | trans
单词 | [翻译] 单词 | [翻译]
``` ```
> 翻译一览可以在新的列C使用 `="["&B2&"]"`
> 翻译一览可以在新的列 C 使用 `="["&B2&"]"`
5. 导出为`csv`格式 5. 导出为`csv`格式
### STEP2 格式处理 ### STEP2 格式处理
使用`apple``number表格` 删除B列,保留`[翻译]`这一列,同时务必确保只有`name``trans`这两列 使用`apple``number表格` 删除 B 列,保留`[翻译]`这一列,同时务必确保只有`name``trans`这两列
保存导出为`csv`格式 保存导出为`csv`格式
### STEP3 csv to json ### STEP3 csv to json
@@ -39,6 +44,7 @@ name | trans
保存 保存
### STEP5 导入项目文件 ### STEP5 导入项目文件
将该`json`文件导入到`/public/dicts` 将该`json`文件导入到`/public/dicts`
同时修改`/resources/dictionary.ts` 同时修改`/resources/dictionary.ts`
修改格式为: 修改格式为:
@@ -46,18 +52,22 @@ name | trans
```json ```json
{ id: 'test', name: 'test', description: 'test', category: '英语学习', url: './dicts/test.json', length: 0 }, { id: 'test', name: 'test', description: 'test', category: '英语学习', url: './dicts/test.json', length: 0 },
``` ```
#### 注意 #### 注意
`length`该字段可以使用`node ./scripts/update-dict-size.js`来进行统计 `length`该字段可以使用`node ./scripts/update-dict-size.js`来进行统计
## 项目参数 ## 项目参数
默认端口`3000` 默认端口`3000`
`Local:http://localhost:3000` `Local:http://localhost:3000`
## 疑难杂症 ## 疑难杂症
### yarn start失败 ### yarn start 失败
> 报错ERR_PACKAGE_PATH_NOT_EXPORTED > 报错ERR_PACKAGE_PATH_NOT_EXPORTED
尝试删除 `node_modules` 重新`yarn`安装依赖,然后再 `yarn start` 尝试删除 `node_modules` 重新`yarn`安装依赖,然后再 `yarn start`
如果还是失败,请确保`node`版本一致,自行修改当前版本 如果还是失败,请确保`node`版本一致,自行修改当前版本

View File

@@ -12,31 +12,14 @@
"@fortawesome/react-fontawesome": "^0.1.14", "@fortawesome/react-fontawesome": "^0.1.14",
"@headlessui/react": "^0.2.0", "@headlessui/react": "^0.2.0",
"@tailwindcss/postcss7-compat": "^2.0.2", "@tailwindcss/postcss7-compat": "^2.0.2",
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"@types/howler": "^2.2.3",
"@types/jest": "^26.0.15",
"@types/lodash": "^4.14.168",
"@types/mixpanel-browser": "^2.38.1",
"@types/node": "16",
"@types/react": "^16.9.53",
"@types/react-dom": "^16.9.8",
"autoprefixer": "^10.4.13", "autoprefixer": "^10.4.13",
"classnames": "^2.3.2", "classnames": "^2.3.2",
"dayjs": "^1.11.7", "dayjs": "^1.11.7",
"eslint": "^7.18.0", "eslint": "^7.18.0",
"eslint-config-prettier": "^7.2.0",
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-react": "^7.32.2",
"eslint-plugin-react-hooks": "^4.6.0",
"howler": "^2.2.3", "howler": "^2.2.3",
"husky": "^4.3.8",
"lint-staged": "^10.5.3",
"lodash": "^4.17.20", "lodash": "^4.17.20",
"mixpanel-browser": "^2.45.0", "mixpanel-browser": "^2.45.0",
"postcss": "^8.4.21", "postcss": "^8.4.21",
"prettier": "^2.2.1",
"react": "^17.0.1", "react": "^17.0.1",
"react-app-polyfill": "^2.0.0", "react-app-polyfill": "^2.0.0",
"react-dom": "^17.0.1", "react-dom": "^17.0.1",
@@ -56,7 +39,9 @@
"build": "cross-env CI=false vite build --base=./", "build": "cross-env CI=false vite build --base=./",
"test": "echo \"No tests\"", "test": "echo \"No tests\"",
"lint": "eslint .", "lint": "eslint .",
"analyze": "source-map-explorer 'build/static/js/*.js'" "analyze": "source-map-explorer 'build/static/js/*.js'",
"prettier": "prettier --write .",
"prepare": "husky install"
}, },
"eslintConfig": { "eslintConfig": {
"plugins": [ "plugins": [
@@ -78,11 +63,6 @@
"prettier/prettier": "error" "prettier/prettier": "error"
} }
}, },
"husky": {
"hooks": {
"pre-commit": "lint-staged && eslint . --fix"
}
},
"lint-staged": { "lint-staged": {
"src/**/*.{js,jsx,ts,tsx,json,css,scss,md}": [ "src/**/*.{js,jsx,ts,tsx,json,css,scss,md}": [
"prettier --write" "prettier --write"
@@ -107,10 +87,28 @@
] ]
}, },
"devDependencies": { "devDependencies": {
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"@types/howler": "^2.2.3",
"@types/jest": "^26.0.15",
"@types/lodash": "^4.14.168",
"@types/mixpanel-browser": "^2.38.1",
"@types/node": "16",
"@types/react": "^16.9.53",
"@types/react-dom": "^16.9.8",
"@types/react-router-dom": "^5.1.7", "@types/react-router-dom": "^5.1.7",
"@vitejs/plugin-react": "^3.1.0", "@vitejs/plugin-react": "^3.1.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"eslint-config-prettier": "^7.2.0",
"eslint-config-react-app": "^7.0.1", "eslint-config-react-app": "^7.0.1",
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-react": "^7.32.2",
"eslint-plugin-react-hooks": "^4.6.0",
"husky": "^8.0.0",
"lint-staged": "^13.1.2",
"prettier": "^2.8.4",
"prettier-plugin-tailwindcss": "^0.2.3",
"tailwindcss": "^3.2.6", "tailwindcss": "^3.2.6",
"vite": "^4.1.1", "vite": "^4.1.1",
"vite-plugin-svgr": "^2.4.0" "vite-plugin-svgr": "^2.4.0"

View File

@@ -26,7 +26,7 @@ const Footer: React.FC = () => {
> >
{content === 'donate' ? ( {content === 'donate' ? (
<> <>
<h3 className="text-lg leading-6 font-medium text-gray-900 dark:text-white dark:text-opacity-70" id="modal-headline"> <h3 className="text-lg font-medium leading-6 text-gray-900 dark:text-white dark:text-opacity-70" id="modal-headline">
Buy me a coffee Buy me a coffee
</h3> </h3>
<div className="mt-2 "> <div className="mt-2 ">
@@ -37,12 +37,12 @@ const Footer: React.FC = () => {
<br /> <br />
<p className="text-sm text-gray-700 dark:text-gray-200">!</p> <p className="text-sm text-gray-700 dark:text-gray-200">!</p>
<br /> <br />
<img className="w-2/6 ml-1 " src={alipay} alt="alipay" /> <img className="ml-1 w-2/6 " src={alipay} alt="alipay" />
</div> </div>
</> </>
) : ( ) : (
<> <>
<h3 className="text-lg leading-6 font-medium text-gray-900 dark:text-white dark:text-opacity-70" id="modal-headline"> <h3 className="text-lg font-medium leading-6 text-gray-900 dark:text-white dark:text-opacity-70" id="modal-headline">
VSCode 🐟 VSCode 🐟
</h3> </h3>
<div className="mt-2 "> <div className="mt-2 ">
@@ -51,7 +51,7 @@ const Footer: React.FC = () => {
</p> </p>
<br /> <br /> <br /> <br />
<a className="underline mr-5 dark:text-gray-300" href="https://github.com/Kaiyiwing/qwerty-learner-vscode"> <a className="mr-5 underline dark:text-gray-300" href="https://github.com/Kaiyiwing/qwerty-learner-vscode">
GitHub GitHub
</a> </a>
<a className="underline dark:text-gray-300" href="https://marketplace.visualstudio.com/items?itemName=Kaiyi.qwerty-learner"> <a className="underline dark:text-gray-300" href="https://marketplace.visualstudio.com/items?itemName=Kaiyi.qwerty-learner">
@@ -63,9 +63,9 @@ const Footer: React.FC = () => {
)} )}
</InfoPanel> </InfoPanel>
)} )}
<div className="w-full text-sm text-center mt-4 pb-1 ease-in" onClick={(e) => e.currentTarget.blur()}> <div className="mt-4 w-full pb-1 text-center text-sm ease-in" onClick={(e) => e.currentTarget.blur()}>
<a href="https://github.com/Kaiyiwing/qwerty-learner" target="_blank" rel="noreferrer"> <a href="https://github.com/Kaiyiwing/qwerty-learner" target="_blank" rel="noreferrer">
<FontAwesomeIcon icon={['fab', 'github']} className="text-gray-500 dark:text-gray-400 mr-3" /> <FontAwesomeIcon icon={['fab', 'github']} className="mr-3 text-gray-500 dark:text-gray-400" />
</a> </a>
<span <span
@@ -76,7 +76,7 @@ const Footer: React.FC = () => {
e.currentTarget.blur() e.currentTarget.blur()
}} }}
> >
<FontAwesomeIcon icon={['fas', 'coffee']} className="text-gray-500 dark:text-gray-400 mr-3" /> <FontAwesomeIcon icon={['fas', 'coffee']} className="mr-3 text-gray-500 dark:text-gray-400" />
</span> </span>
<span <span
@@ -91,19 +91,19 @@ const Footer: React.FC = () => {
</span> </span>
<a href="mailto:ZHANG.Kaiyi42@gmail.com" target="_blank" rel="noreferrer" onClick={(e) => e.currentTarget.blur()}> <a href="mailto:ZHANG.Kaiyi42@gmail.com" target="_blank" rel="noreferrer" onClick={(e) => e.currentTarget.blur()}>
<FontAwesomeIcon icon={['fas', 'envelope']} className="text-gray-500 dark:text-gray-400 mr-3" /> <FontAwesomeIcon icon={['fas', 'envelope']} className="mr-3 text-gray-500 dark:text-gray-400" />
</a> </a>
<div className="group relative inline-block "> <div className="group relative inline-block ">
<a href="https://kaiyiwing.gitee.io/qwerty-learner/" className="text-gray-500 dark:text-gray-400 mr-3" title="中国大陆节点"> <a href="https://kaiyiwing.gitee.io/qwerty-learner/" className="mr-3 text-gray-500 dark:text-gray-400" title="中国大陆节点">
🇨🇳 🇨🇳
</a> </a>
<div className="invisible group-hover:visible absolute bottom-full left-1/2 w-40 -ml-20 pt-2 flex items-center justify-center"> <div className="invisible absolute bottom-full left-1/2 -ml-20 flex w-40 items-center justify-center pt-2 group-hover:visible">
<span className="py-1 px-3 text-gray-500 dark:text-gray-400 text-xs"></span> <span className="py-1 px-3 text-xs text-gray-500 dark:text-gray-400"></span>
</div> </div>
</div> </div>
<span <span
className="text-gray-500 dark:text-gray-400 cursor-pointer no-underline hover:no-underline " className="cursor-pointer text-gray-500 no-underline hover:no-underline dark:text-gray-400 "
onClick={(e) => { onClick={(e) => {
setShowContent('donate') setShowContent('donate')
setShowModal(true) setShowModal(true)
@@ -113,7 +113,7 @@ const Footer: React.FC = () => {
@ Qwerty Learner @ Qwerty Learner
</span> </span>
<a <a
className="text-gray-500 dark:text-gray-400 cursor-pointer no-underline hover:no-underline pl-2" className="cursor-pointer pl-2 text-gray-500 no-underline hover:no-underline dark:text-gray-400"
href="https://beian.miit.gov.cn" href="https://beian.miit.gov.cn"
target="_blank" target="_blank"
rel="noreferrer" rel="noreferrer"

View File

@@ -4,13 +4,13 @@ import { ReactComponent as Logo } from '@/assets/logo.svg'
const Header: React.FC = ({ children }) => { const Header: React.FC = ({ children }) => {
return ( return (
<nav className="w-full container mx-auto px-10 py-6"> <nav className="container mx-auto w-full px-10 py-6">
<div className="w-full flex items-center justify-between flex-col lg:flex-row space-y-3 lg:space-y-0"> <div className="flex w-full flex-col items-center justify-between space-y-3 lg:flex-row lg:space-y-0">
<NavLink className="flex items-center text-indigo-400 no-underline hover:no-underline font-bold text-2xl lg:text-4xl" to="/"> <NavLink className="flex items-center text-2xl font-bold text-indigo-400 no-underline hover:no-underline lg:text-4xl" to="/">
<Logo className="w-16 h-16 mr-3" /> <Logo className="mr-3 h-16 w-16" />
Qwerty Learner Qwerty Learner
</NavLink> </NavLink>
<div className="flex bg-white dark:bg-gray-800 transition-colors duration-300 justify-end content-center items-center space-x-3 card rounded-large w-auto on element p-4"> <div className="card on element flex w-auto content-center items-center justify-end space-x-3 rounded-large bg-white p-4 transition-colors duration-300 dark:bg-gray-800">
{children} {children}
</div> </div>
</div> </div>

View File

@@ -14,8 +14,8 @@ type InfoPanelProps = {
const InfoPanel: React.FC<InfoPanelProps> = ({ state, buttonOnclick, icon, color, iconColor, btnColor, children }) => { const InfoPanel: React.FC<InfoPanelProps> = ({ state, buttonOnclick, icon, color, iconColor, btnColor, children }) => {
return ( return (
<div className="fixed z-10 inset-0 overflow-y-auto"> <div className="fixed inset-0 z-10 overflow-y-auto">
<div className="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"> <div className="flex min-h-screen items-end justify-center px-4 pt-4 pb-20 text-center sm:block sm:p-0">
<Transition <Transition
show={state} show={state}
enter="ease-out duration-30" enter="ease-out duration-30"
@@ -27,7 +27,7 @@ const InfoPanel: React.FC<InfoPanelProps> = ({ state, buttonOnclick, icon, color
> >
<div className="fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity" aria-hidden="true"></div> <div className="fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity" aria-hidden="true"></div>
</Transition> </Transition>
<span className="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true"> <span className="hidden sm:inline-block sm:h-screen sm:align-middle" aria-hidden="true">
&#8203; &#8203;
</span> </span>
<Transition <Transition
@@ -41,7 +41,7 @@ const InfoPanel: React.FC<InfoPanelProps> = ({ state, buttonOnclick, icon, color
> >
{(ref) => ( {(ref) => (
<div <div
className="inline-block align-bottom bg-white dark:bg-gray-800 rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full " className="inline-block transform overflow-hidden rounded-lg bg-white text-left align-bottom shadow-xl transition-all dark:bg-gray-800 sm:my-8 sm:w-full sm:max-w-lg sm:align-middle "
ref={ref} ref={ref}
role="dialog" role="dialog"
aria-modal="true" aria-modal="true"
@@ -50,7 +50,7 @@ const InfoPanel: React.FC<InfoPanelProps> = ({ state, buttonOnclick, icon, color
<div className="px-4 pt-5 pb-4 sm:p-6 sm:pb-4"> <div className="px-4 pt-5 pb-4 sm:p-6 sm:pb-4">
<div className="sm:flex sm:items-start"> <div className="sm:flex sm:items-start">
<div <div
className={`mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-md dark:bg-opacity-70 ${color} sm:mx-0 sm:h-10 sm:w-10 `} className={`mx-auto flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-md dark:bg-opacity-70 ${color} sm:mx-0 sm:h-10 sm:w-10 `}
> >
<FontAwesomeIcon icon={icon} className={`h-5 w-5 stroke-current ${iconColor}`} /> <FontAwesomeIcon icon={icon} className={`h-5 w-5 stroke-current ${iconColor}`} />
</div> </div>
@@ -59,10 +59,10 @@ const InfoPanel: React.FC<InfoPanelProps> = ({ state, buttonOnclick, icon, color
</div> </div>
</div> </div>
<div className="bg-gray-50 dark:bg-gray-700 dark:bg-opacity-10 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse"> <div className="bg-gray-50 px-4 py-3 dark:bg-gray-700 dark:bg-opacity-10 sm:flex sm:flex-row-reverse sm:px-6">
<button <button
type="button" type="button"
className={`w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 ${btnColor} dark:bg-opacity-70 text-base font-medium text-white dark:text-opacity-80 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:ml-3 sm:w-auto sm:text-sm `} className={`inline-flex w-full justify-center rounded-md border border-transparent px-4 py-2 shadow-sm ${btnColor} text-base font-medium text-white focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:bg-opacity-70 dark:text-opacity-80 sm:ml-3 sm:w-auto sm:text-sm `}
onClick={buttonOnclick} onClick={buttonOnclick}
> >
{'关闭'} {'关闭'}

View File

@@ -2,7 +2,7 @@ import React from 'react'
import Footer from './Footer' import Footer from './Footer'
const Layout: React.FC<React.PropsWithChildren<LayoutProps>> = ({ children }) => ( const Layout: React.FC<React.PropsWithChildren<LayoutProps>> = ({ children }) => (
<div className="h-screen w-full pb-4 flex flex-col items-center"> <div className="flex h-screen w-full flex-col items-center pb-4">
{children} {children}
<Footer /> <Footer />
</div> </div>

View File

@@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const Main: React.FC = ({ children }) => { const Main: React.FC = ({ children }) => {
return <div className="container h-full mx-auto pb-20 flex flex-col flex-1 items-center justify-center">{children}</div> return <div className="container mx-auto flex h-full flex-1 flex-col items-center justify-center pb-20">{children}</div>
} }
export default Main export default Main

View File

@@ -34,23 +34,23 @@ const Modals: React.FC<ModalsProps> = ({
thirdButtonHotkey = '', thirdButtonHotkey = '',
}) => { }) => {
useHotkeys('enter', () => { useHotkeys('enter', () => {
const e: MouseEvent = (null as unknown) as MouseEvent const e: MouseEvent = null as unknown as MouseEvent
firstButtonOnclick(e) firstButtonOnclick(e)
}) })
useHotkeys('shift+enter', () => { useHotkeys('shift+enter', () => {
const e: MouseEvent = (null as unknown) as MouseEvent const e: MouseEvent = null as unknown as MouseEvent
secondButtonOnclick(e) secondButtonOnclick(e)
}) })
useHotkeys(thirdButtonHotkey, () => { useHotkeys(thirdButtonHotkey, () => {
const e: MouseEvent = (null as unknown) as MouseEvent const e: MouseEvent = null as unknown as MouseEvent
if (thirdButtonOnclick) thirdButtonOnclick(e) if (thirdButtonOnclick) thirdButtonOnclick(e)
}) })
return ( return (
<div className="fixed z-10 inset-0 overflow-y-auto"> <div className="fixed inset-0 z-10 overflow-y-auto">
<div className="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"> <div className="flex min-h-screen items-end justify-center px-4 pt-4 pb-20 text-center sm:block sm:p-0">
<Transition <Transition
show={state} show={state}
enter="ease-out duration-30" enter="ease-out duration-30"
@@ -65,7 +65,7 @@ const Modals: React.FC<ModalsProps> = ({
</div> </div>
</Transition> </Transition>
<span className="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true"> <span className="hidden sm:inline-block sm:h-screen sm:align-middle" aria-hidden="true">
&#8203; &#8203;
</span> </span>
@@ -80,7 +80,7 @@ const Modals: React.FC<ModalsProps> = ({
> >
{(ref) => ( {(ref) => (
<div <div
className="inline-block align-bottom bg-white dark:bg-gray-800 rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" className="inline-block transform overflow-hidden rounded-lg bg-white text-left align-bottom shadow-xl transition-all dark:bg-gray-800 sm:my-8 sm:w-full sm:max-w-lg sm:align-middle"
ref={ref} ref={ref}
role="dialog" role="dialog"
aria-modal="true" aria-modal="true"
@@ -88,12 +88,12 @@ const Modals: React.FC<ModalsProps> = ({
> >
<div className="px-4 pt-5 pb-4 sm:p-6 sm:pb-4"> <div className="px-4 pt-5 pb-4 sm:p-6 sm:pb-4">
<div className="sm:flex sm:items-start"> <div className="sm:flex sm:items-start">
<div className="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-indigo-100 dark:bg-indigo-900 sm:mx-0 sm:h-10 sm:w-10"> <div className="mx-auto flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-full bg-indigo-100 dark:bg-indigo-900 sm:mx-0 sm:h-10 sm:w-10">
<FontAwesomeIcon icon="book-reader" className="h-10 w-10 stroke-current text-indigo-500 dark:text-indigo-400" /> <FontAwesomeIcon icon="book-reader" className="h-10 w-10 stroke-current text-indigo-500 dark:text-indigo-400" />
</div> </div>
<div className="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> <div className="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left">
<h3 className="text-lg leading-6 font-medium text-gray-900 dark:text-white dark:text-opacity-70" id="modal-headline"> <h3 className="text-lg font-medium leading-6 text-gray-900 dark:text-white dark:text-opacity-70" id="modal-headline">
{title} {title}
</h3> </h3>
<div className="mt-2"> <div className="mt-2">
@@ -103,11 +103,11 @@ const Modals: React.FC<ModalsProps> = ({
</div> </div>
</div> </div>
<div className="bg-gray-50 dark:bg-gray-700 dark:bg-opacity-10 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse sm:space-x-3 sm:space-x-reverse"> <div className="bg-gray-50 px-4 py-3 dark:bg-gray-700 dark:bg-opacity-10 sm:flex sm:flex-row-reverse sm:space-x-3 sm:space-x-reverse sm:px-6">
<Tooltip content="快捷键 Enter"> <Tooltip content="快捷键 Enter">
<button <button
type="button" type="button"
className={`w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-indigo-600 text-base font-medium text-white dark:text-opacity-80 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:w-auto sm:text-sm ${firstButtonClassName}`} className={`inline-flex w-full justify-center rounded-md border border-transparent bg-indigo-600 px-4 py-2 text-base font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:text-opacity-80 sm:w-auto sm:text-sm ${firstButtonClassName}`}
onClick={firstButtonOnclick} onClick={firstButtonOnclick}
> >
{firstButton} {firstButton}
@@ -117,7 +117,7 @@ const Modals: React.FC<ModalsProps> = ({
<Tooltip content="快捷键 Shift + Enter"> <Tooltip content="快捷键 Shift + Enter">
<button <button
type="button" type="button"
className={`mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 dark:border-gray-500 shadow-sm px-4 py-2 bg-white dark:bg-gray-800 text-base font-medium text-gray-700 dark:text-white dark:text-opacity-60 hover:bg-gray-50 dark:hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:w-auto sm:text-sm ${ className={`mt-3 inline-flex w-full justify-center rounded-md border border-gray-300 bg-white px-4 py-2 text-base font-medium text-gray-700 shadow-sm hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:border-gray-500 dark:bg-gray-800 dark:text-white dark:text-opacity-60 dark:hover:bg-gray-700 sm:mt-0 sm:w-auto sm:text-sm ${
secondButtonClassName ?? '' secondButtonClassName ?? ''
}`} }`}
onClick={secondButtonOnclick} onClick={secondButtonOnclick}
@@ -130,7 +130,7 @@ const Modals: React.FC<ModalsProps> = ({
<Tooltip content={`快捷键 ${thirdButtonHotkey}`}> <Tooltip content={`快捷键 ${thirdButtonHotkey}`}>
<button <button
type="button" type="button"
className={`mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 dark:border-gray-500 shadow-sm px-4 py-2 bg-white dark:bg-gray-800 text-base font-medium text-gray-700 dark:text-white dark:text-opacity-60 hover:bg-gray-50 dark:hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:w-auto sm:text-sm ${ className={`mt-3 inline-flex w-full justify-center rounded-md border border-gray-300 bg-white px-4 py-2 text-base font-medium text-gray-700 shadow-sm hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:border-gray-500 dark:bg-gray-800 dark:text-white dark:text-opacity-60 dark:hover:bg-gray-700 sm:mt-0 sm:w-auto sm:text-sm ${
secondButtonClassName ?? '' secondButtonClassName ?? ''
}`} }`}
onClick={thirdButtonOnclick} onClick={thirdButtonOnclick}

View File

@@ -7,7 +7,7 @@ export type PhoneticProps = {
const Phonetic: React.FC<PhoneticProps> = ({ usphone, ukphone }) => { const Phonetic: React.FC<PhoneticProps> = ({ usphone, ukphone }) => {
return ( return (
<div className="pt-1 text-sm font-normal text-gray-600 dark:text-gray-400 transition-colors duration-300 text-center space-x-5"> <div className="space-x-5 pt-1 text-center text-sm font-normal text-gray-600 transition-colors duration-300 dark:text-gray-400">
{usphone && usphone.length > 1 && <span>{`US: [${usphone}]`}</span>} {usphone && usphone.length > 1 && <span>{`US: [${usphone}]`}</span>}
{ukphone && ukphone.length > 1 && <span>{`UK: [${ukphone}]`}</span>} {ukphone && ukphone.length > 1 && <span>{`UK: [${ukphone}]`}</span>}
</div> </div>

View File

@@ -25,9 +25,9 @@ const ConclusionBar = ({ mistakeLevel, mistakeCount }: ConclusionBarProps) => {
const { icon, className, size, text } = ICON_MAPPER[mistakeLevel] const { icon, className, size, text } = ICON_MAPPER[mistakeLevel]
return ( return (
<div className="h-10 flex flex-row items-center"> <div className="flex h-10 flex-row items-center">
<FontAwesomeIcon icon={icon as any} className={className} size={size as any} /> <FontAwesomeIcon icon={icon as any} className={className} size={size as any} />
<span className="md:text-base sm:text-sm text-sm font-medium text-gray-700 ml-2 leading-10 inline-block align-middle"> <span className="ml-2 inline-block align-middle text-sm font-medium leading-10 text-gray-700 sm:text-sm md:text-base">
{text(mistakeCount)} {text(mistakeCount)}
</span> </span>
</div> </div>

View File

@@ -35,7 +35,7 @@ export default function RemarkRing({ remark, caption, percentage = null, size =
return ( return (
<div <div
className={classNames( className={classNames(
'flex-shrink-0 relative flex flex-col items-center justify-center rounded-full border-8 border-indigo-200 dark:border-gray-700 bg-transparent', 'relative flex flex-shrink-0 flex-col items-center justify-center rounded-full border-8 border-indigo-200 bg-transparent dark:border-gray-700',
)} )}
style={{ style={{
width: `${size}rem`, width: `${size}rem`,
@@ -44,13 +44,13 @@ export default function RemarkRing({ remark, caption, percentage = null, size =
> >
{percentage !== null && ( {percentage !== null && (
<div <div
className="absolute -inset-2 rounded-full border-8 border-indigo-400 dark:border-indigo-500 bg-transparent" className="absolute -inset-2 rounded-full border-8 border-indigo-400 bg-transparent dark:border-indigo-500"
style={{ clipPath }} style={{ clipPath }}
aria-hidden aria-hidden
/> />
)} )}
<span className="text-xl text-gray-800 dark:text-gray-300 tabular-nums">{remark}</span> <span className="text-xl tabular-nums text-gray-800 dark:text-gray-300">{remark}</span>
<span className="text-sm text-gray-600 dark:text-gray-500 font-medium">{caption}</span> <span className="text-sm font-medium text-gray-600 dark:text-gray-500">{caption}</span>
</div> </div>
) )
} }

View File

@@ -84,8 +84,8 @@ const ResultScreen: React.FC<ResultScreenProps> = ({
}) })
return ( return (
<div className="fixed z-10 inset-0 overflow-y-auto"> <div className="fixed inset-0 z-10 overflow-y-auto">
<div className="absolute inset-0 bg-gray-300 dark:bg-gray-600 opacity-80"></div> <div className="absolute inset-0 bg-gray-300 opacity-80 dark:bg-gray-600"></div>
<Transition <Transition
show={true} show={true}
enter="ease-in duration-300" enter="ease-in duration-300"
@@ -95,32 +95,32 @@ const ResultScreen: React.FC<ResultScreenProps> = ({
leaveFrom="opacity-100" leaveFrom="opacity-100"
leaveTo="opacity-0" leaveTo="opacity-0"
> >
<div className="flex items-center justify-center h-screen"> <div className="flex h-screen items-center justify-center">
<div className="max-w-6xl w-[90vw] md:w-4/5 lg:w-3/5 px-10 pt-10 pb-14 card bg-white dark:bg-gray-800 rounded-3xl shadow-lg fixed flex flex-col overflow-hidden"> <div className="card fixed flex w-[90vw] max-w-6xl flex-col overflow-hidden rounded-3xl bg-white px-10 pt-10 pb-14 shadow-lg dark:bg-gray-800 md:w-4/5 lg:w-3/5">
<div className="text-center font-sans font-normal text-gray-900 text-xl md:text-2xl dark:text-gray-400"> <div className="text-center font-sans text-xl font-normal text-gray-900 dark:text-gray-400 md:text-2xl">
{wordList ? `${wordList.dictName}${wordList.chapter + 1}` : ' '} {wordList ? `${wordList.dictName}${wordList.chapter + 1}` : ' '}
</div> </div>
<div className="flex flex-row gap-2 mt-10 overflow-hidden"> <div className="mt-10 flex flex-row gap-2 overflow-hidden">
<div className="flex flex-col gap-3 flex-grow-0 flex-shrink-0 px-4 lg:px-4 md:px-2 sm:px-1"> <div className="flex flex-shrink-0 flex-grow-0 flex-col gap-3 px-4 sm:px-1 md:px-2 lg:px-4">
<RemarkRing remark={`${correctRate}%`} caption="正确率" percentage={correctRate} /> <RemarkRing remark={`${correctRate}%`} caption="正确率" percentage={correctRate} />
<RemarkRing remark={timeString} caption="章节耗时" /> <RemarkRing remark={timeString} caption="章节耗时" />
<RemarkRing remark={`${speedInfo.speed}个/s`} caption="输入字符" /> <RemarkRing remark={`${speedInfo.speed}个/s`} caption="输入字符" />
</div> </div>
<div className="rounded-xl bg-indigo-50 dark:bg-gray-700 flex-1 mx-6 overflow-visible z-10"> <div className="z-10 mx-6 flex-1 overflow-visible rounded-xl bg-indigo-50 dark:bg-gray-700">
<div className="flex flex-row gap-4 flex-wrap overflow-y-auto overflow-x-hidden customized-scrollbar h-80 content-start ml-8 mr-1 pr-7 pt-9 z-20"> <div className="customized-scrollbar z-20 ml-8 mr-1 flex h-80 flex-row flex-wrap content-start gap-4 overflow-y-auto overflow-x-hidden pr-7 pt-9">
{incorrectInfo.map((info) => ( {incorrectInfo.map((info) => (
<WordChip key={info.word} mistake={info} /> <WordChip key={info.word} mistake={info} />
))} ))}
</div> </div>
<div className="bg-indigo-200 dark:bg-indigo-400 w-full rounded-b-xl flex flex-row justify-start align-center px-4"> <div className="align-center flex w-full flex-row justify-start rounded-b-xl bg-indigo-200 px-4 dark:bg-indigo-400">
<ConclusionBar mistakeLevel={mistakeLevel} mistakeCount={incorrectInfo.length} /> <ConclusionBar mistakeLevel={mistakeLevel} mistakeCount={incorrectInfo.length} />
</div> </div>
</div> </div>
</div> </div>
<div className="w-full flex justify-center mt-10 gap-5 px-5 text-xl"> <div className="mt-10 flex w-full justify-center gap-5 px-5 text-xl">
<Tooltip content="快捷键shift + enter"> <Tooltip content="快捷键shift + enter">
<button <button
className="rounded-md overflow-hidden bg-white dark:bg-gray-600 dark:border-gray-700 dark:text-white dark:hover:bg-gray-700 hover:bg-indigo-200 px-6 py-2 h-12 md:text-base sm:text-sm text-sm font-normal text-gray-700 transition-colors duration-100 border-solid border-2 border-gray-300" className="h-12 overflow-hidden rounded-md border-2 border-solid border-gray-300 bg-white px-6 py-2 text-sm font-normal text-gray-700 transition-colors duration-100 hover:bg-indigo-200 dark:border-gray-700 dark:bg-gray-600 dark:text-white dark:hover:bg-gray-700 sm:text-sm md:text-base"
onClick={invisibleButtonHandler} onClick={invisibleButtonHandler}
> >
@@ -128,7 +128,7 @@ const ResultScreen: React.FC<ResultScreenProps> = ({
</Tooltip> </Tooltip>
<Tooltip content="快捷键space"> <Tooltip content="快捷键space">
<button <button
className="rounded-md overflow-hidden bg-white dark:bg-gray-600 dark:border-gray-700 dark:text-white dark:hover:bg-gray-700 hover:bg-indigo-200 px-6 py-2 h-12 md:text-base sm:text-sm text-sm font-normal text-gray-700 transition-colors duration-100 border-solid border-2 border-gray-300" className="h-12 overflow-hidden rounded-md border-2 border-solid border-gray-300 bg-white px-6 py-2 text-sm font-normal text-gray-700 transition-colors duration-100 hover:bg-indigo-200 dark:border-gray-700 dark:bg-gray-600 dark:text-white dark:hover:bg-gray-700 sm:text-sm md:text-base"
onClick={repeatButtonHandler} onClick={repeatButtonHandler}
> >
@@ -136,7 +136,7 @@ const ResultScreen: React.FC<ResultScreenProps> = ({
</Tooltip> </Tooltip>
<Tooltip content="快捷键enter"> <Tooltip content="快捷键enter">
<button <button
className={`rounded-md overflow-hidden bg-indigo-400 hover:bg-indigo-600 px-6 py-2 h-12 md:text-base sm:text-sm text-sm font-bold text-white transition-colors duration-100 ${ className={`h-12 overflow-hidden rounded-md bg-indigo-400 px-6 py-2 text-sm font-bold text-white transition-colors duration-100 hover:bg-indigo-600 sm:text-sm md:text-base ${
isLastChapter ? 'cursor-not-allowed opacity-50' : '' isLastChapter ? 'cursor-not-allowed opacity-50' : ''
}`} }`}
onClick={nextButtonHandler} onClick={nextButtonHandler}

View File

@@ -3,10 +3,10 @@ import React from 'react'
const InfoBox: React.FC<InfoBoxProps> = ({ info, description }) => { const InfoBox: React.FC<InfoBoxProps> = ({ info, description }) => {
return ( return (
<div className="flex flex-1 flex-col items-center justify-center"> <div className="flex flex-1 flex-col items-center justify-center">
<span className="font-bold w-4/5 text-center text-xl text-gray-600 dark:text-gray-400 transition-colors duration-300 pb-2 border-b"> <span className="w-4/5 border-b pb-2 text-center text-xl font-bold text-gray-600 transition-colors duration-300 dark:text-gray-400">
{info} {info}
</span> </span>
<span className="text-xs pt-2 dark:text-gray-300 transition-colors duration-300">{description}</span> <span className="pt-2 text-xs transition-colors duration-300 dark:text-gray-300">{description}</span>
</div> </div>
) )
} }

View File

@@ -19,7 +19,7 @@ const Speed: React.FC<SpeedProps> = ({ correctCount, inputCount, isStart, setSpe
}, [speed, minutes, seconds, setSpeedInfo]) }, [speed, minutes, seconds, setSpeedInfo])
return ( return (
<div className="w-3/5 flex bg-white dark:bg-gray-800 transition-colors duration-300 mt-auto rounded-large card p-4 py-10 opacity-45"> <div className="card opacity-45 mt-auto flex w-3/5 rounded-large bg-white p-4 py-10 transition-colors duration-300 dark:bg-gray-800">
<InfoBox info={`${minutesStirng}:${secondsStirng}`} description="时间" /> <InfoBox info={`${minutesStirng}:${secondsStirng}`} description="时间" />
<InfoBox info={inputCount + ''} description="输入数" /> <InfoBox info={inputCount + ''} description="输入数" />
<InfoBox info={speed + ''} description="速度" /> <InfoBox info={speed + ''} description="速度" />

View File

@@ -17,9 +17,9 @@ const Tooltip: React.FC<React.PropsWithChildren<TooltipProps>> = ({ children, co
<div <div
className={`${ className={`${
visible ? 'opacity-100' : 'opacity-0' visible ? 'opacity-100' : 'opacity-0'
} ${placementClasses} absolute left-1/2 transform -translate-x-1/2 flex items-center justify-center pointer-events-none transition-opacity`} } ${placementClasses} pointer-events-none absolute left-1/2 flex -translate-x-1/2 transform items-center justify-center transition-opacity`}
> >
<span className="py-1 px-2 bg-white dark:bg-gray-700 rounded-lg shadow-md text-gray-500 dark:text-gray-300 text-xs whitespace-nowrap"> <span className="whitespace-nowrap rounded-lg bg-white py-1 px-2 text-xs text-gray-500 shadow-md dark:bg-gray-700 dark:text-gray-300">
{content} {content}
</span> </span>
</div> </div>

View File

@@ -2,7 +2,7 @@ import React from 'react'
const Translation: React.FC<TranslationProps> = ({ trans }) => { const Translation: React.FC<TranslationProps> = ({ trans }) => {
return ( return (
<div className="pt-5 pb-4 text-lg font-sans dark:text-white dark:text-opacity-80 transition-colors duration-300 max-w-4xl">{trans}</div> <div className="max-w-4xl pt-5 pb-4 font-sans text-lg transition-colors duration-300 dark:text-white dark:text-opacity-80">{trans}</div>
) )
} }

View File

@@ -19,8 +19,8 @@ const stateClassNameMap: Record<string, Record<LetterState, string>> = {
const Letter: React.FC<LetterProps> = ({ letter, state = 'normal', visible }) => ( const Letter: React.FC<LetterProps> = ({ letter, state = 'normal', visible }) => (
<span <span
className={`m-0 p-0 text-5xl font-mono font-normal ${ className={`m-0 p-0 font-mono text-5xl font-normal ${
stateClassNameMap[((letter === EXPLICIT_SPACE) as unknown) as string][state] stateClassNameMap[(letter === EXPLICIT_SPACE) as unknown as string][state]
} pr-0.8 duration-0 dark:text-opacity-80`} } pr-0.8 duration-0 dark:text-opacity-80`}
> >
{visible ? letter : '_'} {visible ? letter : '_'}

View File

@@ -52,21 +52,21 @@ body,
@layer components { @layer components {
.word-chip { .word-chip {
@apply border-indigo-400 dark:border-slate-800 border-solid border-2 @apply flex h-10 w-auto cursor-pointer
rounded-md bg-white flex-row items-center
dark:bg-slate-700 hover:bg-indigo-100 dark:hover:bg-slate-600 justify-center rounded-md border-2
w-auto h-10 md:h-12 px-2 md:px-5 py-0.5 md:py-1 flex flex-row border-solid border-indigo-400 bg-white px-2 py-0.5 transition-colors duration-100 hover:bg-indigo-100 dark:border-slate-800
cursor-pointer transition-colors duration-100 dark:bg-slate-700 dark:hover:bg-slate-600 md:h-12
items-center justify-center; md:px-5 md:py-1;
} }
.word-chip > span { .word-chip > span {
@apply font-mono font-light text-gray-600 dark:text-gray-300 text-2xl md:text-3xl; @apply font-mono text-2xl font-light text-gray-600 dark:text-gray-300 md:text-3xl;
} }
.word-chip-tooltip { .word-chip-tooltip {
@apply flex items-center justify-center pointer-events-none py-1 px-2 @apply pointer-events-none flex items-center justify-center whitespace-nowrap rounded-lg
bg-white dark:bg-gray-800 rounded-lg shadow-md text-gray-500 bg-white py-1 px-2 text-xs text-gray-500
dark:text-gray-300 text-xs whitespace-nowrap; shadow-md dark:bg-gray-800 dark:text-gray-300;
} }
} }

View File

@@ -15,14 +15,14 @@ export const ChapterButton: React.FC<ChapterButtonProps> = ({ index, selected, w
return ( return (
<button <button
ref={buttonRef} ref={buttonRef}
className="relative p-4 w-36 bg-gray-50 dark:bg-gray-700 dark:bg-opacity-10 border border-gray-300 dark:border-gray-500 shadow-lg rounded-md text-left overflow-hidden focus:outline-none" className="relative w-36 overflow-hidden rounded-md border border-gray-300 bg-gray-50 p-4 text-left shadow-lg focus:outline-none dark:border-gray-500 dark:bg-gray-700 dark:bg-opacity-10"
onClick={onClick} onClick={onClick}
> >
<p className="text-lg text-gray-800 dark:text-white dark:text-opacity-80 w-full">Chapter {index + 1}</p> <p className="w-full text-lg text-gray-800 dark:text-white dark:text-opacity-80">Chapter {index + 1}</p>
<p className="text-sm font-bold text-gray-600 dark:text-white dark:text-opacity-60">{wordCount} </p> <p className="text-sm font-bold text-gray-600 dark:text-white dark:text-opacity-60">{wordCount} </p>
{selected ? ( {selected ? (
<FontAwesomeIcon <FontAwesomeIcon
className="absolute -right-4 -bottom-4 text-6xl text-green-500 dark:text-green-300 opacity-60" className="absolute -right-4 -bottom-4 text-6xl text-green-500 opacity-60 dark:text-green-300"
icon={['fas', 'check-circle']} icon={['fas', 'check-circle']}
fixedWidth fixedWidth
/> />

View File

@@ -7,7 +7,7 @@ const ChapterGroup: React.FC<ChapterGroupProps> = ({ totalWords }) => {
const [selectedChapter, setSelectedChapter] = useSelectedChapter() const [selectedChapter, setSelectedChapter] = useSelectedChapter()
const chapterCount = Math.ceil(totalWords / 20) const chapterCount = Math.ceil(totalWords / 20)
return ( return (
<main className="grid gap-4 sm:grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 mr-4"> <main className="mr-4 grid gap-4 sm:grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
{range(chapterCount).map((index) => {range(chapterCount).map((index) =>
index + 1 === chapterCount ? ( index + 1 === chapterCount ? (
<ChapterButton <ChapterButton

View File

@@ -19,7 +19,7 @@ const DictionaryCard: React.FC<DictionaryCardProps> = ({ dictionary }) => {
return ( return (
<button <button
ref={buttonRef} ref={buttonRef}
className="relative p-4 w-48 bg-gray-50 dark:bg-gray-700 dark:bg-opacity-10 border border-gray-300 dark:border-gray-500 shadow-lg rounded-md text-left overflow-hidden focus:outline-none " className="relative w-48 overflow-hidden rounded-md border border-gray-300 bg-gray-50 p-4 text-left shadow-lg focus:outline-none dark:border-gray-500 dark:bg-gray-700 dark:bg-opacity-10 "
onClick={setDictionary.bind(null, dictionary.id)} onClick={setDictionary.bind(null, dictionary.id)}
> >
<p className="mb-1 text-xl text-gray-800 dark:text-white dark:text-opacity-80">{dictionary.name}</p> <p className="mb-1 text-xl text-gray-800 dark:text-white dark:text-opacity-80">{dictionary.name}</p>
@@ -27,7 +27,7 @@ const DictionaryCard: React.FC<DictionaryCardProps> = ({ dictionary }) => {
<p className="text-sm font-bold text-gray-600 dark:text-white dark:text-opacity-60">{dictionary.length} </p> <p className="text-sm font-bold text-gray-600 dark:text-white dark:text-opacity-60">{dictionary.length} </p>
{selectedDictionary.id === dictionary.id ? ( {selectedDictionary.id === dictionary.id ? (
<FontAwesomeIcon <FontAwesomeIcon
className="absolute -right-4 -bottom-4 text-6xl text-green-500 dark:text-green-300 opacity-60" className="absolute -right-4 -bottom-4 text-6xl text-green-500 opacity-60 dark:text-green-300"
icon={['fas', 'check-circle']} icon={['fas', 'check-circle']}
fixedWidth fixedWidth
/> />

View File

@@ -5,7 +5,7 @@ import DictionaryCard from './DictionaryCard'
const DictionaryGroup: React.FC<DictionaryGroupProps> = ({ title, dictionaries }) => { const DictionaryGroup: React.FC<DictionaryGroupProps> = ({ title, dictionaries }) => {
return ( return (
<section className="mb-4 mr-1"> <section className="mb-4 mr-1">
<h3 className="sticky top-0 pb-2 text-sm font-bold text-gray-600 z-50 bg-indigo-50 dark:bg-slate-800 dark:text-white dark:text-opacity-60"> <h3 className="sticky top-0 z-50 bg-indigo-50 pb-2 text-sm font-bold text-gray-600 dark:bg-slate-800 dark:text-white dark:text-opacity-60">
{title} {title}
</h3> </h3>
<main className="grid gap-4 rounded-md sm:grid-cols-1 md:grid-cols-2"> <main className="grid gap-4 rounded-md sm:grid-cols-1 md:grid-cols-2">

View File

@@ -22,27 +22,27 @@ const GalleryPage: React.FC = () => {
<Layout> <Layout>
<Header> <Header>
<Tooltip content="快捷键 Enter or Esc"> <Tooltip content="快捷键 Enter or Esc">
<NavLink className="bg-indigo-400 text-white dark:text-opacity-80 text-lg px-6 py-1 rounded-lg focus:outline-none" to="/"> <NavLink className="rounded-lg bg-indigo-400 px-6 py-1 text-lg text-white focus:outline-none dark:text-opacity-80" to="/">
</NavLink> </NavLink>
</Tooltip> </Tooltip>
</Header> </Header>
<div className="mt-auto mb-auto flex w-auto space-x-4 overflow-y-auto"> <div className="mt-auto mb-auto flex w-auto space-x-4 overflow-y-auto">
<div className="bg-indigo-50 dark:bg-slate-800 rounded-lg p-6 space-y-2 overflow-y-auto flex flex-col"> <div className="flex flex-col space-y-2 overflow-y-auto rounded-lg bg-indigo-50 p-6 dark:bg-slate-800">
<h2 className="sticky top-0 mb-2 font-bold text-lg text-gray-700 dark:text-white dark:text-opacity-70 text-shadow z-10"> <h2 className="text-shadow sticky top-0 z-10 mb-2 text-lg font-bold text-gray-700 dark:text-white dark:text-opacity-70">
</h2> </h2>
<div className="overflow-y-auto customized-scrollbar"> <div className="customized-scrollbar overflow-y-auto">
{groups.map(([name, items]) => ( {groups.map(([name, items]) => (
<DictionaryGroup key={name} title={name} dictionaries={items} /> <DictionaryGroup key={name} title={name} dictionaries={items} />
))} ))}
</div> </div>
</div> </div>
<div className="p-6 overflow-y-auto bg-indigo-50 dark:bg-slate-800 rounded-lg flex flex-col"> <div className="flex flex-col overflow-y-auto rounded-lg bg-indigo-50 p-6 dark:bg-slate-800">
<h2 className="sticky top-0 mb-4 font-bold text-lg text-gray-700 dark:text-white dark:text-opacity-70 text-shadow z-10"> <h2 className="text-shadow sticky top-0 z-10 mb-4 text-lg font-bold text-gray-700 dark:text-white dark:text-opacity-70">
</h2> </h2>
<div className="overflow-y-auto customized-scrollbar"> <div className="customized-scrollbar overflow-y-auto">
<ChapterGroup totalWords={selectedDictionary.length} /> <ChapterGroup totalWords={selectedDictionary.length} />
</div> </div>
</div> </div>

View File

@@ -23,11 +23,11 @@ const Progress: React.FC<ProgressProps> = ({ order, wordsLength }) => {
}, [order, wordsLength]) }, [order, wordsLength])
return ( return (
<div className="relative pt-1 w-1/4 mt-auto"> <div className="relative mt-auto w-1/4 pt-1">
<div className="overflow-hidden h-2 mb-4 text-xs flex rounded-large bg-indigo-100 dark:bg-indigo-200 transition-all duration-300"> <div className="mb-4 flex h-2 overflow-hidden rounded-large bg-indigo-100 text-xs transition-all duration-300 dark:bg-indigo-200">
<div <div
style={{ width: `${progress}%` }} style={{ width: `${progress}%` }}
className={`rounded-large shadow-none flex flex-col text-center whitespace-nowrap text-white justify-center transition-all duration-300 ${ className={`flex flex-col justify-center whitespace-nowrap rounded-large text-center text-white shadow-none transition-all duration-300 ${
colorSwitcher[phase] ?? 'bg-indigo-200 dark:bg-indigo-300' colorSwitcher[phase] ?? 'bg-indigo-200 dark:bg-indigo-300'
}`} }`}
></div> ></div>

View File

@@ -8,7 +8,7 @@ const PronunciationSwitcher: React.FC<PronunciationSwitcherPropsType> = ({ state
<div className="flex items-center justify-center space-x-3"> <div className="flex items-center justify-center space-x-3">
<div> <div>
<select <select
className="dark:bg-gray-800 dark:text-white dark:text-opacity-60 transition-colors duration-300 cursor-pointer focus:outline-none" className="cursor-pointer transition-colors duration-300 focus:outline-none dark:bg-gray-800 dark:text-white dark:text-opacity-60"
value={state} value={state}
onChange={(e) => { onChange={(e) => {
changePronunciationState(e.target.value) changePronunciationState(e.target.value)

View File

@@ -110,7 +110,7 @@ const Switcher: React.FC<SwitcherPropsType> = ({ state, dispatch }) => {
</Tooltip> </Tooltip>
<Tooltip content="开关深色模式Ctrl + D"> <Tooltip content="开关深色模式Ctrl + D">
<button <button
className={`text-indigo-400 text-lg focus:outline-none`} className={`text-lg text-indigo-400 focus:outline-none`}
onClick={(e) => { onClick={(e) => {
dispatch('darkMode') dispatch('darkMode')
e.currentTarget.blur() e.currentTarget.blur()

View File

@@ -215,7 +215,7 @@ const App: React.FC = () => {
<Header> <Header>
<Tooltip content="词典章节切换"> <Tooltip content="词典章节切换">
<NavLink <NavLink
className="text-lg px-4 py-1 rounded-lg transition-colors duration-300 ease-in-out focus:outline-none dark:text-white dark:text-opacity-60 hover:bg-indigo-400 hover:text-white dark:hover:text-opacity-100 block" className="block rounded-lg px-4 py-1 text-lg transition-colors duration-300 ease-in-out hover:bg-indigo-400 hover:text-white focus:outline-none dark:text-white dark:text-opacity-60 dark:hover:text-opacity-100"
to="/gallery" to="/gallery"
> >
{wordList.dictName} {wordList.chapter + 1} {wordList.dictName} {wordList.chapter + 1}
@@ -229,7 +229,7 @@ const App: React.FC = () => {
<button <button
className={`${ className={`${
isStart ? 'bg-gray-300 dark:bg-gray-700' : 'bg-indigo-400' isStart ? 'bg-gray-300 dark:bg-gray-700' : 'bg-indigo-400'
} text-white dark:text-opacity-80 transition-colors duration-300 text-lg w-20 px-6 py-1 rounded-lg focus:outline-none flex items-center justify-center`} } flex w-20 items-center justify-center rounded-lg px-6 py-1 text-lg text-white transition-colors duration-300 focus:outline-none dark:text-opacity-80`}
onClick={(e) => { onClick={(e) => {
setIsStart((isStart) => !isStart) setIsStart((isStart) => !isStart)
}} }}
@@ -239,9 +239,9 @@ const App: React.FC = () => {
</Tooltip> </Tooltip>
</Header> </Header>
<Main> <Main>
<div className="container h-full relative flex mx-auto flex-col items-center"> <div className="container relative mx-auto flex h-full flex-col items-center">
<div className="h-1/3"></div> <div className="h-1/3"></div>
{!isStart && <h3 className="pb-4 text-xl text-gray-600 dark:text-gray-50 animate-pulse"></h3>} {!isStart && <h3 className="animate-pulse pb-4 text-xl text-gray-600 dark:text-gray-50"></h3>}
{isStart && ( {isStart && (
<div className="flex flex-col items-center"> <div className="flex flex-col items-center">
<Word <Word

View File

@@ -1,11 +1,7 @@
{ {
"compilerOptions": { "compilerOptions": {
"target": "es5", "target": "es5",
"lib": [ "lib": ["dom", "dom.iterable", "esnext"],
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true, "allowJs": true,
"skipLibCheck": true, "skipLibCheck": true,
"esModuleInterop": true, "esModuleInterop": true,
@@ -28,9 +24,7 @@
"@/resources/*": ["resources/*"], "@/resources/*": ["resources/*"],
"@/store/*": ["store/*"], "@/store/*": ["store/*"],
"@/utils/*": ["utils/*"] "@/utils/*": ["utils/*"]
}, }
}, },
"include": [ "include": ["src"]
"src"
]
} }

436
yarn.lock
View File

@@ -1877,6 +1877,11 @@ ansi-regex@^5.0.0:
resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
ansi-regex@^6.0.1:
version "6.0.1"
resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
ansi-styles@^3.2.1: ansi-styles@^3.2.1:
version "3.2.1" version "3.2.1"
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -1891,6 +1896,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
dependencies: dependencies:
color-convert "^2.0.1" color-convert "^2.0.1"
ansi-styles@^6.0.0:
version "6.2.1"
resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
anymatch@~3.1.2: anymatch@~3.1.2:
version "3.1.3" version "3.1.3"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
@@ -2141,7 +2151,7 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0" balanced-match "^1.0.0"
concat-map "0.0.1" concat-map "0.0.1"
braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: braces@^3.0.2, braces@~3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
@@ -2252,11 +2262,6 @@ chokidar@^3.5.3:
optionalDependencies: optionalDependencies:
fsevents "~2.3.2" fsevents "~2.3.2"
ci-info@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
classnames@^2.3.2: classnames@^2.3.2:
version "2.3.2" version "2.3.2"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924"
@@ -2282,6 +2287,14 @@ cli-truncate@^2.1.0:
slice-ansi "^3.0.0" slice-ansi "^3.0.0"
string-width "^4.2.0" string-width "^4.2.0"
cli-truncate@^3.1.0:
version "3.1.0"
resolved "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389"
integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==
dependencies:
slice-ansi "^5.0.0"
string-width "^5.0.0"
cliui@^7.0.2: cliui@^7.0.2:
version "7.0.4" version "7.0.4"
resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
@@ -2336,15 +2349,20 @@ colorette@^1.2.1:
resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
commander@^6.0.0, commander@^6.2.0: colorette@^2.0.19:
version "2.0.19"
resolved "https://registry.npmmirror.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798"
integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==
commander@^6.0.0:
version "6.2.1" version "6.2.1"
resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
compare-versions@^3.6.0: commander@^9.4.1:
version "3.6.0" version "9.5.0"
resolved "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" resolved "https://registry.npmmirror.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30"
integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==
concat-map@0.0.1: concat-map@0.0.1:
version "0.0.1" version "0.0.1"
@@ -2416,7 +2434,7 @@ cross-env@^7.0.3:
dependencies: dependencies:
cross-spawn "^7.0.1" cross-spawn "^7.0.1"
cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3" version "7.0.3"
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
@@ -2487,7 +2505,7 @@ debug@^3.2.7:
dependencies: dependencies:
ms "^2.1.1" ms "^2.1.1"
debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0: debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
version "4.3.1" version "4.3.1"
resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
@@ -2506,11 +2524,6 @@ decode-uri-component@^0.2.0:
resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
dedent@^0.7.0:
version "0.7.0"
resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
deep-equal@^2.0.5: deep-equal@^2.0.5:
version "2.2.0" version "2.2.0"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.0.tgz#5caeace9c781028b9ff459f33b779346637c43e6" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.0.tgz#5caeace9c781028b9ff459f33b779346637c43e6"
@@ -2633,6 +2646,11 @@ duplexer@^0.1.2:
resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
eastasianwidth@^0.2.0:
version "0.2.0"
resolved "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
ejs@^3.1.5: ejs@^3.1.5:
version "3.1.5" version "3.1.5"
resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz#aed723844dc20acb4b170cd9ab1017e476a0d93b" resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz#aed723844dc20acb4b170cd9ab1017e476a0d93b"
@@ -2660,14 +2678,7 @@ emoji-regex@^9.2.2:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
end-of-stream@^1.1.0: enquirer@^2.3.5:
version "1.4.4"
resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
dependencies:
once "^1.4.0"
enquirer@^2.3.5, enquirer@^2.3.6:
version "2.3.6" version "2.3.6"
resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
@@ -3112,20 +3123,20 @@ esutils@^2.0.2:
resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
execa@^4.1.0: execa@^6.1.0:
version "4.1.0" version "6.1.0"
resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" resolved "https://registry.npmmirror.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20"
integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==
dependencies: dependencies:
cross-spawn "^7.0.0" cross-spawn "^7.0.3"
get-stream "^5.0.0" get-stream "^6.0.1"
human-signals "^1.1.1" human-signals "^3.0.1"
is-stream "^2.0.0" is-stream "^3.0.0"
merge-stream "^2.0.0" merge-stream "^2.0.0"
npm-run-path "^4.0.0" npm-run-path "^5.1.0"
onetime "^5.1.0" onetime "^6.0.0"
signal-exit "^3.0.2" signal-exit "^3.0.7"
strip-final-newline "^2.0.0" strip-final-newline "^3.0.0"
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3" version "3.1.3"
@@ -3175,13 +3186,6 @@ fastq@^1.6.0:
dependencies: dependencies:
reusify "^1.0.4" reusify "^1.0.4"
figures@^3.2.0:
version "3.2.0"
resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
dependencies:
escape-string-regexp "^1.0.5"
file-entry-cache@^6.0.0: file-entry-cache@^6.0.0:
version "6.0.0" version "6.0.0"
resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a"
@@ -3203,21 +3207,6 @@ fill-range@^7.0.1:
dependencies: dependencies:
to-regex-range "^5.0.1" to-regex-range "^5.0.1"
find-up@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
dependencies:
locate-path "^6.0.0"
path-exists "^4.0.0"
find-versions@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz#3c57e573bf97769b8cb8df16934b627915da4965"
integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==
dependencies:
semver-regex "^3.1.2"
flat-cache@^3.0.4: flat-cache@^3.0.4:
version "3.0.4" version "3.0.4"
resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
@@ -3316,17 +3305,10 @@ get-intrinsic@^1.1.1, get-intrinsic@^1.1.3:
has "^1.0.3" has "^1.0.3"
has-symbols "^1.0.3" has-symbols "^1.0.3"
get-own-enumerable-property-symbols@^3.0.0: get-stream@^6.0.1:
version "3.0.2" version "6.0.1"
resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" resolved "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
get-stream@^5.0.0:
version "5.2.0"
resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
dependencies:
pump "^3.0.0"
get-symbol-description@^1.0.0: get-symbol-description@^1.0.0:
version "1.0.0" version "1.0.0"
@@ -3514,26 +3496,15 @@ html-tags@^3.1.0:
resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140"
integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==
human-signals@^1.1.1: human-signals@^3.0.1:
version "1.1.1" version "3.0.1"
resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" resolved "https://registry.npmmirror.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5"
integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==
husky@^4.3.8: husky@^8.0.0:
version "4.3.8" version "8.0.3"
resolved "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz#31144060be963fd6850e5cc8f019a1dfe194296d" resolved "https://registry.npmmirror.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184"
integrity sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow== integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==
dependencies:
chalk "^4.0.0"
ci-info "^2.0.0"
compare-versions "^3.6.0"
cosmiconfig "^7.0.0"
find-versions "^4.0.0"
opencollective-postinstall "^2.0.2"
pkg-dir "^5.0.0"
please-upgrade-node "^3.2.0"
slash "^3.0.0"
which-pm-runs "^1.0.0"
hyphenate-style-name@^1.0.2: hyphenate-style-name@^1.0.2:
version "1.0.4" version "1.0.4"
@@ -3702,6 +3673,11 @@ is-fullwidth-code-point@^3.0.0:
resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
is-fullwidth-code-point@^4.0.0:
version "4.0.0"
resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88"
integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==
is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
@@ -3743,11 +3719,6 @@ is-number@^7.0.0:
resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
is-obj@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
is-regex@^1.1.1: is-regex@^1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9"
@@ -3763,11 +3734,6 @@ is-regex@^1.1.4:
call-bind "^1.0.2" call-bind "^1.0.2"
has-tostringtag "^1.0.0" has-tostringtag "^1.0.0"
is-regexp@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
is-set@^2.0.1, is-set@^2.0.2: is-set@^2.0.1, is-set@^2.0.2:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec"
@@ -3780,10 +3746,10 @@ is-shared-array-buffer@^1.0.2:
dependencies: dependencies:
call-bind "^1.0.2" call-bind "^1.0.2"
is-stream@^2.0.0: is-stream@^3.0.0:
version "2.0.0" version "3.0.0"
resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" resolved "https://registry.npmmirror.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
is-string@^1.0.5: is-string@^1.0.5:
version "1.0.5" version "1.0.5"
@@ -3999,7 +3965,7 @@ levn@^0.4.1:
prelude-ls "^1.2.1" prelude-ls "^1.2.1"
type-check "~0.4.0" type-check "~0.4.0"
lilconfig@^2.0.5, lilconfig@^2.0.6: lilconfig@2.0.6, lilconfig@^2.0.5, lilconfig@^2.0.6:
version "2.0.6" version "2.0.6"
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4"
integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==
@@ -4009,49 +3975,39 @@ lines-and-columns@^1.1.6:
resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
lint-staged@^10.5.3: lint-staged@^13.1.2:
version "10.5.3" version "13.1.2"
resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.3.tgz#c682838b3eadd4c864d1022da05daa0912fb1da5" resolved "https://registry.npmmirror.com/lint-staged/-/lint-staged-13.1.2.tgz#443636a0cfd834d5518d57d228130dc04c83d6fb"
integrity sha512-TanwFfuqUBLufxCc3RUtFEkFraSPNR3WzWcGF39R3f2J7S9+iF9W0KTVLfSy09lYGmZS5NDCxjNvhGMSJyFCWg== integrity sha512-K9b4FPbWkpnupvK3WXZLbgu9pchUJ6N7TtVZjbaPsoizkqFUDkUReUL25xdrCljJs7uLUF3tZ7nVPeo/6lp+6w==
dependencies: dependencies:
chalk "^4.1.0" cli-truncate "^3.1.0"
cli-truncate "^2.1.0" colorette "^2.0.19"
commander "^6.2.0" commander "^9.4.1"
cosmiconfig "^7.0.0" debug "^4.3.4"
debug "^4.2.0" execa "^6.1.0"
dedent "^0.7.0" lilconfig "2.0.6"
enquirer "^2.3.6" listr2 "^5.0.5"
execa "^4.1.0" micromatch "^4.0.5"
listr2 "^3.2.2"
log-symbols "^4.0.0"
micromatch "^4.0.2"
normalize-path "^3.0.0" normalize-path "^3.0.0"
please-upgrade-node "^3.2.0" object-inspect "^1.12.2"
string-argv "0.3.1" pidtree "^0.6.0"
stringify-object "^3.3.0" string-argv "^0.3.1"
yaml "^2.1.3"
listr2@^3.2.2: listr2@^5.0.5:
version "3.3.0" version "5.0.7"
resolved "https://registry.npmjs.org/listr2/-/listr2-3.3.0.tgz#fab51211e4152d88bab7d91e4f7f896b0d9e5ba1" resolved "https://registry.npmmirror.com/listr2/-/listr2-5.0.7.tgz#de69ccc4caf6bea7da03c74f7a2ffecf3904bd53"
integrity sha512-G9IFI/m65icgVlifS0wMQnvn35/8VJGzEb3crpE4NnaegQYQOn/wP7yqi9TTJQ/eoxme4UaPbffBK1XqKP/DOg== integrity sha512-MD+qXHPmtivrHIDRwPYdfNkrzqDiuaKU/rfBcec3WMyMF3xylQj3jMq344OtvQxz7zaCFViRAeqlr2AFhPvXHw==
dependencies: dependencies:
chalk "^4.1.0"
cli-truncate "^2.1.0" cli-truncate "^2.1.0"
figures "^3.2.0" colorette "^2.0.19"
indent-string "^4.0.0"
log-update "^4.0.0" log-update "^4.0.0"
p-map "^4.0.0" p-map "^4.0.0"
rxjs "^6.6.3" rfdc "^1.3.0"
rxjs "^7.8.0"
through "^2.3.8" through "^2.3.8"
wrap-ansi "^7.0.0" wrap-ansi "^7.0.0"
locate-path@^6.0.0:
version "6.0.0"
resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
dependencies:
p-locate "^5.0.0"
lodash.debounce@^4.0.8: lodash.debounce@^4.0.8:
version "4.0.8" version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
@@ -4072,13 +4028,6 @@ lodash@^4.17.21:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
log-symbols@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920"
integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==
dependencies:
chalk "^4.0.0"
log-update@^4.0.0: log-update@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1"
@@ -4137,14 +4086,6 @@ merge2@^1.3.0, merge2@^1.4.1:
resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
micromatch@^4.0.2:
version "4.0.2"
resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
dependencies:
braces "^3.0.1"
picomatch "^2.0.5"
micromatch@^4.0.4, micromatch@^4.0.5: micromatch@^4.0.4, micromatch@^4.0.5:
version "4.0.5" version "4.0.5"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
@@ -4158,6 +4099,11 @@ mimic-fn@^2.1.0:
resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
mimic-fn@^4.0.0:
version "4.0.0"
resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
min-indent@^1.0.0: min-indent@^1.0.0:
version "1.0.1" version "1.0.1"
resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
@@ -4283,12 +4229,12 @@ normalize-range@^0.1.2:
resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
npm-run-path@^4.0.0: npm-run-path@^5.1.0:
version "4.0.1" version "5.1.0"
resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00"
integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==
dependencies: dependencies:
path-key "^3.0.0" path-key "^4.0.0"
num2fraction@^1.2.2: num2fraction@^1.2.2:
version "1.2.2" version "1.2.2"
@@ -4388,7 +4334,7 @@ object.values@^1.1.6:
define-properties "^1.1.4" define-properties "^1.1.4"
es-abstract "^1.20.4" es-abstract "^1.20.4"
once@^1.3.0, once@^1.3.1, once@^1.4.0: once@^1.3.0:
version "1.4.0" version "1.4.0"
resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
@@ -4402,6 +4348,13 @@ onetime@^5.1.0:
dependencies: dependencies:
mimic-fn "^2.1.0" mimic-fn "^2.1.0"
onetime@^6.0.0:
version "6.0.0"
resolved "https://registry.npmmirror.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
dependencies:
mimic-fn "^4.0.0"
open@^7.3.1: open@^7.3.1:
version "7.3.1" version "7.3.1"
resolved "https://registry.npmjs.org/open/-/open-7.3.1.tgz#111119cb919ca1acd988f49685c4fdd0f4755356" resolved "https://registry.npmjs.org/open/-/open-7.3.1.tgz#111119cb919ca1acd988f49685c4fdd0f4755356"
@@ -4410,11 +4363,6 @@ open@^7.3.1:
is-docker "^2.0.0" is-docker "^2.0.0"
is-wsl "^2.1.1" is-wsl "^2.1.1"
opencollective-postinstall@^2.0.2:
version "2.0.3"
resolved "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259"
integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==
optionator@^0.9.1: optionator@^0.9.1:
version "0.9.1" version "0.9.1"
resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
@@ -4427,20 +4375,6 @@ optionator@^0.9.1:
type-check "^0.4.0" type-check "^0.4.0"
word-wrap "^1.2.3" word-wrap "^1.2.3"
p-limit@^3.0.2:
version "3.1.0"
resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
dependencies:
yocto-queue "^0.1.0"
p-locate@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
dependencies:
p-limit "^3.0.2"
p-map@^4.0.0: p-map@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
@@ -4465,21 +4399,21 @@ parse-json@^5.0.0:
json-parse-even-better-errors "^2.3.0" json-parse-even-better-errors "^2.3.0"
lines-and-columns "^1.1.6" lines-and-columns "^1.1.6"
path-exists@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
path-is-absolute@^1.0.0: path-is-absolute@^1.0.0:
version "1.0.1" version "1.0.1"
resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
path-key@^3.0.0, path-key@^3.1.0: path-key@^3.1.0:
version "3.1.1" version "3.1.1"
resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
path-key@^4.0.0:
version "4.0.0"
resolved "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
path-parse@^1.0.6: path-parse@^1.0.6:
version "1.0.6" version "1.0.6"
resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
@@ -4512,7 +4446,7 @@ picocolors@^1.0.0:
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: picomatch@^2.0.4, picomatch@^2.2.1:
version "2.2.2" version "2.2.2"
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
@@ -4522,25 +4456,16 @@ picomatch@^2.3.1:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
pidtree@^0.6.0:
version "0.6.0"
resolved "https://registry.npmmirror.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c"
integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==
pify@^2.3.0: pify@^2.3.0:
version "2.3.0" version "2.3.0"
resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
pkg-dir@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760"
integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==
dependencies:
find-up "^5.0.0"
please-upgrade-node@^3.2.0:
version "3.2.0"
resolved "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==
dependencies:
semver-compare "^1.0.0"
postcss-functions@^3: postcss-functions@^3:
version "3.0.0" version "3.0.0"
resolved "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz#0e94d01444700a481de20de4d55fb2640564250e" resolved "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz#0e94d01444700a481de20de4d55fb2640564250e"
@@ -4679,10 +4604,15 @@ prettier-linter-helpers@^1.0.0:
dependencies: dependencies:
fast-diff "^1.1.2" fast-diff "^1.1.2"
prettier@^2.2.1: prettier-plugin-tailwindcss@^0.2.3:
version "2.2.1" version "0.2.3"
resolved "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" resolved "https://registry.npmmirror.com/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.2.3.tgz#b68a1de10056fc84055426af132c2697bea0955c"
integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== integrity sha512-s2N5Dh7Ao5KTV1mao5ZBnn8EKtUcDPJEkGViZIjI0Ij9TTI5zgTz4IHOxW33jOdjHKa8CSjM88scelUiC5TNRQ==
prettier@^2.8.4:
version "2.8.4"
resolved "https://registry.npmmirror.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3"
integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==
pretty-format@^26.0.0, pretty-format@^26.6.2: pretty-format@^26.0.0, pretty-format@^26.6.2:
version "26.6.2" version "26.6.2"
@@ -4729,14 +4659,6 @@ prop-types@^15.8.1:
object-assign "^4.1.1" object-assign "^4.1.1"
react-is "^16.13.1" react-is "^16.13.1"
pump@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
dependencies:
end-of-stream "^1.1.0"
once "^1.3.1"
punycode@^2.1.0: punycode@^2.1.0:
version "2.1.1" version "2.1.1"
resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
@@ -5034,6 +4956,11 @@ reusify@^1.0.4:
resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
rfdc@^1.3.0:
version "1.3.0"
resolved "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b"
integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==
rimraf@^3.0.2: rimraf@^3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
@@ -5067,12 +4994,12 @@ run-parallel@^1.1.9:
resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef"
integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==
rxjs@^6.6.3: rxjs@^7.8.0:
version "6.6.3" version "7.8.0"
resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" resolved "https://registry.npmmirror.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4"
integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==
dependencies: dependencies:
tslib "^1.9.0" tslib "^2.1.0"
safe-buffer@~5.1.1: safe-buffer@~5.1.1:
version "5.1.2" version "5.1.2"
@@ -5101,16 +5028,6 @@ screenfull@^5.1.0:
resolved "https://registry.npmjs.org/screenfull/-/screenfull-5.1.0.tgz#85c13c70f4ead4c1b8a935c70010dfdcd2c0e5c8" resolved "https://registry.npmjs.org/screenfull/-/screenfull-5.1.0.tgz#85c13c70f4ead4c1b8a935c70010dfdcd2c0e5c8"
integrity sha512-dYaNuOdzr+kc6J6CFcBrzkLCfyGcMg+gWkJ8us93IQ7y1cevhQAugFsaCdMHb6lw8KV3xPzSxzH7zM1dQap9mA== integrity sha512-dYaNuOdzr+kc6J6CFcBrzkLCfyGcMg+gWkJ8us93IQ7y1cevhQAugFsaCdMHb6lw8KV3xPzSxzH7zM1dQap9mA==
semver-compare@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
semver-regex@^3.1.2:
version "3.1.2"
resolved "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807"
integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA==
semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
version "6.3.0" version "6.3.0"
resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
@@ -5161,6 +5078,11 @@ signal-exit@^3.0.2:
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
signal-exit@^3.0.7:
version "3.0.7"
resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
simple-swizzle@^0.2.2: simple-swizzle@^0.2.2:
version "0.2.2" version "0.2.2"
resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
@@ -5191,6 +5113,14 @@ slice-ansi@^4.0.0:
astral-regex "^2.0.0" astral-regex "^2.0.0"
is-fullwidth-code-point "^3.0.0" is-fullwidth-code-point "^3.0.0"
slice-ansi@^5.0.0:
version "5.0.0"
resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a"
integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==
dependencies:
ansi-styles "^6.0.0"
is-fullwidth-code-point "^4.0.0"
source-map-explorer@^2.5.2: source-map-explorer@^2.5.2:
version "2.5.2" version "2.5.2"
resolved "https://registry.npmjs.org/source-map-explorer/-/source-map-explorer-2.5.2.tgz#857cab5dd9d1d7175e9c5c2739dc9ccfb99f2dc5" resolved "https://registry.npmjs.org/source-map-explorer/-/source-map-explorer-2.5.2.tgz#857cab5dd9d1d7175e9c5c2739dc9ccfb99f2dc5"
@@ -5283,9 +5213,9 @@ stop-iteration-iterator@^1.0.0:
dependencies: dependencies:
internal-slot "^1.0.4" internal-slot "^1.0.4"
string-argv@0.3.1: string-argv@^0.3.1:
version "0.3.1" version "0.3.1"
resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" resolved "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da"
integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==
string-natural-compare@^3.0.1: string-natural-compare@^3.0.1:
@@ -5302,6 +5232,15 @@ string-width@^4.1.0, string-width@^4.2.0:
is-fullwidth-code-point "^3.0.0" is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.0" strip-ansi "^6.0.0"
string-width@^5.0.0:
version "5.1.2"
resolved "https://registry.npmmirror.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"
string.prototype.matchall@^4.0.8: string.prototype.matchall@^4.0.8:
version "4.0.8" version "4.0.8"
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3"
@@ -5350,15 +5289,6 @@ string.prototype.trimstart@^1.0.6:
define-properties "^1.1.4" define-properties "^1.1.4"
es-abstract "^1.20.4" es-abstract "^1.20.4"
stringify-object@^3.3.0:
version "3.3.0"
resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
dependencies:
get-own-enumerable-property-symbols "^3.0.0"
is-obj "^1.0.1"
is-regexp "^1.0.0"
strip-ansi@^6.0.0: strip-ansi@^6.0.0:
version "6.0.0" version "6.0.0"
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
@@ -5366,15 +5296,22 @@ strip-ansi@^6.0.0:
dependencies: dependencies:
ansi-regex "^5.0.0" ansi-regex "^5.0.0"
strip-ansi@^7.0.1:
version "7.0.1"
resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2"
integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==
dependencies:
ansi-regex "^6.0.1"
strip-bom@^3.0.0: strip-bom@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
strip-final-newline@^2.0.0: strip-final-newline@^3.0.0:
version "2.0.0" version "3.0.0"
resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" resolved "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
strip-indent@^3.0.0: strip-indent@^3.0.0:
version "3.0.0" version "3.0.0"
@@ -5540,7 +5477,7 @@ tsconfig-paths@^3.14.1:
minimist "^1.2.6" minimist "^1.2.6"
strip-bom "^3.0.0" strip-bom "^3.0.0"
tslib@^1.8.1, tslib@^1.9.0: tslib@^1.8.1:
version "1.14.1" version "1.14.1"
resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
@@ -5724,11 +5661,6 @@ which-collection@^1.0.1:
is-weakmap "^2.0.1" is-weakmap "^2.0.1"
is-weakset "^2.0.1" is-weakset "^2.0.1"
which-pm-runs@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=
which-typed-array@^1.1.9: which-typed-array@^1.1.9:
version "1.1.9" version "1.1.9"
resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6"
@@ -5806,6 +5738,11 @@ yaml@^1.10.2:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
yaml@^2.1.3:
version "2.2.1"
resolved "https://registry.npmmirror.com/yaml/-/yaml-2.2.1.tgz#3014bf0482dcd15147aa8e56109ce8632cd60ce4"
integrity sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==
yargs-parser@^20.2.2: yargs-parser@^20.2.2:
version "20.2.4" version "20.2.4"
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
@@ -5823,8 +5760,3 @@ yargs@^16.2.0:
string-width "^4.2.0" string-width "^4.2.0"
y18n "^5.0.5" y18n "^5.0.5"
yargs-parser "^20.2.2" yargs-parser "^20.2.2"
yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==