Improve First Contentful Paint (FCP) Time (#399)
Co-authored-by: KaiyiWing <Zhang.kaiyi42@gmail.com>
3
.gitignore
vendored
@@ -25,4 +25,5 @@ yarn-error.log*
|
||||
.eslintcache
|
||||
package-lock.json
|
||||
|
||||
.env
|
||||
.env
|
||||
stats.html
|
||||
@@ -1,3 +1,4 @@
|
||||
build
|
||||
node_modules
|
||||
public/dicts
|
||||
public/dicts
|
||||
stats.html
|
||||
@@ -22,7 +22,6 @@
|
||||
"howler": "^2.2.3",
|
||||
"html-to-image": "^1.11.11",
|
||||
"jotai": "^2.0.3",
|
||||
"lodash": "^4.17.20",
|
||||
"mixpanel-browser": "^2.45.0",
|
||||
"postcss": "^8.4.21",
|
||||
"react": "^18.2.0",
|
||||
@@ -43,7 +42,6 @@
|
||||
"build": "cross-env CI=false vite build --base=./",
|
||||
"test": "echo \"No tests\"",
|
||||
"lint": "eslint .",
|
||||
"analyze": "source-map-explorer 'build/static/js/*.js'",
|
||||
"prettier": "prettier --write .",
|
||||
"prepare": "husky install"
|
||||
},
|
||||
@@ -85,9 +83,9 @@
|
||||
"lint-staged": "^13.1.2",
|
||||
"prettier": "^2.8.4",
|
||||
"prettier-plugin-tailwindcss": "^0.2.7",
|
||||
"rollup-plugin-visualizer": "^5.9.0",
|
||||
"tailwindcss": "^3.3.1",
|
||||
"typescript-plugin-css-modules": "^5.0.1",
|
||||
"vite": "^4.1.1",
|
||||
"vite-plugin-svgr": "^2.4.0"
|
||||
"vite": "^4.1.1"
|
||||
}
|
||||
}
|
||||
|
||||
BIN
src/assets/sharePic/image-1.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 519 KiB |
BIN
src/assets/sharePic/image-2.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 410 KiB |
BIN
src/assets/sharePic/image-3.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 370 KiB |
BIN
src/assets/sharePic/image-4.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
src/assets/sharePic/image-5.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
src/assets/sharePic/image-6.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
src/assets/sharePic/image-7.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
src/assets/sharePic/image-8.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
src/assets/sharePic/image-9.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
@@ -1,6 +1,6 @@
|
||||
import React, { PropsWithChildren } from 'react'
|
||||
import { NavLink } from 'react-router-dom'
|
||||
import { ReactComponent as Logo } from '@/assets/logo.svg'
|
||||
import logo from '@/assets/logo.svg'
|
||||
|
||||
const Header: React.FC<PropsWithChildren> = ({ children }) => {
|
||||
return (
|
||||
@@ -10,7 +10,7 @@ const Header: React.FC<PropsWithChildren> = ({ children }) => {
|
||||
className="flex items-center text-2xl font-bold text-indigo-400 no-underline hover:no-underline lg:text-4xl"
|
||||
to="https://qwerty.kaiyi.cool/"
|
||||
>
|
||||
<Logo className="mr-3 h-16 w-16" />
|
||||
<img src={logo} className="mr-3 h-16 w-16" />
|
||||
<h1>Qwerty Learner</h1>
|
||||
</NavLink>
|
||||
<nav 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">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useAtomValue } from 'jotai'
|
||||
import useSound from 'use-sound'
|
||||
import { SOUND_URL_PREFIX } from '@/resources/soundResource'
|
||||
import { noop } from 'lodash'
|
||||
import noop from '@/utils/noop'
|
||||
import { keySoundsConfigAtom, hintSoundsConfigAtom } from '@/store'
|
||||
|
||||
export type PlayFunction = ReturnType<typeof useSound>[0]
|
||||
|
||||
@@ -4,7 +4,7 @@ import { useEffect, useMemo, useState } from 'react'
|
||||
import useSound from 'use-sound'
|
||||
import { HookOptions } from 'use-sound/dist/types'
|
||||
import { addHowlListener } from '@/utils'
|
||||
import { noop } from 'lodash'
|
||||
import noop from '@/utils/noop'
|
||||
import { pronunciationConfigAtom } from '@/store'
|
||||
import { PronunciationType } from '@/typings'
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { CHAPTER_LENGTH } from '@/constants'
|
||||
import { currentChapterAtom, currentDictInfoAtom } from '@/store'
|
||||
import { useAtom, useAtomValue } from 'jotai'
|
||||
import { range } from 'lodash'
|
||||
import React from 'react'
|
||||
import { useUpdateEffect } from 'react-use'
|
||||
import range from '@/utils/range'
|
||||
import ChapterButton from './ChapterButton'
|
||||
import { useAtom, useAtomValue } from 'jotai'
|
||||
import { currentChapterAtom, currentDictInfoAtom } from '@/store'
|
||||
import { CHAPTER_LENGTH } from '@/constants'
|
||||
import { useUpdateEffect } from 'react-use'
|
||||
|
||||
const ChapterGroup: React.FC<ChapterGroupProps> = ({ totalWords }) => {
|
||||
const [currentChapter, setCurrentChapter] = useAtom(currentChapterAtom)
|
||||
@@ -16,7 +16,7 @@ const ChapterGroup: React.FC<ChapterGroupProps> = ({ totalWords }) => {
|
||||
|
||||
return (
|
||||
<main className="mr-4 grid gap-4 sm:grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
|
||||
{range(currentDictInfo.chapterCount).map((index) =>
|
||||
{range(0, currentDictInfo.chapterCount, 1).map((index) =>
|
||||
index + 1 === currentDictInfo.chapterCount ? (
|
||||
<ChapterButton
|
||||
wordCount={totalWords % CHAPTER_LENGTH || CHAPTER_LENGTH}
|
||||
|
||||
@@ -3,7 +3,7 @@ import Layout from '@/components/Layout'
|
||||
import DictionaryGroup from './DictionaryGroup'
|
||||
import Header from '@/components/Header'
|
||||
import { NavLink, useNavigate } from 'react-router-dom'
|
||||
import { groupBy } from 'lodash'
|
||||
import groupBy from '@/utils/groupBy'
|
||||
import { useHotkeys } from 'react-hotkeys-hook'
|
||||
import ChapterGroup from './ChapterGroup'
|
||||
import Tooltip from '@/components/Tooltip'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { clamp } from 'lodash'
|
||||
import clamp from '@/utils/clamp'
|
||||
import { useMemo } from 'react'
|
||||
import classNames from 'classnames'
|
||||
|
||||
|
||||
@@ -2,10 +2,16 @@ import { Dialog, Transition } from '@headlessui/react'
|
||||
import { toPng } from 'html-to-image'
|
||||
import { Fragment, useContext, useEffect, useMemo, useRef, useState } from 'react'
|
||||
import { saveAs } from 'file-saver'
|
||||
import { ReactComponent as KeyboardSvg } from '@/assets/sharePic/keyBackground.svg'
|
||||
import { ReactComponent as Image1 } from '@/assets/sharePic/image-1.svg'
|
||||
import { ReactComponent as Image2 } from '@/assets/sharePic/image-2.svg'
|
||||
import { ReactComponent as Image3 } from '@/assets/sharePic/image-3.svg'
|
||||
import keyboardSvg from '@/assets/sharePic/keyBackground.svg'
|
||||
import shareImage1 from '@/assets/sharePic/image-1.png'
|
||||
import shareImage2 from '@/assets/sharePic/image-2.png'
|
||||
import shareImage3 from '@/assets/sharePic/image-3.png'
|
||||
import shareImage4 from '@/assets/sharePic/image-4.png'
|
||||
import shareImage5 from '@/assets/sharePic/image-5.png'
|
||||
import shareImage6 from '@/assets/sharePic/image-6.png'
|
||||
import shareImage7 from '@/assets/sharePic/image-7.png'
|
||||
import shareImage8 from '@/assets/sharePic/image-8.png'
|
||||
import shareImage9 from '@/assets/sharePic/image-9.png'
|
||||
import { TypingContext } from '../../store'
|
||||
import { useAtomValue } from 'jotai'
|
||||
import { currentChapterAtom, currentDictInfoAtom } from '@/store'
|
||||
@@ -13,7 +19,7 @@ import { recordShareAction } from '@/utils'
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
||||
|
||||
const PIC_RATIO = 3
|
||||
const PIC_LIST = [Image1, Image2, Image3]
|
||||
const PIC_LIST = [shareImage1, shareImage2, shareImage3, shareImage4, shareImage5, shareImage6, shareImage7, shareImage8, shareImage9]
|
||||
// 我知道有些有点怪,但怪的有趣(狗头),powered by chatGPT
|
||||
const PROMOTE_LIST = [
|
||||
{ word: '快人一手', sentence: '速度快得就像比别人多长了一只手' },
|
||||
@@ -54,7 +60,7 @@ export default function SharePicDialog({ showState, setShowState, randomChoose }
|
||||
|
||||
const dialogFocusRef = useRef<HTMLButtonElement>(null)
|
||||
|
||||
const Pic = useMemo(() => PIC_LIST[Math.floor(randomChoose.picRandom * PIC_LIST.length)], [randomChoose.picRandom])
|
||||
const shareImage = useMemo(() => PIC_LIST[Math.floor(randomChoose.picRandom * PIC_LIST.length)], [randomChoose.picRandom])
|
||||
const promote = useMemo(() => PROMOTE_LIST[Math.floor(randomChoose.promoteRandom * PROMOTE_LIST.length)], [randomChoose.promoteRandom])
|
||||
|
||||
useEffect(() => {
|
||||
@@ -164,7 +170,7 @@ export default function SharePicDialog({ showState, setShowState, randomChoose }
|
||||
<div className="mt-1 text-xs font-normal text-gray-400">为键盘工作者设计的单词与肌肉记忆锻炼软件</div>
|
||||
</div>
|
||||
<div className="absolute -right-9 bottom-10 ">
|
||||
<Pic className="w-48" />
|
||||
<img src={shareImage} className="w-48" width={186} height={122} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -196,7 +202,7 @@ function KeyboardKey({ char }: { char: string }) {
|
||||
return (
|
||||
<div className="relative -mx-1 h-18 w-18">
|
||||
<div className="absolute bottom-0 left-0 right-0 top-0">
|
||||
<KeyboardSvg className="h-full w-full" />
|
||||
<img src={keyboardSvg} className="h-full w-full" />
|
||||
</div>
|
||||
<div className="absolute left-0 right-0 top-2.5 flex items-center justify-center">
|
||||
<span className="text-base font-normal text-white" style={{ fontSize: '20px', transform: 'rotateX(30deg) ' }}>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { useAtom, useAtomValue } from 'jotai'
|
||||
import cet4 from '@/assets/CET4_T.json'
|
||||
import { shuffle } from 'lodash'
|
||||
import shuffle from '@/utils/shuffle'
|
||||
import { useMemo } from 'react'
|
||||
import useSWR from 'swr'
|
||||
import { Word } from '@/typings/index'
|
||||
@@ -21,30 +20,61 @@ export function useWordList(): UseWordListResult {
|
||||
const [currentChapter, setCurrentChapter] = useAtom(currentChapterAtom)
|
||||
const randomConfig = useAtomValue(randomConfigAtom)
|
||||
|
||||
const isFirstChapter = currentDictInfo.id === 'cet4' && currentChapter === 0
|
||||
|
||||
// Reset current chapter to 0, when currentChapter is greater than chapterCount.
|
||||
if (currentChapter >= currentDictInfo.chapterCount) {
|
||||
setCurrentChapter(0)
|
||||
}
|
||||
|
||||
const { data: wordList, error, isLoading } = useSWR([currentDictInfo.url, currentDictInfo.id], ([url, id]) => wordListFetcher(url, id))
|
||||
const { data: wordList, error, isLoading } = useSWR(currentDictInfo.url, wordListFetcher)
|
||||
|
||||
const words = useMemo(
|
||||
() => (wordList ? wordList.slice(currentChapter * CHAPTER_LENGTH, (currentChapter + 1) * CHAPTER_LENGTH) : []),
|
||||
[wordList, currentChapter],
|
||||
() =>
|
||||
isFirstChapter
|
||||
? firstChapter
|
||||
: wordList
|
||||
? wordList.slice(currentChapter * CHAPTER_LENGTH, (currentChapter + 1) * CHAPTER_LENGTH)
|
||||
: [],
|
||||
[isFirstChapter, wordList, currentChapter],
|
||||
)
|
||||
const shuffleWords = useMemo(() => (randomConfig.isOpen ? shuffle(words) : words), [randomConfig.isOpen, words])
|
||||
|
||||
return { words: wordList === undefined ? undefined : shuffleWords, isLoading, error }
|
||||
}
|
||||
|
||||
async function wordListFetcher(url: string, id: string): Promise<Word[]> {
|
||||
async function wordListFetcher(url: string): Promise<Word[]> {
|
||||
const URL_PREFIX: string = REACT_APP_DEPLOY_ENV === 'pages' ? '/qwerty-learner' : ''
|
||||
|
||||
if (id === 'cet4') {
|
||||
return cet4
|
||||
} else {
|
||||
const response = await fetch(URL_PREFIX + url)
|
||||
const words: Word[] = await response.json()
|
||||
return words
|
||||
}
|
||||
const response = await fetch(URL_PREFIX + url)
|
||||
const words: Word[] = await response.json()
|
||||
return words
|
||||
}
|
||||
|
||||
const firstChapter = [
|
||||
{ name: 'cancel', trans: ['取消, 撤销; 删去'], usphone: "'kænsl", ukphone: "'kænsl" },
|
||||
{ name: 'explosive', trans: ['爆炸的; 极易引起争论的', '炸药'], usphone: "ɪk'splosɪv; ɪk'splozɪv", ukphone: "ɪk'spləusɪv" },
|
||||
{ name: 'numerous', trans: ['众多的'], usphone: "'numərəs", ukphone: "'njuːmərəs" },
|
||||
{ name: 'govern', trans: ['居支配地位, 占优势', '统治,治理,支配'], usphone: "'ɡʌvɚn", ukphone: "'gʌvn" },
|
||||
{ name: 'analyse', trans: ['分析; 分解; 解析'], usphone: "'æn(ə)laɪz", ukphone: "'ænəlaɪz" },
|
||||
{ name: 'discourage', trans: ['使泄气, 使灰心; 阻止, 劝阻'], usphone: "dɪs'kɝɪdʒ", ukphone: "dɪs'kʌrɪdʒ" },
|
||||
{ name: 'resemble', trans: ['像, 类似于'], usphone: "rɪ'zɛmbl", ukphone: "rɪ'zembl" },
|
||||
{
|
||||
name: 'remote',
|
||||
trans: ['遥远的; 偏僻的; 关系疏远的; 脱离的; 微乎其微的; 孤高的, 冷淡的; 遥控的'],
|
||||
usphone: "rɪ'mot",
|
||||
ukphone: "rɪ'məut",
|
||||
},
|
||||
{ name: 'salary', trans: ['薪金, 薪水'], usphone: "'sæləri", ukphone: "'sæləri" },
|
||||
{ name: 'pollution', trans: ['污染, 污染物'], usphone: "pə'luʃən", ukphone: "pə'luːʃn" },
|
||||
{ name: 'pretend', trans: ['装作, 假装'], usphone: "prɪ'tɛnd", ukphone: "prɪ'tend" },
|
||||
{ name: 'kettle', trans: ['水壶'], usphone: "'kɛtl", ukphone: "'ketl" },
|
||||
{ name: 'wreck', trans: ['失事;残骸;精神或身体已垮的人', '破坏'], usphone: 'rɛk', ukphone: 'rek' },
|
||||
{ name: 'drunk', trans: ['醉的; 陶醉的'], usphone: 'drʌŋk', ukphone: 'drʌŋk' },
|
||||
{ name: 'calculate', trans: ['计算; 估计; 计划'], usphone: "'kælkjulet", ukphone: "'kælkjuleɪt" },
|
||||
{ name: 'persistent', trans: ['坚持的, 不屈不挠的; 持续不断的; 反复出现的'], usphone: "pə'zɪstənt", ukphone: "pə'sɪstənt" },
|
||||
{ name: 'sake', trans: ['缘故, 理由'], usphone: 'sek', ukphone: 'seɪk' },
|
||||
{ name: 'conceal', trans: ['把…隐藏起来, 掩盖, 隐瞒'], usphone: "kən'sil", ukphone: "kən'siːl" },
|
||||
{ name: 'audience', trans: ['听众, 观众, 读者'], usphone: "'ɔdɪəns", ukphone: "'ɔːdiəns" },
|
||||
{ name: 'meanwhile', trans: ['与此同时'], usphone: "'minwaɪl", ukphone: "'miːnwaɪl" },
|
||||
]
|
||||
|
||||
@@ -10,7 +10,7 @@ export const dictionaries: DictionaryResource[] = [
|
||||
name: 'CET-4',
|
||||
description: '大学英语四级词库',
|
||||
category: '英语学习',
|
||||
url: '',
|
||||
url: '/dicts/CET4_T.json',
|
||||
length: 2607,
|
||||
language: 'en',
|
||||
},
|
||||
|
||||
12
src/utils/clamp.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
export default function clamp(number: number, lower: number, upper: number): number {
|
||||
number = +number
|
||||
lower = +lower
|
||||
upper = +upper
|
||||
lower = lower === lower ? lower : 0
|
||||
upper = upper === upper ? upper : 0
|
||||
if (number === number) {
|
||||
number = number <= upper ? number : upper
|
||||
number = number >= lower ? number : lower
|
||||
}
|
||||
return number
|
||||
}
|
||||
11
src/utils/groupBy.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
export default function groupBy<T>(elements: T[], iteratee: (value: T) => string) {
|
||||
return elements.reduce<Record<string, T[]>>((result, value) => {
|
||||
const key = iteratee(value)
|
||||
if (Object.prototype.hasOwnProperty.call(result, key)) {
|
||||
result[key].push(value)
|
||||
} else {
|
||||
result[key] = [value]
|
||||
}
|
||||
return result
|
||||
}, {})
|
||||
}
|
||||
2
src/utils/noop.ts
Normal file
@@ -0,0 +1,2 @@
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
||||
export default function noop(): void {}
|
||||
35
src/utils/range.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
const INFINITY = 1 / 0
|
||||
const MAX_INTEGER = 1.7976931348623157e308
|
||||
|
||||
function toFinite(value: number): number {
|
||||
if (value === INFINITY || value === -INFINITY) {
|
||||
const sign = value < 0 ? -1 : 1
|
||||
return sign * MAX_INTEGER
|
||||
}
|
||||
return value === value ? value : 0
|
||||
}
|
||||
|
||||
function baseRange(start: number, end: number, step: number): number[] {
|
||||
let index = -1
|
||||
let length = Math.max(Math.ceil((end - start) / (step || 1)), 0)
|
||||
const result = new Array<number>(length)
|
||||
|
||||
while (length--) {
|
||||
result[++index] = start
|
||||
start += step
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
export default function range(start: number, end: number, step: number): number[] {
|
||||
// Ensure the sign of `-0` is preserved.
|
||||
start = toFinite(start)
|
||||
if (end === undefined) {
|
||||
end = start
|
||||
start = 0
|
||||
} else {
|
||||
end = toFinite(end)
|
||||
}
|
||||
step = step === undefined ? (start < end ? 1 : -1) : toFinite(step)
|
||||
return baseRange(start, end, step)
|
||||
}
|
||||
16
src/utils/shuffle.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
export default function shuffle<T>(array: T[]): T[] {
|
||||
const length = array == null ? 0 : array.length
|
||||
if (!length) {
|
||||
return []
|
||||
}
|
||||
let index = -1
|
||||
const lastIndex = length - 1
|
||||
const result = Array.from(array)
|
||||
while (++index < length) {
|
||||
const rand = index + Math.floor(Math.random() * (lastIndex - index + 1))
|
||||
const value = result[rand]
|
||||
result[rand] = result[index]
|
||||
result[index] = value
|
||||
}
|
||||
return result
|
||||
}
|
||||
@@ -15,7 +15,7 @@
|
||||
"isolatedModules": true,
|
||||
"noEmit": true,
|
||||
"jsx": "react-jsx",
|
||||
"types": ["vite-plugin-svgr/client", "node"],
|
||||
"types": ["node"],
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@/*": ["src/*"]
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import { visualizer } from 'rollup-plugin-visualizer'
|
||||
import { defineConfig, type PluginOption } from 'vite'
|
||||
import react from '@vitejs/plugin-react'
|
||||
import jotaiDebugLabel from 'jotai/babel/plugin-debug-label'
|
||||
import jotaiReactRefresh from 'jotai/babel/plugin-react-refresh'
|
||||
import path from 'node:path'
|
||||
import svgr from 'vite-plugin-svgr'
|
||||
import { getLastCommit } from 'git-last-commit'
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
@@ -12,9 +12,11 @@ export default defineConfig(async () => {
|
||||
return getLastCommit((err, commit) => (err ? 'unknown' : resolve(commit.shortHash)))
|
||||
})
|
||||
return {
|
||||
plugins: [react({ babel: { plugins: [jotaiDebugLabel, jotaiReactRefresh] } }), svgr()],
|
||||
plugins: [react({ babel: { plugins: [jotaiDebugLabel, jotaiReactRefresh] } }), visualizer() as PluginOption],
|
||||
build: {
|
||||
minify: true,
|
||||
outDir: 'build',
|
||||
sourcemap: true,
|
||||
},
|
||||
define: {
|
||||
REACT_APP_DEPLOY_ENV: JSON.stringify(process.env.REACT_APP_DEPLOY_ENV),
|
||||
|
||||
184
yarn.lock
@@ -27,7 +27,7 @@
|
||||
resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298"
|
||||
integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==
|
||||
|
||||
"@babel/core@^7.16.0", "@babel/core@^7.19.6", "@babel/core@^7.20.12":
|
||||
"@babel/core@^7.16.0", "@babel/core@^7.20.12":
|
||||
version "7.21.0"
|
||||
resolved "https://registry.npmmirror.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13"
|
||||
integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==
|
||||
@@ -1479,103 +1479,11 @@
|
||||
resolved "https://registry.npmmirror.com/@remix-run/router/-/router-1.3.3.tgz#d6d531d69c0fa3a44fda7dc00b20d49b44549164"
|
||||
integrity sha512-YRHie1yQEj0kqqCTCJEfHqYSSNlZQ696QJG+MMiW4mxSl9I0ojz/eRhJS4fs88Z5i6D1SmoF9d3K99/QOhI8/w==
|
||||
|
||||
"@rollup/pluginutils@^5.0.2":
|
||||
version "5.0.2"
|
||||
resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33"
|
||||
integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==
|
||||
dependencies:
|
||||
"@types/estree" "^1.0.0"
|
||||
estree-walker "^2.0.2"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
"@rushstack/eslint-patch@^1.1.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmmirror.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728"
|
||||
integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==
|
||||
|
||||
"@svgr/babel-plugin-add-jsx-attribute@^6.5.1":
|
||||
version "6.5.1"
|
||||
resolved "https://registry.npmmirror.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba"
|
||||
integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==
|
||||
|
||||
"@svgr/babel-plugin-remove-jsx-attribute@*":
|
||||
version "6.5.0"
|
||||
resolved "https://registry.npmmirror.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.5.0.tgz#652bfd4ed0a0699843585cda96faeb09d6e1306e"
|
||||
integrity sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==
|
||||
|
||||
"@svgr/babel-plugin-remove-jsx-empty-expression@*":
|
||||
version "6.5.0"
|
||||
resolved "https://registry.npmmirror.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.5.0.tgz#4b78994ab7d39032c729903fc2dd5c0fa4565cb8"
|
||||
integrity sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==
|
||||
|
||||
"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1":
|
||||
version "6.5.1"
|
||||
resolved "https://registry.npmmirror.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60"
|
||||
integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==
|
||||
|
||||
"@svgr/babel-plugin-svg-dynamic-title@^6.5.1":
|
||||
version "6.5.1"
|
||||
resolved "https://registry.npmmirror.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4"
|
||||
integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==
|
||||
|
||||
"@svgr/babel-plugin-svg-em-dimensions@^6.5.1":
|
||||
version "6.5.1"
|
||||
resolved "https://registry.npmmirror.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217"
|
||||
integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==
|
||||
|
||||
"@svgr/babel-plugin-transform-react-native-svg@^6.5.1":
|
||||
version "6.5.1"
|
||||
resolved "https://registry.npmmirror.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305"
|
||||
integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==
|
||||
|
||||
"@svgr/babel-plugin-transform-svg-component@^6.5.1":
|
||||
version "6.5.1"
|
||||
resolved "https://registry.npmmirror.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250"
|
||||
integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==
|
||||
|
||||
"@svgr/babel-preset@^6.5.1":
|
||||
version "6.5.1"
|
||||
resolved "https://registry.npmmirror.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828"
|
||||
integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==
|
||||
dependencies:
|
||||
"@svgr/babel-plugin-add-jsx-attribute" "^6.5.1"
|
||||
"@svgr/babel-plugin-remove-jsx-attribute" "*"
|
||||
"@svgr/babel-plugin-remove-jsx-empty-expression" "*"
|
||||
"@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1"
|
||||
"@svgr/babel-plugin-svg-dynamic-title" "^6.5.1"
|
||||
"@svgr/babel-plugin-svg-em-dimensions" "^6.5.1"
|
||||
"@svgr/babel-plugin-transform-react-native-svg" "^6.5.1"
|
||||
"@svgr/babel-plugin-transform-svg-component" "^6.5.1"
|
||||
|
||||
"@svgr/core@^6.5.1":
|
||||
version "6.5.1"
|
||||
resolved "https://registry.npmmirror.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a"
|
||||
integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==
|
||||
dependencies:
|
||||
"@babel/core" "^7.19.6"
|
||||
"@svgr/babel-preset" "^6.5.1"
|
||||
"@svgr/plugin-jsx" "^6.5.1"
|
||||
camelcase "^6.2.0"
|
||||
cosmiconfig "^7.0.1"
|
||||
|
||||
"@svgr/hast-util-to-babel-ast@^6.5.1":
|
||||
version "6.5.1"
|
||||
resolved "https://registry.npmmirror.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2"
|
||||
integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==
|
||||
dependencies:
|
||||
"@babel/types" "^7.20.0"
|
||||
entities "^4.4.0"
|
||||
|
||||
"@svgr/plugin-jsx@^6.5.1":
|
||||
version "6.5.1"
|
||||
resolved "https://registry.npmmirror.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072"
|
||||
integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==
|
||||
dependencies:
|
||||
"@babel/core" "^7.19.6"
|
||||
"@svgr/babel-preset" "^6.5.1"
|
||||
"@svgr/hast-util-to-babel-ast" "^6.5.1"
|
||||
svg-parser "^2.0.4"
|
||||
|
||||
"@tailwindcss/postcss7-compat@^2.2.17":
|
||||
version "2.2.17"
|
||||
resolved "https://registry.npmmirror.com/@tailwindcss/postcss7-compat/-/postcss7-compat-2.2.17.tgz#dc78f3880a2af84163150ff426a39e42b9ae8922"
|
||||
@@ -1617,11 +1525,6 @@
|
||||
resolve "^1.20.0"
|
||||
tmp "^0.2.1"
|
||||
|
||||
"@types/estree@^1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
|
||||
integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==
|
||||
|
||||
"@types/file-saver@^2.0.5":
|
||||
version "2.0.5"
|
||||
resolved "https://registry.npmmirror.com/@types/file-saver/-/file-saver-2.0.5.tgz#9ee342a5d1314bb0928375424a2f162f97c310c7"
|
||||
@@ -2200,11 +2103,6 @@ camelcase-css@^2.0.1:
|
||||
resolved "https://registry.npmmirror.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
|
||||
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
|
||||
|
||||
camelcase@^6.2.0:
|
||||
version "6.3.0"
|
||||
resolved "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
|
||||
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
|
||||
|
||||
caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001426, caniuse-lite@^1.0.30001449:
|
||||
version "1.0.30001460"
|
||||
resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001460.tgz#31d2e26f0a2309860ed3eff154e03890d9d851a7"
|
||||
@@ -2289,6 +2187,15 @@ cliui@^7.0.2:
|
||||
strip-ansi "^6.0.0"
|
||||
wrap-ansi "^7.0.0"
|
||||
|
||||
cliui@^8.0.1:
|
||||
version "8.0.1"
|
||||
resolved "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
|
||||
integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
|
||||
dependencies:
|
||||
string-width "^4.2.0"
|
||||
strip-ansi "^6.0.1"
|
||||
wrap-ansi "^7.0.0"
|
||||
|
||||
color-convert@^1.9.0:
|
||||
version "1.9.3"
|
||||
resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
||||
@@ -2504,6 +2411,11 @@ deep-is@^0.1.3:
|
||||
resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
|
||||
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
|
||||
|
||||
define-lazy-prop@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
|
||||
integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
|
||||
|
||||
define-properties@^1.1.3, define-properties@^1.1.4:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5"
|
||||
@@ -2594,11 +2506,6 @@ emoji-regex@^9.2.2:
|
||||
resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
|
||||
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
|
||||
|
||||
entities@^4.4.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.npmmirror.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174"
|
||||
integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==
|
||||
|
||||
errno@^0.1.1:
|
||||
version "0.1.8"
|
||||
resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
|
||||
@@ -2998,11 +2905,6 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
|
||||
resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
|
||||
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
|
||||
|
||||
estree-walker@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
||||
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
||||
|
||||
esutils@^2.0.2:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
|
||||
@@ -3555,7 +3457,7 @@ is-date-object@^1.0.1, is-date-object@^1.0.5:
|
||||
dependencies:
|
||||
has-tostringtag "^1.0.0"
|
||||
|
||||
is-docker@^2.0.0:
|
||||
is-docker@^2.0.0, is-docker@^2.1.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
|
||||
integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
|
||||
@@ -3684,7 +3586,7 @@ is-what@^3.14.1:
|
||||
resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
|
||||
integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
|
||||
|
||||
is-wsl@^2.1.1:
|
||||
is-wsl@^2.1.1, is-wsl@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
|
||||
integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
|
||||
@@ -4232,6 +4134,15 @@ open@^7.3.1:
|
||||
is-docker "^2.0.0"
|
||||
is-wsl "^2.1.1"
|
||||
|
||||
open@^8.4.0:
|
||||
version "8.4.2"
|
||||
resolved "https://registry.npmmirror.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9"
|
||||
integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==
|
||||
dependencies:
|
||||
define-lazy-prop "^2.0.0"
|
||||
is-docker "^2.1.1"
|
||||
is-wsl "^2.2.0"
|
||||
|
||||
optionator@^0.9.1:
|
||||
version "0.9.1"
|
||||
resolved "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
|
||||
@@ -4805,6 +4716,16 @@ rimraf@~2.6.2:
|
||||
dependencies:
|
||||
glob "^7.1.3"
|
||||
|
||||
rollup-plugin-visualizer@^5.9.0:
|
||||
version "5.9.0"
|
||||
resolved "https://registry.npmmirror.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.0.tgz#013ac54fb6a9d7c9019e7eb77eced673399e5a0b"
|
||||
integrity sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==
|
||||
dependencies:
|
||||
open "^8.4.0"
|
||||
picomatch "^2.3.1"
|
||||
source-map "^0.7.4"
|
||||
yargs "^17.5.1"
|
||||
|
||||
rollup@^3.10.0:
|
||||
version "3.18.0"
|
||||
resolved "https://registry.npmmirror.com/rollup/-/rollup-3.18.0.tgz#2354ba63ba66d6a09c652c3ea0dbcd9dad72bbde"
|
||||
@@ -5048,7 +4969,7 @@ string-natural-compare@^3.0.1:
|
||||
resolved "https://registry.npmmirror.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4"
|
||||
integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==
|
||||
|
||||
string-width@^4.1.0, string-width@^4.2.0:
|
||||
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||
@@ -5174,11 +5095,6 @@ supports-preserve-symlinks-flag@^1.0.0:
|
||||
resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
|
||||
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
||||
|
||||
svg-parser@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.npmmirror.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5"
|
||||
integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==
|
||||
|
||||
swr@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.npmmirror.com/swr/-/swr-2.0.4.tgz#e68a5cc2e87b2a7f5f7ebf8a472cea24fc1c5fce"
|
||||
@@ -5451,14 +5367,6 @@ util-deprecate@^1.0.2:
|
||||
resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
|
||||
|
||||
vite-plugin-svgr@^2.4.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.npmmirror.com/vite-plugin-svgr/-/vite-plugin-svgr-2.4.0.tgz#9b14953955e79893ea7718089b9777a494e38fc6"
|
||||
integrity sha512-q+mJJol6ThvqkkJvvVFEndI4EaKIjSI0I3jNFgSoC9fXAz1M7kYTVUin8fhUsFojFDKZ9VHKtX6NXNaOLpbsHA==
|
||||
dependencies:
|
||||
"@rollup/pluginutils" "^5.0.2"
|
||||
"@svgr/core" "^6.5.1"
|
||||
|
||||
vite@^4.1.1:
|
||||
version "4.1.4"
|
||||
resolved "https://registry.npmmirror.com/vite/-/vite-4.1.4.tgz#170d93bcff97e0ebc09764c053eebe130bfe6ca0"
|
||||
@@ -5579,6 +5487,11 @@ yargs-parser@^20.2.2:
|
||||
resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
|
||||
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
|
||||
|
||||
yargs-parser@^21.1.1:
|
||||
version "21.1.1"
|
||||
resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
|
||||
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
|
||||
|
||||
yargs@^16.2.0:
|
||||
version "16.2.0"
|
||||
resolved "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
|
||||
@@ -5592,6 +5505,19 @@ yargs@^16.2.0:
|
||||
y18n "^5.0.5"
|
||||
yargs-parser "^20.2.2"
|
||||
|
||||
yargs@^17.5.1:
|
||||
version "17.7.1"
|
||||
resolved "https://registry.npmmirror.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967"
|
||||
integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==
|
||||
dependencies:
|
||||
cliui "^8.0.1"
|
||||
escalade "^3.1.1"
|
||||
get-caller-file "^2.0.5"
|
||||
require-directory "^2.1.1"
|
||||
string-width "^4.2.3"
|
||||
y18n "^5.0.5"
|
||||
yargs-parser "^21.1.1"
|
||||
|
||||
yocto-queue@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||
|
||||