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==