From 12023c588d5751ce4635bea6760438418fdce1a3 Mon Sep 17 00:00:00 2001 From: Izan Gil <66965250+SrIzan10@users.noreply.github.com> Date: Wed, 27 Dec 2023 23:16:27 +0100 Subject: [PATCH] feat: update checker, snowflakes and turkish translation Co-authored-by: xxDeveloper --- electron/index.ts | 35 +++++++-------- electron/updateChecker.ts | 27 ++++++++++++ electron/utils/getPlatform.ts | 13 ++++++ index.html | 2 +- locales/en.json | 4 ++ locales/es.json | 4 ++ locales/tr.json | 40 ++++++++++++++++++ package.json | 13 +++--- src/LanguageSelector.tsx | 1 + src/NewUpdate.tsx | 60 ++++++++++++++++++++++++++ src/SnowfallDecember.tsx | 6 +++ src/main.tsx | 25 ++++++----- yarn.lock | 80 ++++++++++++++++++++++++++++++++--- 13 files changed, 265 insertions(+), 45 deletions(-) create mode 100644 electron/updateChecker.ts create mode 100644 electron/utils/getPlatform.ts create mode 100644 locales/tr.json create mode 100644 src/NewUpdate.tsx create mode 100644 src/SnowfallDecember.tsx diff --git a/electron/index.ts b/electron/index.ts index 4939b91..1a5eb47 100644 --- a/electron/index.ts +++ b/electron/index.ts @@ -1,17 +1,19 @@ import * as path from 'node:path' -import { app, BrowserWindow, dialog, ipcMain } from 'electron'; +import { app, BrowserWindow, dialog, ipcMain, ipcRenderer } from 'electron'; import * as colorette from 'colorette'; import * as fs from 'node:fs' import * as os from 'node:os' import { exec, spawn } from 'node:child_process'; +import getPlatform from './utils/getPlatform.js'; +import updateChecker from './updateChecker.js'; -function createWindow() { +async function createWindow() { const mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, - contextIsolation: false + contextIsolation: false, }, icon: './icons/icon.png', show: false, @@ -24,8 +26,16 @@ function createWindow() { mainWindow.loadURL('http://localhost:5173'); } - mainWindow.on('ready-to-show', () => { + mainWindow.on('ready-to-show', async () => { mainWindow.show(); + + ipcMain.on('updateAvailable', async (event) => { + const checkUpdates = await updateChecker() + if (checkUpdates) { + event.reply('updateAvailableResponse', checkUpdates) + } + }) + }); mainWindow.on('page-title-updated', function (e) { @@ -122,22 +132,7 @@ app.on('activate', () => { } }); -let currentOS: string -switch (process.platform) { - case 'linux': - currentOS = 'linux' - break; - case 'win32': - currentOS = 'windows' - break; - case 'darwin': - currentOS = 'macOS' - break; - default: - // defaulting for linux (most probable command syntax) - currentOS = 'linux' - break; -} +const currentOS = getPlatform() const asciiart = ` .:-=-:. .:=+++++++++=-. diff --git a/electron/updateChecker.ts b/electron/updateChecker.ts new file mode 100644 index 0000000..68e76d9 --- /dev/null +++ b/electron/updateChecker.ts @@ -0,0 +1,27 @@ +import { app } from "electron" +import getPlatform from "./utils/getPlatform.js" + +export default async function updateChecker() { + const currentOS = getPlatform() + const getLatest = await fetch('https://api.github.com/repos/sern-handler/gui/releases/latest') + .then(res => res.json()) + + const dlUrl = getLatest.assets.map((asset) => { + switch (asset.content_type) { + case 'application/x-msdownload': + return 'windows' + case 'application/vnd.appimage': + return 'linux' + case 'application/x-apple-diskimage': + return 'macOS' + default: + return null + } + }) + + if (`v${app.getVersion()}` !== getLatest.tag_name) { + return { version: getLatest.tag_name as string, url: getLatest.html_url as string } + } else { + return false + } +} \ No newline at end of file diff --git a/electron/utils/getPlatform.ts b/electron/utils/getPlatform.ts new file mode 100644 index 0000000..3bec1b2 --- /dev/null +++ b/electron/utils/getPlatform.ts @@ -0,0 +1,13 @@ +export default function getPlatform() { + switch (process.platform) { + case 'linux': + return 'linux' + case 'win32': + return 'windows' + case 'darwin': + return 'macOS' + default: + // defaulting for linux (most probable command syntax) + return 'linux' + } +} \ No newline at end of file diff --git a/index.html b/index.html index cd89b2e..b4dd06c 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - Vite + React + TS + sern diff --git a/locales/en.json b/locales/en.json index 53524fe..1cb4202 100644 --- a/locales/en.json +++ b/locales/en.json @@ -29,6 +29,10 @@ "COMMENT_FOR_TRANSLATOR_2": "the next string is used to change the text 'with' in the sentence 'with '", "with": "with" }, + "updateChecker": { + "updateAvailable": "Update {{version}} is available!", + "viewRelease": "View release" + }, "footer": { "COMMENT_FOR_TRANSLATOR": "Keep all the strings here as lowercase. It kinda gives a good vibe to the text :D", "web": "front page", diff --git a/locales/es.json b/locales/es.json index 49d7453..3dbf744 100644 --- a/locales/es.json +++ b/locales/es.json @@ -29,6 +29,10 @@ "COMMENT_FOR_TRANSLATOR_2": "El texto de abajo sirve para reemplazar 'with' en las opciones de plantilla con lo de abajo. No cambiar.", "with": "con" }, + "updateChecker": { + "updateAvailable": "La versión {{version}} está disponible!", + "viewRelease": "Ver actualización" + }, "footer": { "COMMENT_FOR_TRANSLATOR": "Mantén todos los textos aquí en minúsculas. Le dan un buen vibe al texto :D", "web": "web", diff --git a/locales/tr.json b/locales/tr.json new file mode 100644 index 0000000..46a858e --- /dev/null +++ b/locales/tr.json @@ -0,0 +1,40 @@ +{ + "credits": { + "propsTo": "@xxDeveloper (translation)", + "btw": "All COMMENT_FOR_TRANSLATOR keys are comments that help you how to write translations. Follow these so you get approved faster." + }, + "translation": { + "functionalityCard": { + "init": { + "description": "Yeni bir proje oluşturun" + }, + "plugins": { + "description": "Proje eklentilerini yönetin" + } + }, + "initModal": { + "openModalButton": "Başla", + "projectName": "Proje ismi", + "selectTemplate": "Şablon seç", + "couldntFetchTemplates": "Şablonlar yüklenemedi, yenilemeyi deneyin (CTRL+R) ve online oludğunuzdan emin olun", + "installPackagesCheckbox": "Paketleri ben devam ederken yükle", + "selectPackageManager": "Paket yöneticisini seçin", + "chooseDirectoryButton": "Klasör seçin", + "selectedDirectory": "Seçili klasör:", + "goButton": "Gidelim!", + "commandSuccessful": "Komut başarılı!", + "commandFailed": "Komut başarsız oldu!", + "COMMENT_FOR_TRANSLATOR": "burada büyük harf kullan", + "openLogFile": "LOG dosyasını aç", + "COMMENT_FOR_TRANSLATOR_2": "sonraki dize, 'with ' cümlesinde 'with'i değiştirmek için kullanılır'", + "with": "ile birlikte" + }, + "footer": { + "COMMENT_FOR_TRANSLATOR": "Burada yazılarında küçük harf kullan. İyi vibe veriyor :D", + "COMMENT_FOR_TRANSLATOR_2": "Onları şu anki halleriyle tut. Sonuçta onlar marka, dilimizde markalar pek farklı şekilde anılmıyor", + "web": "ön sayfa", + "github": "github", + "discord": "discord" + } + } +} \ No newline at end of file diff --git a/package.json b/package.json index 0303669..bcd2992 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,16 @@ { "name": "sern-gui", "private": true, - "version": "0.1.0-alpha", + "version": "0.2.0", "main": "./dist/index.js", "homepage": "./", "scripts": { - "start": "vite", "build": "tsc && vite build", "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview", - "electron": "nodemon --watch electron/ --exec \"swc ./electron/index.ts -d ./dist && npx electron .\" electron/index.ts", + "start": "vite", + "electron": "nodemon --watch electron/ --exec \"swc ./electron/ -d ./dist && npx electron .\" electron/index.ts", + "dev": "concurrently \"yarn start\" \"yarn electron\"", "electron-build": "swc ./electron/index.ts -d ./dist", "build-electron": "yarn build && yarn electron-build && electron-builder --linux --windows", "build-electron-linux": "yarn build && yarn electron-build && electron-builder --linux", @@ -29,7 +30,8 @@ "i18next": "^23.4.4", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-i18next": "^13.1.2" + "react-i18next": "^13.1.2", + "react-snowfall": "^1.2.1" }, "devDependencies": { "@swc/cli": "^0.1.62", @@ -39,7 +41,8 @@ "@typescript-eslint/eslint-plugin": "^5.61.0", "@typescript-eslint/parser": "^5.61.0", "@vitejs/plugin-react-swc": "^3.3.2", - "electron": "^26.2.1", + "concurrently": "^8.2.2", + "electron": "^28.1.0", "electron-builder": "^24.4.0", "eslint": "^8.44.0", "eslint-plugin-react-hooks": "^4.6.0", diff --git a/src/LanguageSelector.tsx b/src/LanguageSelector.tsx index e1ef7eb..8ed401d 100644 --- a/src/LanguageSelector.tsx +++ b/src/LanguageSelector.tsx @@ -32,6 +32,7 @@ export default function LanguageSelector() { > 🇺🇸 🇪🇸 + 🇹🇷 diff --git a/src/NewUpdate.tsx b/src/NewUpdate.tsx new file mode 100644 index 0000000..c179db1 --- /dev/null +++ b/src/NewUpdate.tsx @@ -0,0 +1,60 @@ +import { useEffect, useState } from 'react'; +const { shell, ipcRenderer } = window.require('electron'); +import { useTranslation } from 'react-i18next'; +import React from 'react'; +import { Snackbar, Alert, Button, IconButton } from '@mui/material'; +import CloseIcon from '@mui/icons-material/Close'; + +const NewUpdate = () => { + const { t } = useTranslation('translation', { keyPrefix: 'updateChecker' }); + const [updateArgs, setUpdateArgs] = useState(null); + const [snackbarOpen, setSnackbarOpen] = React.useState(true); + const handleSnackbarClose = () => setSnackbarOpen(false); + + useEffect(() => { + ipcRenderer.send('updateAvailable'); + + ipcRenderer.on('updateAvailableResponse', (_event, args) => { + setUpdateArgs(args); + console.log('0gsafga') + ipcRenderer.removeAllListeners('updateAvailableResponse'); + }); + }, []); + + const snackbarAction = ( + + + + + + + ); + + return ( +
+ {updateArgs && ( +
+ + + {t('updateAvailable', { version: updateArgs.version })} + + +
+ )} +
+ ); +}; + +export default NewUpdate; + +interface NewUpdateArgs { + version: string; + url: string; +} \ No newline at end of file diff --git a/src/SnowfallDecember.tsx b/src/SnowfallDecember.tsx new file mode 100644 index 0000000..4009497 --- /dev/null +++ b/src/SnowfallDecember.tsx @@ -0,0 +1,6 @@ +import Snowfall from "react-snowfall"; + +export default function SnowfallDecember() { + const time = new Date(); + return (time.getMonth() === 11 || (time.getMonth() === 0 && time.getDate() <= 7)) && ; +} \ No newline at end of file diff --git a/src/main.tsx b/src/main.tsx index 264e3c5..c18a4ec 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import * as ReactDOM from 'react-dom/client'; import './main.css'; import App from './App'; @@ -6,17 +5,20 @@ import i18n from "i18next"; import { initReactI18next } from "react-i18next"; import enLocale from '../locales/en.json' assert { type: "json" }; import esLocale from '../locales/es.json' assert { type: "json" }; +import trLocale from '../locales/tr.json' assert { type: "json" }; +import SnowfallDecember from './SnowfallDecember.js'; +import NewUpdate from './NewUpdate.js'; i18n - .use(initReactI18next) // passes i18n down to react-i18next + .use(initReactI18next) .init({ resources: { en: enLocale, - es: esLocale + es: esLocale, + tr: trLocale }, lng: window.localStorage.getItem('lang') || 'en', fallbackLng: "en", - interpolation: { escapeValue: false } @@ -24,12 +26,9 @@ i18n const root = ReactDOM.createRoot(document.getElementById('root')!); root.render( - - - -); - -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -// reportWebVitals(); +
+ + + +
+); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index ecce5f3..005ae51 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1562,6 +1562,21 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +concurrently@^8.2.2: + version "8.2.2" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-8.2.2.tgz#353141985c198cfa5e4a3ef90082c336b5851784" + integrity sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg== + dependencies: + chalk "^4.1.2" + date-fns "^2.30.0" + lodash "^4.17.21" + rxjs "^7.8.1" + shell-quote "^1.8.1" + spawn-command "0.0.2" + supports-color "^8.1.1" + tree-kill "^1.2.2" + yargs "^17.7.2" + config-file-ts@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/config-file-ts/-/config-file-ts-0.2.4.tgz#6c0741fbe118a7cf786c65f139030f0448a2cc99" @@ -1633,6 +1648,13 @@ csstype@^3.0.2, csstype@^3.1.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== +date-fns@^2.30.0: + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" + debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -1814,10 +1836,10 @@ electron-publish@24.4.0: lazy-val "^1.0.5" mime "^2.5.2" -electron@^26.2.1: - version "26.2.1" - resolved "https://registry.yarnpkg.com/electron/-/electron-26.2.1.tgz#2ef86c03d9753647622bb9a53c4213fb290e5eac" - integrity sha512-SNT24Cf/wRvfcFZQoERXjzswUlg5ouqhIuA2t9x2L7VdTn+2Jbs0QXRtOfzcnOV/raVMz3e8ICyaU2GGeciKLg== +electron@^28.1.0: + version "28.1.0" + resolved "https://registry.yarnpkg.com/electron/-/electron-28.1.0.tgz#9de1ecdaafcb0ec5753827f14dfb199e6c84545e" + integrity sha512-82Y7o4PSWPn1o/aVwYPsgmBw6Gyf2lVHpaBu3Ef8LrLWXxytg7ZRZr/RtDqEMOzQp3+mcuy3huH84MyjdmP50Q== dependencies: "@electron/get" "^2.0.0" "@types/node" "^18.11.18" @@ -2826,7 +2848,7 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.15: +lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -3434,6 +3456,11 @@ react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" +react-fast-compare@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" + integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== + react-i18next@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-13.1.2.tgz#dbb1b18c364295af2a9072333ee4e0b43cbc2da8" @@ -3452,6 +3479,13 @@ react-is@^18.2.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== +react-snowfall@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/react-snowfall/-/react-snowfall-1.2.1.tgz#68cab6a1d05aa7c3211bce96a3a97977ca7dc57f" + integrity sha512-d2UR3nDq3F0DJGaTfJ0QNbBo76UZHtT9wHFj+ePxAl4FgSxWBhxB/Bjn06f5iDBwhgwiZ7CZmv3lwfNvjo6a+w== + dependencies: + react-fast-compare "^3.2.0" + react-transition-group@^4.4.5: version "4.4.5" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" @@ -3591,6 +3625,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +rxjs@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + safe-buffer@5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -3690,6 +3731,11 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shell-quote@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -3792,6 +3838,11 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== +spawn-command@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" + integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== + sprintf-js@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" @@ -3902,6 +3953,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -3973,6 +4031,11 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + trim-repeated@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-2.0.0.tgz#5d60556d6d40d9461b7c7e06c3ac20b6b1d50090" @@ -3992,6 +4055,11 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.1.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -4178,7 +4246,7 @@ yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^17.0.1, yargs@^17.6.2: +yargs@^17.0.1, yargs@^17.6.2, yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==