From e6787567756ad82c77000fea9b16d7eed0a1e7a4 Mon Sep 17 00:00:00 2001 From: Dion Date: Fri, 1 Mar 2024 10:15:39 +0100 Subject: [PATCH 01/30] change default build options --- pipelines/azure/app-ci.yml | 6 ++++++ starskydesktop/package.json | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/pipelines/azure/app-ci.yml b/pipelines/azure/app-ci.yml index b6fce7bb42..72424b5ef7 100644 --- a/pipelines/azure/app-ci.yml +++ b/pipelines/azure/app-ci.yml @@ -124,3 +124,9 @@ stages: inputs: path: '$(Build.SourcesDirectory)/starskydesktop/dist-prod/starsky-mac-x64-desktop.zip' ArtifactName: 'starsky-mac-x64-desktop' + + - task: PublishPipelineArtifact@1 + displayName: 'Publish Artifact: starsky-mac-arm64-desktop' + inputs: + path: '$(Build.SourcesDirectory)/starskydesktop/dist-prod/starsky-mac-x64-desktop.zip' + ArtifactName: 'starsky-mac-arm64-desktop' \ No newline at end of file diff --git a/starskydesktop/package.json b/starskydesktop/package.json index 494a6460d6..50053a7f92 100644 --- a/starskydesktop/package.json +++ b/starskydesktop/package.json @@ -22,8 +22,8 @@ "macwindows": "npm run prod && echo prod-done && electron-builder build --mac zip --windows --publish never", "linux": "npm run prod && electron-builder build --linux --publish never", "dist": "npm run prod && electron-builder build --publish never", - "build:win": "electron-builder build --win", - "build:mac": "electron-builder build --mac", + "build:win": "electron-builder build --win ", + "build:mac": "electron-builder build --mac --x64 true --arm64 true", "build:runtime": "cd ../starsky && pwsh build.ps1 -runtime osx-arm64,osx-x64,win-x64 -ready-to-run -no-tests", "update": "npx --yes npm-check-updates", "update:install": "npx --yes npm-check-updates -u && npm install", @@ -42,16 +42,16 @@ ], "artifactName": "starsky-${os}-${arch}-desktop.${ext}", "mac": { - "minimumSystemVersion": "10.14", + "minimumSystemVersion": "10.15", "electronLanguages": [ "en", - "nl" + "nl", + "de" ], "icon": "src/setup/icons/baseline-searcher-detective-263238__512px.icns", "target": [ { - "target": "dmg", - "arch": "x64" + "target": "dmg" } ], "publish": [] From 9296ef60edb4b2496e43bbb7fe0a91d4a842a1e8 Mon Sep 17 00:00:00 2001 From: Dion van Velde Date: Fri, 1 Mar 2024 10:23:15 +0100 Subject: [PATCH 02/30] Update release-on-tag-netcore-desktop-electron.yml --- ...elease-on-tag-netcore-desktop-electron.yml | 68 +++++++++++++++++-- 1 file changed, 62 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release-on-tag-netcore-desktop-electron.yml b/.github/workflows/release-on-tag-netcore-desktop-electron.yml index 8ec6d5f257..9dc3b2e745 100644 --- a/.github/workflows/release-on-tag-netcore-desktop-electron.yml +++ b/.github/workflows/release-on-tag-netcore-desktop-electron.yml @@ -71,8 +71,8 @@ jobs: name: starsky-tools-slack-notification path: ./starsky-tools/slack-notification - build_mac: - name: Update Mac Desktop app + build_mac_x64: + name: Update Mac Desktop app (x64) runs-on: macos-latest needs: [build_core] steps: @@ -85,7 +85,7 @@ jobs: name: osx-x64 path: ./starsky - - name: Unzip Mac OS bundle + - name: Unzip Mac OS bundle (osx-x64) shell: bash working-directory: ./starsky run: unzip starsky-osx-x64.zip -d osx-x64 @@ -116,13 +116,61 @@ jobs: - name: NpmDist working-directory: ./starskydesktop - run: npm run mac + run: npm run macx64 - name: Upload starsky-mac-x64-desktop as build artifact uses: actions/upload-artifact@v4 with: name: starsky-mac-x64-desktop path: ./starskydesktop/dist-prod/starsky-mac-x64-desktop.dmg + + build_mac_arm64: + name: Update Mac Desktop app (arm64) + runs-on: macos-latest + needs: [build_core] + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Download osx-arm64 as build artifact + uses: actions/download-artifact@v4 + with: + name: osx-arm64 + path: ./starsky + + - name: Unzip Mac OS bundle (osx-arm64) + shell: bash + working-directory: ./starsky + run: unzip starsky-osx-arm64.zip -d osx-arm64 + + - name: Restore rights pm2-restore-x-rights.sh (osx-arm64) + shell: bash + working-directory: ./starsky/osx-arm64 + run: chmod 777 pm2-restore-x-rights.sh + + - name: run pm2-restore-x-rights.sh (osx-arm64) + shell: bash + working-directory: ./starsky/osx-arm64 + run: bash pm2-restore-x-rights.sh + + - name: fix release version (release-version-check) + shell: bash + working-directory: ./starsky-tools/build-tools + run: npm run release-version-check + + - name: NpmCi + working-directory: ./starskydesktop + run: npm ci + + - name: NpmDist + working-directory: ./starskydesktop + run: npm run macarm64 + + - name: Upload starsky-mac-arm64-desktop as build artifact + uses: actions/upload-artifact@v4 + with: + name: starsky-mac-arm64-desktop + path: ./starskydesktop/dist-prod/starsky-mac-arm64-desktop.dmg build_win: name: Update Windows Desktop app @@ -169,7 +217,7 @@ jobs: create_release: name: Create Release - needs: [build_core, build_mac, build_win] + needs: [build_core, build_mac_x64, build_mac_arm64, build_win] runs-on: ubuntu-latest permissions: contents: write @@ -192,6 +240,12 @@ jobs: with: name: starsky-mac-x64-desktop path: ./starskydesktop/dist-prod + + - name: Download starsky-mac-arm64-desktop as build artifact + uses: actions/download-artifact@v4 + with: + name: starsky-mac-arm64-desktop + path: ./starskydesktop/dist-prod - name: Download linux-arm as build artifact uses: actions/download-artifact@v4 @@ -246,6 +300,7 @@ jobs: tag_name: ${{ github.ref }} files: | ./starskydesktop/dist-prod/starsky-mac-x64-desktop.dmg + ./starskydesktop/dist-prod/starsky-mac-arm64-desktop.dmg ./starskydesktop/dist-prod/starsky-win-x64-desktop.exe ./starsky/starsky-linux-arm.zip ./starsky/starsky-linux-arm64.zip @@ -258,7 +313,8 @@ jobs: body: | ## Desktop app versions: _When you are not sure pick the Desktop App_ - - starsky-mac-x64-desktop.dmg - __Starsky Desktop App for Mac OS *12.0* or newer (Intel)__ + - starsky-mac-x64-desktop.dmg - __Starsky Desktop App for Intel, Mac OS *12.0* or newer__ + - starsky-mac-arm64-desktop.dmg - __Starsky Desktop App for Apple silicon, Mac OS *12.0* or newer__ - starsky-win-x64-desktop.exe - __Starsky Desktop App for Windows 10 1607+ or Windows 11 22000+ (Intel 64 bits)__ ## Server versions: From b27aabd050fcdfe983738521c3aae9f329c5c67a Mon Sep 17 00:00:00 2001 From: Dion van Velde Date: Fri, 1 Mar 2024 10:25:54 +0100 Subject: [PATCH 03/30] Update release-on-tag-netcore-desktop-electron.yml --- .github/workflows/release-on-tag-netcore-desktop-electron.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-on-tag-netcore-desktop-electron.yml b/.github/workflows/release-on-tag-netcore-desktop-electron.yml index 9dc3b2e745..c93a0e5734 100644 --- a/.github/workflows/release-on-tag-netcore-desktop-electron.yml +++ b/.github/workflows/release-on-tag-netcore-desktop-electron.yml @@ -374,7 +374,8 @@ jobs: trigger_pipe: runs-on: ubuntu-latest if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - needs: [build_core, build_mac, build_win] + needs: [build_core, build_mac_x64, build_win] + # build_mac_arm64 is not used for end2end tests steps: - name: trigger end2end-ubuntu-ci.yml shell: bash From e83fe4a91d56102cb6fd4c08cdeb7f0c4c64c366 Mon Sep 17 00:00:00 2001 From: Dion van Velde Date: Fri, 1 Mar 2024 10:26:23 +0100 Subject: [PATCH 04/30] Update release-on-tag-netcore-desktop-electron.yml --- .github/workflows/release-on-tag-netcore-desktop-electron.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-on-tag-netcore-desktop-electron.yml b/.github/workflows/release-on-tag-netcore-desktop-electron.yml index c93a0e5734..e75f943223 100644 --- a/.github/workflows/release-on-tag-netcore-desktop-electron.yml +++ b/.github/workflows/release-on-tag-netcore-desktop-electron.yml @@ -374,8 +374,8 @@ jobs: trigger_pipe: runs-on: ubuntu-latest if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - needs: [build_core, build_mac_x64, build_win] - # build_mac_arm64 is not used for end2end tests + needs: [build_core, build_mac_x64, build_win, build_mac_arm64] + # build_mac_arm64 is not used for end2end tests, but it needs to be done steps: - name: trigger end2end-ubuntu-ci.yml shell: bash From 9996e80c39acedec8ca04e90f97296c4c5511d45 Mon Sep 17 00:00:00 2001 From: Dion van Velde Date: Fri, 1 Mar 2024 10:28:24 +0100 Subject: [PATCH 05/30] build_core > build_net --- ...elease-on-tag-netcore-desktop-electron.yml | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/release-on-tag-netcore-desktop-electron.yml b/.github/workflows/release-on-tag-netcore-desktop-electron.yml index e75f943223..73902fada9 100644 --- a/.github/workflows/release-on-tag-netcore-desktop-electron.yml +++ b/.github/workflows/release-on-tag-netcore-desktop-electron.yml @@ -11,9 +11,9 @@ on: jobs: - build_core: + build_net: - name: Build Net Core + name: Build .NET runs-on: ubuntu-latest steps: - name: Checkout code @@ -72,9 +72,9 @@ jobs: path: ./starsky-tools/slack-notification build_mac_x64: - name: Update Mac Desktop app (x64) + name: Build Mac Desktop app (x64) runs-on: macos-latest - needs: [build_core] + needs: [build_net] steps: - name: Checkout code uses: actions/checkout@v4 @@ -125,9 +125,9 @@ jobs: path: ./starskydesktop/dist-prod/starsky-mac-x64-desktop.dmg build_mac_arm64: - name: Update Mac Desktop app (arm64) + name: Build Mac Desktop app (arm64) runs-on: macos-latest - needs: [build_core] + needs: [build_net] steps: - name: Checkout code uses: actions/checkout@v4 @@ -173,9 +173,9 @@ jobs: path: ./starskydesktop/dist-prod/starsky-mac-arm64-desktop.dmg build_win: - name: Update Windows Desktop app + name: Build Windows Desktop app runs-on: windows-latest - needs: [build_core] + needs: [build_net] steps: - name: Checkout code uses: actions/checkout@v4 @@ -217,7 +217,7 @@ jobs: create_release: name: Create Release - needs: [build_core, build_mac_x64, build_mac_arm64, build_win] + needs: [build_net, build_mac_x64, build_mac_arm64, build_win] runs-on: ubuntu-latest permissions: contents: write @@ -374,7 +374,7 @@ jobs: trigger_pipe: runs-on: ubuntu-latest if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - needs: [build_core, build_mac_x64, build_win, build_mac_arm64] + needs: [build_net, build_mac_x64, build_win, build_mac_arm64] # build_mac_arm64 is not used for end2end tests, but it needs to be done steps: - name: trigger end2end-ubuntu-ci.yml From 6169af3f67dd215e395ae6230f850ef11d618bcb Mon Sep 17 00:00:00 2001 From: Dion Date: Fri, 1 Mar 2024 10:51:13 +0100 Subject: [PATCH 06/30] add tag --- starskydesktop/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/starskydesktop/package.json b/starskydesktop/package.json index 50053a7f92..b9927479ab 100644 --- a/starskydesktop/package.json +++ b/starskydesktop/package.json @@ -17,7 +17,8 @@ "test:ci": "npm run jest && npm run lint", "test-ci": "npm run jest && npm run lint", "windows": "npm run prod && electron-builder build --win --publish never", - "mac": "npm run prod && electron-builder build --mac --publish never", + "mac": "npm run prod && electron-builder build --mac --x64 --arm64 --publish never", + "macx64": "npm run prod && electron-builder build --mac --x64 --publish never", "macarm64": "npm run prod && electron-builder build --mac --arm64 true --x64 false --publish never", "macwindows": "npm run prod && echo prod-done && electron-builder build --mac zip --windows --publish never", "linux": "npm run prod && electron-builder build --linux --publish never", From a5781b14f72df3a55ff059bc02ee9721e4876925 Mon Sep 17 00:00:00 2001 From: Dion Date: Fri, 8 Mar 2024 19:25:39 +0100 Subject: [PATCH 07/30] rm & add --- .../app/child-process/setup-child-process.ts | 48 +++++++---- .../app/child-process/spawn-clean-mac-os.ts | 85 +++++++++++++++++++ .../file-selector-window.spec.ts | 84 ------------------ .../file-selector-window.ts | 41 --------- starskydesktop/src/app/global/global.ts | 9 ++ .../src/app/main-window/inject-js.txt | 10 --- 6 files changed, 126 insertions(+), 151 deletions(-) create mode 100644 starskydesktop/src/app/child-process/spawn-clean-mac-os.ts delete mode 100644 starskydesktop/src/app/file-selector-window/file-selector-window.spec.ts delete mode 100644 starskydesktop/src/app/file-selector-window/file-selector-window.ts create mode 100644 starskydesktop/src/app/global/global.ts delete mode 100644 starskydesktop/src/app/main-window/inject-js.txt diff --git a/starskydesktop/src/app/child-process/setup-child-process.ts b/starskydesktop/src/app/child-process/setup-child-process.ts index b3d24ffcf6..42721e0c2d 100644 --- a/starskydesktop/src/app/child-process/setup-child-process.ts +++ b/starskydesktop/src/app/child-process/setup-child-process.ts @@ -4,14 +4,12 @@ import * as fs from "fs"; import * as path from "path"; import * as readline from "readline"; import { GetFreePort } from "../get-free-port/get-free-port"; +import { SharedSettings } from "../global/global"; import logger from "../logger/logger"; import { isPackaged } from "../os-info/is-packaged"; import { childProcessPath } from "./child-process-path"; import { electronCacheLocation } from "./electron-cache-location"; -// eslint-disable-next-line import/no-mutable-exports -export let appPort = 9609; - function spawnChildProcess(appStarskyPath: string) { const starskyChild = spawn(appStarskyPath, { cwd: path.dirname(appStarskyPath), @@ -19,6 +17,10 @@ function spawnChildProcess(appStarskyPath: string) { env: process.env, }); + starskyChild.on("exit", (code) => { + logger.info(`EXIT: CODE: ${code}`); + }); + starskyChild.stdout.on("data", (data: string) => { logger.info(data.toString()); }); @@ -30,7 +32,7 @@ function spawnChildProcess(appStarskyPath: string) { return starskyChild; } -export async function setupChildProcess() { +function CreateTempThumbnailFolders() { const thumbnailTempFolder = path.join(electronCacheLocation(), "thumbnailTempFolder"); if (!fs.existsSync(thumbnailTempFolder)) { fs.mkdirSync(thumbnailTempFolder); @@ -40,26 +42,40 @@ export async function setupChildProcess() { if (!fs.existsSync(tempFolder)) { fs.mkdirSync(tempFolder); } + return { + tempFolder, + thumbnailTempFolder, + }; +} - const appSettingsPath = path.join(electronCacheLocation(), "appsettings.json"); +function EnvHelper(appPort: number) { const databaseConnection = `Data Source=${path.join(electronCacheLocation(), "starsky.db")}`; + const appSettingsPath = path.join(electronCacheLocation(), "appsettings.json"); + const createTempThumbnailFolderResult = CreateTempThumbnailFolders(); - appPort = await GetFreePort(); - - logger.info(`next: port: ${appPort}`); - logger.info(`-appSettingsPath > ${appSettingsPath}`); - - const env = { + return { ASPNETCORE_URLS: `http://localhost:${appPort}`, - app__thumbnailTempFolder: thumbnailTempFolder, - app__tempFolder: tempFolder, + app__thumbnailTempFolder: createTempThumbnailFolderResult.thumbnailTempFolder, + app__tempFolder: createTempThumbnailFolderResult.tempFolder, app__appsettingspath: appSettingsPath, app__NoAccountLocalhost: "true", app__UseLocalDesktop: "true", app__databaseConnection: databaseConnection, + app__ThumbnailGenerationIntervalInMinutes: !isPackaged() ? "-1" : "300", app__AccountRegisterDefaultRole: "Administrator", app__Verbose: !isPackaged() ? "true" : "false", }; +} + +export async function setupChildProcess() { + const appSettingsPath = path.join(electronCacheLocation(), "appsettings.json"); + + (global.shared as SharedSettings).port = await GetFreePort(); + + logger.info(`next: port: ${(global.shared as SharedSettings).port}`); + logger.info(`-appSettingsPath > ${appSettingsPath}`); + + const env = EnvHelper((global.shared as SharedSettings).port); process.env = { ...process.env, ...env }; logger.info("env settings ->"); @@ -80,9 +96,9 @@ export async function setupChildProcess() { logger.info("restart process"); // eslint-disable-next-line @typescript-eslint/no-floating-promises GetFreePort().then((p) => { - appPort = p; - env.ASPNETCORE_URLS = `http://localhost:${appPort}`; - logger.info(`next: port: ${appPort}`); + (global.shared as SharedSettings).port = p; + env.ASPNETCORE_URLS = `http://localhost:${(global.shared as SharedSettings).port}`; + logger.info(`next: port: ${(global.shared as SharedSettings).port}`); starskyChild = spawnChildProcess(appStarskyPath); }); }); diff --git a/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts b/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts new file mode 100644 index 0000000000..d9d082aded --- /dev/null +++ b/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts @@ -0,0 +1,85 @@ +import { spawn } from "child_process"; +import * as path from "path"; +import logger from "../logger/logger"; + +function executeXattrCommand(appStarskyPath: string): Promise { + return new Promise((resolve, reject) => { + const xattrArgs = ["-rd", "com.apple.quarantine", appStarskyPath]; + const xattrOptions = { + detached: true, + env: process.env, + argv0: "xattr", + }; + + const xattrChild = spawn("xattr", xattrArgs, xattrOptions); + + xattrChild.on("error", (err) => { + logger.info("Error occurred while running xattr command:", err); + reject(err); + }); + + xattrChild.on("exit", (code, signal) => { + if (code === 0) { + logger.info("xattr command completed successfully."); + resolve(); + } else { + logger.info(`xattr command exited with code ${code} and signal ${signal}`); + reject(new Error(`xattr command exited with code ${code} and signal ${signal}`)); + } + }); + }); +} + +function executeCodesignCommand(appStarskyPath: string): Promise { + return new Promise((resolve, reject) => { + const args = [ + "--force", + "--deep", + "-s", + "-", // Assuming this is the identity flag for the signing certificate + appStarskyPath, + ]; + + const options = { + cwd: path.dirname(appStarskyPath), + detached: true, + env: process.env, + argv0: "codesign", + }; + + const codeSignSpawn = spawn("codesign", args, options); + + codeSignSpawn.on("exit", (code) => { + logger.info(`code sign EXIT: CODE: ${code}`); + if (code === 0) { + resolve(); + } else { + reject(new Error(`codesign command exited with code ${code}`)); + } + }); + + codeSignSpawn.stdout.on("data", (data: string) => { + logger.info(data.toString()); + }); + + codeSignSpawn.stderr.on("data", (data: string) => { + logger.warn(data.toString()); + }); + }); +} + +export function SpawnCleanMacOs(appStarskyPath: string, processPlatform: string): Promise { + return new Promise((resolve, reject) => { + if (processPlatform !== "darwin") { + resolve(true); + } + + Promise.all([executeXattrCommand(appStarskyPath), executeCodesignCommand(appStarskyPath)]) + .then(() => { + resolve(true); + }) + .catch((err) => { + reject(err); + }); + }); +} diff --git a/starskydesktop/src/app/file-selector-window/file-selector-window.spec.ts b/starskydesktop/src/app/file-selector-window/file-selector-window.spec.ts deleted file mode 100644 index 7572a4d706..0000000000 --- a/starskydesktop/src/app/file-selector-window/file-selector-window.spec.ts +++ /dev/null @@ -1,84 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ - -import { BrowserWindow, dialog } from "electron"; -import { fileSelectorWindow } from "./file-selector-window"; - -jest.mock("electron-settings", () => { - return { - get: () => "data", - __esModule: true, - }; -}); - -jest.mock('electron', () => { - return { - // eslint-disable-next-line object-shorthand, func-names - BrowserWindow: function (_:object) { - return { - setMenu(_2:object) { - }, - close() { - return jest.fn(); - }, - }; - }, - dialog: { - showOpenDialog(_4:object, _5: object) { - return Promise.resolve({ - canceled: false, - filePaths: ["test"], - }); - }, - }, - }; -}); - -describe("create main window", () => { - it("test mock", () => { - const result = new BrowserWindow({}); - result.setMenu(null); - expect(result).toBeDefined(); - }); - - it("test mock 2", async () => { - const result = await dialog.showOpenDialog({} as BrowserWindow, {}); - expect(result).toBeDefined(); - }); - - it("create a new window", async () => { - const result = await fileSelectorWindow(); - - expect(result).toBeDefined(); - }); - - it("canceled", async () => { - jest - .spyOn(dialog, "showOpenDialog") - .mockImplementationOnce(() => Promise.resolve({ canceled: true, filePaths: [""] })); - - let error : string; - try { - await fileSelectorWindow(); - } catch (err : unknown) { - error = err as string; - } - - expect(error).toBe("canceled"); - }); - - it("rejected by openFile", async () => { - jest - .spyOn(dialog, "showOpenDialog") - // eslint-disable-next-line prefer-promise-reject-errors - .mockImplementationOnce(() => Promise.reject("reason_rejected")); - - let error; - try { - await fileSelectorWindow(); - } catch (err: unknown) { - error = err as string; - } - - expect(error).toBe("reason_rejected"); - }); -}); diff --git a/starskydesktop/src/app/file-selector-window/file-selector-window.ts b/starskydesktop/src/app/file-selector-window/file-selector-window.ts deleted file mode 100644 index 57cb65e128..0000000000 --- a/starskydesktop/src/app/file-selector-window/file-selector-window.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { BrowserWindow, dialog } from "electron"; - -export async function fileSelectorWindow(): Promise { - return new Promise((resolve, reject) => { - const newOpenedWindow = new BrowserWindow({ - height: 40, - width: 500, - title: "Open File", - resizable: false, - fullscreen: false, - backgroundColor: "#ccc", - webPreferences: { - devTools: false, - contextIsolation: true, - }, - }); - - // for windows - newOpenedWindow.setMenu(null); - - const selected = dialog.showOpenDialog(newOpenedWindow, { - properties: ["openFile"], - }); - - selected - .then((data) => { - if (data.canceled) { - newOpenedWindow.close(); - // eslint-disable-next-line prefer-promise-reject-errors - reject("canceled"); - return; - } - resolve(data.filePaths); - newOpenedWindow.close(); - }) - .catch((e) => { - newOpenedWindow.close(); - reject(e); - }); - }); -} diff --git a/starskydesktop/src/app/global/global.ts b/starskydesktop/src/app/global/global.ts new file mode 100644 index 0000000000..9c3a295a7e --- /dev/null +++ b/starskydesktop/src/app/global/global.ts @@ -0,0 +1,9 @@ +export interface SharedSettings { + port: number; +} + +global.shared = { + port: -1, +} as SharedSettings; + +export default global; diff --git a/starskydesktop/src/app/main-window/inject-js.txt b/starskydesktop/src/app/main-window/inject-js.txt deleted file mode 100644 index a98cfb58f4..0000000000 --- a/starskydesktop/src/app/main-window/inject-js.txt +++ /dev/null @@ -1,10 +0,0 @@ - newWindow.webContents.on("did-finish-load", () => { - newWindow.webContents - .executeJavaScript( - "window.api.send('APP_VERSION',null); window.api.receive('APP_VERSION')", - true - ) - .then((result) => { - console.log(result); // Will be the JSON object from the fetch call - }); - }); \ No newline at end of file From 8007d8915c1d01f39b7fa68433b353ddcccea2a4 Mon Sep 17 00:00:00 2001 From: Dion Date: Fri, 8 Mar 2024 19:37:09 +0100 Subject: [PATCH 08/30] use global state --- .../app/child-process/setup-child-process.ts | 17 ++++++++++------- .../app/config/get-base-url-from-settings.ts | 15 +++++---------- ...store-warmup-main-window-and-close-splash.ts | 8 +++----- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/starskydesktop/src/app/child-process/setup-child-process.ts b/starskydesktop/src/app/child-process/setup-child-process.ts index 42721e0c2d..5d2711f2d6 100644 --- a/starskydesktop/src/app/child-process/setup-child-process.ts +++ b/starskydesktop/src/app/child-process/setup-child-process.ts @@ -9,6 +9,7 @@ import logger from "../logger/logger"; import { isPackaged } from "../os-info/is-packaged"; import { childProcessPath } from "./child-process-path"; import { electronCacheLocation } from "./electron-cache-location"; +import { SpawnCleanMacOs } from "./spawn-clean-mac-os"; function spawnChildProcess(appStarskyPath: string) { const starskyChild = spawn(appStarskyPath, { @@ -94,13 +95,15 @@ export async function setupChildProcess() { starskyChild.addListener("close", () => { logger.info("restart process"); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - GetFreePort().then((p) => { - (global.shared as SharedSettings).port = p; - env.ASPNETCORE_URLS = `http://localhost:${(global.shared as SharedSettings).port}`; - logger.info(`next: port: ${(global.shared as SharedSettings).port}`); - starskyChild = spawnChildProcess(appStarskyPath); - }); + + SpawnCleanMacOs(appStarskyPath, process.platform) + .then(() => { + starskyChild = spawnChildProcess(appStarskyPath); + starskyChild.addListener("close", () => { + starskyChild = spawnChildProcess(appStarskyPath); + }); + }) + .catch(() => {}); }); readline.emitKeypressEvents(process.stdin); diff --git a/starskydesktop/src/app/config/get-base-url-from-settings.ts b/starskydesktop/src/app/config/get-base-url-from-settings.ts index 2ebd194f14..8b4c86bcf6 100644 --- a/starskydesktop/src/app/config/get-base-url-from-settings.ts +++ b/starskydesktop/src/app/config/get-base-url-from-settings.ts @@ -1,27 +1,22 @@ import * as appConfig from "electron-settings"; -import { appPort } from "../child-process/setup-child-process"; +import global, { SharedSettings } from "../global/global"; import { IlocationUrlSettings } from "./IlocationUrlSettings"; -import { - LocationIsRemoteSettingsKey, - LocationUrlSettingsKey -} from "./location-settings.const"; +import { LocationIsRemoteSettingsKey, LocationUrlSettingsKey } from "./location-settings.const"; export async function GetBaseUrlFromSettings(): Promise { - const isRemoteString = (await appConfig.get( - LocationIsRemoteSettingsKey - )) as string; + const isRemoteString = (await appConfig.get(LocationIsRemoteSettingsKey)) as string; const isRemote = isRemoteString !== "false"; const currentSettings = { location: await appConfig.get(LocationUrlSettingsKey), isValid: null, - isLocal: false + isLocal: false, } as IlocationUrlSettings; const defaultLocalLocation = { isValid: null, isLocal: true, - location: `http://localhost:${appPort}` + location: `http://localhost:${(global.shared as SharedSettings).port}`, } as IlocationUrlSettings; if (isRemote === false) { diff --git a/starskydesktop/src/app/startup/restore-warmup-main-window-and-close-splash.ts b/starskydesktop/src/app/startup/restore-warmup-main-window-and-close-splash.ts index 969a4144f0..24339c17b9 100644 --- a/starskydesktop/src/app/startup/restore-warmup-main-window-and-close-splash.ts +++ b/starskydesktop/src/app/startup/restore-warmup-main-window-and-close-splash.ts @@ -1,13 +1,11 @@ import { BrowserWindow } from "electron"; -import { appPort } from "../child-process/setup-child-process"; +import global, { SharedSettings } from "../global/global"; import { restoreMainWindow } from "../main-window/restore-main-window"; import createCheckForUpdatesContainerWindow from "../updates-warning-window/updates-warning-window"; import { CloseSplash } from "../warmup/splash"; import { WarmupServer } from "../warmup/warmup-server"; -export function RestoreMainWindowAndCloseSplash( - splashWindows: BrowserWindow[] -) { +export function RestoreMainWindowAndCloseSplash(splashWindows: BrowserWindow[]) { // eslint-disable-next-line @typescript-eslint/no-floating-promises restoreMainWindow().then(() => { createCheckForUpdatesContainerWindow().catch(() => {}); @@ -21,7 +19,7 @@ export default function RestoreWarmupMainWindowAndCloseSplash( ) { if (!isRemote) { // eslint-disable-next-line @typescript-eslint/no-floating-promises - WarmupServer(appPort).then(() => { + WarmupServer((global.shared as SharedSettings).port).then(() => { RestoreMainWindowAndCloseSplash(splashWindows); }); return; From 161c277c5be1bddcfc06fba3e6fd4d6dba99f263 Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 16:35:38 +0100 Subject: [PATCH 09/30] fix unit tests --- .../src/app/child-process/setup-child-process.spec.ts | 6 ++++++ starskydesktop/src/app/global/global.ts | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/starskydesktop/src/app/child-process/setup-child-process.spec.ts b/starskydesktop/src/app/child-process/setup-child-process.spec.ts index 2daa61f3fb..1636303e93 100644 --- a/starskydesktop/src/app/child-process/setup-child-process.spec.ts +++ b/starskydesktop/src/app/child-process/setup-child-process.spec.ts @@ -3,6 +3,7 @@ import { app } from "electron"; import * as fs from "fs"; import * as readline from "readline"; import * as GetPortProxy from "../get-free-port/get-free-port"; +import global from "../global/global"; import logger from "../logger/logger"; import { setupChildProcess } from "./setup-child-process"; @@ -61,6 +62,7 @@ describe("setupChildProcess", () => { stdout: { on: jest.fn() }, stderr: { on: jest.fn() }, addListener: jest.fn(), + on: jest.fn(), }; jest.spyOn(spawn, "spawn").mockImplementationOnce(() => spawnSpy as any); jest @@ -84,6 +86,10 @@ describe("setupChildProcess", () => { return null; }); + global.shared = { + port: 1, + }; + await setupChildProcess(); expect(mkdirSpy).toHaveBeenCalled(); diff --git a/starskydesktop/src/app/global/global.ts b/starskydesktop/src/app/global/global.ts index 9c3a295a7e..2b2ac1a810 100644 --- a/starskydesktop/src/app/global/global.ts +++ b/starskydesktop/src/app/global/global.ts @@ -3,7 +3,7 @@ export interface SharedSettings { } global.shared = { - port: -1, + port: 9609, } as SharedSettings; export default global; From b3cca0b079aae44564cae7464577c683effaa444 Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 17:26:21 +0100 Subject: [PATCH 10/30] Update packages. && Add SonarScanner --- .gitignore | 2 + starskydesktop/.eslintrc.cjs | 2 +- starskydesktop/package-lock.json | 2049 ++++++++++++++++++------------ starskydesktop/package.json | 34 +- starskydesktop/sonar-scanner.js | 112 ++ 5 files changed, 1383 insertions(+), 816 deletions(-) create mode 100644 starskydesktop/sonar-scanner.js diff --git a/.gitignore b/.gitignore index abe3ee37f2..08b21b88ac 100644 --- a/.gitignore +++ b/.gitignore @@ -339,6 +339,8 @@ starskyapp/tmp/settings.json starskydesktop/dist-prod/* starskydesktop/tmp/settings.json +starskydesktop/src/.scannerwork/* + starsky-tools/docs/*.yml starsky-tools/docs/*.sh starsky-tools/docs/*/*.sh diff --git a/starskydesktop/.eslintrc.cjs b/starskydesktop/.eslintrc.cjs index 81b5d1fa5c..9956928249 100644 --- a/starskydesktop/.eslintrc.cjs +++ b/starskydesktop/.eslintrc.cjs @@ -29,7 +29,7 @@ const baseConfig = { "prefer-promise-reject-errors": ["off"], "linebreak-style": ["off"], }, - ignorePatterns: ["dist/*", "dist-prod/*", "runtime-*/*"], + ignorePatterns: ["dist/*", "dist-prod/*", "runtime-*/*", "sonar-scanner.js"], }; const tsConfig = { diff --git a/starskydesktop/package-lock.json b/starskydesktop/package-lock.json index 5cd5ca1bff..642053a506 100644 --- a/starskydesktop/package-lock.json +++ b/starskydesktop/package-lock.json @@ -13,35 +13,36 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "wait-on": "^7.2.0", - "winston": "^3.11.0" + "winston": "^3.12.0" }, "devDependencies": { - "@types/jest": "^29.5.11", - "@types/react": "^18.2.55", - "@types/react-dom": "^18.2.19", + "@types/jest": "^29.5.12", + "@types/react": "^18.2.64", + "@types/react-dom": "^18.2.21", "@types/wait-on": "^5.3.4", - "@typescript-eslint/eslint-plugin": "^6.19.1", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^7.1.1", + "@typescript-eslint/parser": "^7.1.1", "cross-env": "^7.0.3", - "electron": "^28.2.6", - "eslint": "^8.56.0", + "electron": "^29.1.1", + "eslint": "^8.57.0", "eslint-config-airbnb": "^19.0.4", - "eslint-config-airbnb-typescript": "^17.1.0", + "eslint-config-airbnb-typescript": "^18.0.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jest": "^27.8.0", + "eslint-plugin-jest": "^27.9.0", "eslint-plugin-jsx-a11y": "^6.8.0", - "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react": "^7.34.0", "eslint-plugin-react-hooks": "^4.6.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", + "sonarqube-scanner": "^3.3.0", "ts-jest": "^29.1.2", - "typescript": "^5.3.3" + "typescript": "^5.4.2" }, "optionalDependencies": { "copy-webpack-plugin": "^12.0.2", - "css-loader": "^6.9.1", - "electron-builder": "^24.9.1", + "css-loader": "^6.10.0", + "electron-builder": "^24.13.3", "file-loader": "^6.2.0", "html-webpack-plugin": "^5.6.0", "rimraf": "^5.0.5", @@ -49,7 +50,7 @@ "ts-loader": "^9.5.1", "tsconfig-paths": "^4.2.0", "tsconfig-paths-webpack-plugin": "^4.1.0", - "webpack": "^5.90.0", + "webpack": "^5.90.3", "webpack-cli": "^5.1.4", "webpack-merge": "^5.10.0" } @@ -753,9 +754,9 @@ "dev": true }, "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", "engines": { "node": ">=0.1.90" } @@ -1061,9 +1062,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1083,13 +1084,13 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -1110,9 +1111,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "node_modules/@isaacs/cliui": { @@ -2011,9 +2012,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.11", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", - "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -2058,9 +2059,12 @@ "optional": true }, "node_modules/@types/node": { - "version": "18.15.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", - "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==" + "version": "20.11.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.25.tgz", + "integrity": "sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/plist": { "version": "3.0.5", @@ -2079,9 +2083,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.2.55", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.55.tgz", - "integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==", + "version": "18.2.64", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.64.tgz", + "integrity": "sha512-MlmPvHgjj2p3vZaxbQgFUQFvD8QiZwACfGqEdDSWou5yISWxDQ4/74nCAwsUiX7UFLKZz3BbVSPj+YxeoGGCfg==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -2090,9 +2094,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.19", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", - "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", + "version": "18.2.21", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.21.tgz", + "integrity": "sha512-gnvBA/21SA4xxqNXEwNiVcP0xSGHh/gi1VhWv9Bl46a0ItbTT5nFY+G9VSQpaG/8N/qdJpJ+vftQ4zflTtnjLw==", "dev": true, "dependencies": { "@types/react": "*" @@ -2130,6 +2134,11 @@ "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", "dev": true }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" + }, "node_modules/@types/verror": { "version": "1.10.9", "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.9.tgz", @@ -2170,16 +2179,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.1.tgz", - "integrity": "sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.1.tgz", + "integrity": "sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.19.1", - "@typescript-eslint/type-utils": "6.19.1", - "@typescript-eslint/utils": "6.19.1", - "@typescript-eslint/visitor-keys": "6.19.1", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/type-utils": "7.1.1", + "@typescript-eslint/utils": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -2195,8 +2204,8 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -2205,13 +2214,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz", - "integrity": "sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz", + "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/visitor-keys": "6.19.1" + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2222,9 +2231,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz", - "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz", + "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2235,13 +2244,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz", - "integrity": "sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz", + "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/visitor-keys": "6.19.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2263,17 +2272,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.1.tgz", - "integrity": "sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.1.tgz", + "integrity": "sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.19.1", - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/typescript-estree": "6.19.1", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/typescript-estree": "7.1.1", "semver": "^7.5.4" }, "engines": { @@ -2284,16 +2293,16 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz", - "integrity": "sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz", + "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/types": "7.1.1", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -2329,15 +2338,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.1.tgz", + "integrity": "sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/typescript-estree": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4" }, "engines": { @@ -2348,7 +2357,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -2357,13 +2366,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz", + "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2374,9 +2383,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz", + "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2387,13 +2396,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz", + "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2415,12 +2424,12 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz", + "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/types": "7.1.1", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -2473,13 +2482,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.1.tgz", - "integrity": "sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.1.1.tgz", + "integrity": "sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.19.1", - "@typescript-eslint/utils": "6.19.1", + "@typescript-eslint/typescript-estree": "7.1.1", + "@typescript-eslint/utils": "7.1.1", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -2491,7 +2500,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -2500,13 +2509,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz", - "integrity": "sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz", + "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/visitor-keys": "6.19.1" + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2517,9 +2526,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz", - "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz", + "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2530,13 +2539,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz", - "integrity": "sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz", + "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/visitor-keys": "6.19.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2558,17 +2567,17 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.1.tgz", - "integrity": "sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.1.tgz", + "integrity": "sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.19.1", - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/typescript-estree": "6.19.1", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/typescript-estree": "7.1.1", "semver": "^7.5.4" }, "engines": { @@ -2579,16 +2588,16 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz", - "integrity": "sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz", + "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/types": "7.1.1", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -2984,6 +2993,15 @@ "node": ">=0.4.0" } }, + "node_modules/adm-zip": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -3324,13 +3342,16 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3364,6 +3385,25 @@ "node": ">=8" } }, + "node_modules/array.prototype.findlast": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.4.tgz", + "integrity": "sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.findlastindex": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", @@ -3419,31 +3459,44 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -3515,10 +3568,13 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -3974,13 +4030,19 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4239,6 +4301,15 @@ "simple-swizzle": "^0.2.2" } }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, "node_modules/color/node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -4562,9 +4633,9 @@ } }, "node_modules/css-loader": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.9.1.tgz", - "integrity": "sha512-OzABOh0+26JKFdMzlK6PY1u5Zx8+Ck7CVRlcGNZoY9qwJjdfu2VWFuprTIpPW+Av5TZTVViYWcFQaEEQURLknQ==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", "optional": true, "dependencies": { "icss-utils": "^5.1.0", @@ -4584,7 +4655,16 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/css-select": { @@ -4762,17 +4842,20 @@ } }, "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "devOptional": true, "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-properties": { @@ -5076,13 +5159,13 @@ } }, "node_modules/electron": { - "version": "28.2.6", - "resolved": "https://registry.npmjs.org/electron/-/electron-28.2.6.tgz", - "integrity": "sha512-RuhbW+ifvh3DqnVlHCcCKhKIFOxTktq1GN1gkIkEZ8y5LEZfcjOkxB2s6Fd1S6MzsMZbiJti+ZJG5hXS4SDVLQ==", + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-29.1.1.tgz", + "integrity": "sha512-cXN15NgCi7MkzGo5/23ZQbii+0UfhmUiDjACunmzcUofYCjF42XhFbL7JZnwgI0qtBCCeJU8qZNZt9lU91gUFw==", "hasInstallScript": true, "dependencies": { "@electron/get": "^2.0.0", - "@types/node": "^18.11.18", + "@types/node": "^20.9.0", "extract-zip": "^2.0.1" }, "bin": { @@ -5377,50 +5460,52 @@ } }, "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "version": "1.22.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.5.tgz", + "integrity": "sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.1", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.0", + "safe-regex-test": "^1.0.3", "string.prototype.trim": "^1.2.8", "string.prototype.trimend": "^1.0.7", "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.5", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -5429,26 +5514,51 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "devOptional": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "devOptional": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-iterator-helpers": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", - "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz", + "integrity": "sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==", "dev": true, "dependencies": { "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", + "es-abstract": "^1.22.4", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.2", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", + "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", + "internal-slot": "^1.0.7", "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" + "safe-array-concat": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-module-lexer": { @@ -5458,26 +5568,26 @@ "optional": true }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -5598,16 +5708,16 @@ } }, "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -5702,18 +5812,17 @@ } }, "node_modules/eslint-config-airbnb-typescript": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz", - "integrity": "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-18.0.0.tgz", + "integrity": "sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==", "dev": true, "dependencies": { "eslint-config-airbnb-base": "^15.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.13.0 || ^6.0.0", - "@typescript-eslint/parser": "^5.0.0 || ^6.0.0", - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.3" + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" } }, "node_modules/eslint-import-resolver-node": { @@ -5882,9 +5991,9 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "27.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.8.0.tgz", - "integrity": "sha512-347hVFiu4ZKMYl5xFp0X81gLNwBdno0dl0CMpUMjwuAux9X/M2a7z+ab2VHmPL6XCT87q8nv1vaVzhIO4TE/hw==", + "version": "27.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", + "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==", "dev": true, "dependencies": { "@typescript-eslint/utils": "^5.10.0" @@ -5937,27 +6046,29 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "version": "7.34.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.0.tgz", + "integrity": "sha512-MeVXdReleBTdkz/bvcQMSnCXGi+c9kvy51IpinjnJgutl3YTHWsDdke7Z1ufZpGfDG8xduBDKyjtB9JH1eBKIQ==", "dev": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", + "es-iterator-helpers": "^1.0.17", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", + "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" + "string.prototype.matchall": "^4.0.10" }, "engines": { "node": ">=4" @@ -5991,12 +6102,12 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -6247,6 +6358,18 @@ ], "optional": true }, + "node_modules/fancy-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-2.0.0.tgz", + "integrity": "sha512-9CzxZbACXMUXW13tS0tI8XsGGmxWzO2DmYrGuBJOJ8k8q2K7hwfJA5qHjuPPe8wtsco33YR9wc+Rlr5wYFvhSA==", + "dev": true, + "dependencies": { + "color-support": "^1.1.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -6663,15 +6786,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "devOptional": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6701,13 +6828,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -6876,18 +7004,6 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "devOptional": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -6907,21 +7023,21 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "devOptional": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "devOptional": true, "engines": { "node": ">= 0.4" @@ -6943,12 +7059,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -6958,9 +7074,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "devOptional": true, "dependencies": { "function-bind": "^1.1.2" @@ -7279,13 +7395,13 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -7302,14 +7418,16 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7500,9 +7618,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -7587,12 +7705,15 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7640,12 +7761,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -8338,6 +8459,18 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-sonar-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-sonar-reporter/-/jest-sonar-reporter-2.0.0.tgz", + "integrity": "sha512-ZervDCgEX5gdUbdtWsjdipLN3bKJwpxbvhkYNXTAYvAckCihobSLr9OT/IuyNIRT1EZMDDwR6DroWtrq+IL64w==", + "dev": true, + "dependencies": { + "xml": "^1.0.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", @@ -8830,15 +8963,19 @@ "integrity": "sha512-bwKX88k2JhCV9D1vtE8+naDKlLiGrSmf8zi/Y9ivFHwbmRfA8RxS/aVJ+sIht2XOwqoNr4xUPUkGZpc1sHFEKg==" }, "node_modules/logform": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz", - "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", "dependencies": { - "@colors/colors": "1.5.0", + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" } }, "node_modules/loose-envify": { @@ -9115,6 +9252,18 @@ "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", "optional": true }, + "node_modules/node-downloader-helper": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/node-downloader-helper/-/node-downloader-helper-2.1.9.tgz", + "integrity": "sha512-FSvAol2Z8UP191sZtsUZwHIN0eGoGue3uEXGdWIH5228e9KH1YHXT7fN8Oa33UGf+FbqGTQg3sJfrRGzmVCaJA==", + "dev": true, + "bin": { + "ndh": "bin/ndh" + }, + "engines": { + "node": ">=14.18" + } + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -9186,9 +9335,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9204,13 +9353,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -9265,13 +9414,13 @@ } }, "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dev": true, "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9627,6 +9776,15 @@ "node": ">=10.4.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "8.4.33", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", @@ -10069,14 +10227,15 @@ "dev": true }, "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -10335,13 +10494,13 @@ } }, "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -10372,23 +10531,26 @@ ] }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/safe-stable-stringify": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz", - "integrity": "sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", "engines": { "node": ">=10" } @@ -10544,10 +10706,27 @@ "randombytes": "^2.1.0" } }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", "dev": true, "dependencies": { "define-data-property": "^1.0.1", @@ -10591,6 +10770,15 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -10664,6 +10852,15 @@ "node": ">=8" } }, + "node_modules/slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -10674,6 +10871,69 @@ "npm": ">= 3.0.0" } }, + "node_modules/sonarqube-scanner": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sonarqube-scanner/-/sonarqube-scanner-3.3.0.tgz", + "integrity": "sha512-G1A6nXT3GwoK5eRwHfFrR/7ThiDfaRefWPIFQ+ifwFOQ/V9OwziLpZBdWZgmZp21kBRnzAMvjcTzgZMqGBXQKA==", + "dev": true, + "dependencies": { + "adm-zip": "^0.5.10", + "fancy-log": "^2.0.0", + "https-proxy-agent": "^7.0.1", + "jest-sonar-reporter": "^2.0.0", + "mkdirp": "^3.0.1", + "node-downloader-helper": "^2.1.9", + "progress": "^2.0.3", + "shell-quote": "^1.8.1", + "slugify": "^1.6.6" + }, + "bin": { + "sonar-scanner": "src/bin/sonar-scanner" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/sonarqube-scanner/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/sonarqube-scanner/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/sonarqube-scanner/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -10809,18 +11069,19 @@ "devOptional": true }, "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", "side-channel": "^1.0.4" }, "funding": { @@ -11283,9 +11544,12 @@ } }, "node_modules/triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "engines": { + "node": ">= 14.0.0" + } }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", @@ -11477,29 +11741,30 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -11509,16 +11774,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -11528,14 +11794,20 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", + "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11550,9 +11822,9 @@ } }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", + "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", "devOptional": true, "bin": { "tsc": "bin/tsc", @@ -11577,6 +11849,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/unicorn-magic": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", @@ -11753,9 +12030,9 @@ } }, "node_modules/webpack": { - "version": "5.90.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.0.tgz", - "integrity": "sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w==", + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", "optional": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -12001,16 +12278,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12026,9 +12303,9 @@ "optional": true }, "node_modules/winston": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz", - "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.12.0.tgz", + "integrity": "sha512-OwbxKaOlESDi01mC9rkM0dQqQt2I8DAUMRLZ/HpbwvDXm85IryEHgoogy5fziQy38PntgZsLlhAYHz//UPHZ5w==", "dependencies": { "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", @@ -12040,31 +12317,23 @@ "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" + "winston-transport": "^4.7.0" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz", + "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", "dependencies": { "logform": "^2.3.2", "readable-stream": "^3.6.0", "triple-beam": "^1.3.0" }, "engines": { - "node": ">= 6.4.0" - } - }, - "node_modules/winston/node_modules/@colors/colors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", - "engines": { - "node": ">=0.1.90" + "node": ">= 12.0.0" } }, "node_modules/word-wrap": { @@ -12148,6 +12417,12 @@ } } }, + "node_modules/xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "dev": true + }, "node_modules/xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", @@ -12808,9 +13083,9 @@ "dev": true }, "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==" }, "@dabh/diagnostics": { "version": "2.0.3", @@ -13039,9 +13314,9 @@ } }, "@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true }, "@hapi/hoek": { @@ -13058,13 +13333,13 @@ } }, "@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" } }, @@ -13075,9 +13350,9 @@ "dev": true }, "@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "@isaacs/cliui": { @@ -13800,9 +14075,9 @@ } }, "@types/jest": { - "version": "29.5.11", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", - "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "requires": { "expect": "^29.0.0", @@ -13847,9 +14122,12 @@ "optional": true }, "@types/node": { - "version": "18.15.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", - "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==" + "version": "20.11.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.25.tgz", + "integrity": "sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==", + "requires": { + "undici-types": "~5.26.4" + } }, "@types/plist": { "version": "3.0.5", @@ -13868,9 +14146,9 @@ "dev": true }, "@types/react": { - "version": "18.2.55", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.55.tgz", - "integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==", + "version": "18.2.64", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.64.tgz", + "integrity": "sha512-MlmPvHgjj2p3vZaxbQgFUQFvD8QiZwACfGqEdDSWou5yISWxDQ4/74nCAwsUiX7UFLKZz3BbVSPj+YxeoGGCfg==", "dev": true, "requires": { "@types/prop-types": "*", @@ -13879,9 +14157,9 @@ } }, "@types/react-dom": { - "version": "18.2.19", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", - "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", + "version": "18.2.21", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.21.tgz", + "integrity": "sha512-gnvBA/21SA4xxqNXEwNiVcP0xSGHh/gi1VhWv9Bl46a0ItbTT5nFY+G9VSQpaG/8N/qdJpJ+vftQ4zflTtnjLw==", "dev": true, "requires": { "@types/react": "*" @@ -13919,6 +14197,11 @@ "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", "dev": true }, + "@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" + }, "@types/verror": { "version": "1.10.9", "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.9.tgz", @@ -13959,16 +14242,16 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.1.tgz", - "integrity": "sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.1.tgz", + "integrity": "sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.19.1", - "@typescript-eslint/type-utils": "6.19.1", - "@typescript-eslint/utils": "6.19.1", - "@typescript-eslint/visitor-keys": "6.19.1", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/type-utils": "7.1.1", + "@typescript-eslint/utils": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -13978,29 +14261,29 @@ }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz", - "integrity": "sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz", + "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==", "dev": true, "requires": { - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/visitor-keys": "6.19.1" + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1" } }, "@typescript-eslint/types": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz", - "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz", + "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz", - "integrity": "sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz", + "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==", "dev": true, "requires": { - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/visitor-keys": "6.19.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -14010,27 +14293,27 @@ } }, "@typescript-eslint/utils": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.1.tgz", - "integrity": "sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.1.tgz", + "integrity": "sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.19.1", - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/typescript-estree": "6.19.1", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/typescript-estree": "7.1.1", "semver": "^7.5.4" } }, "@typescript-eslint/visitor-keys": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz", - "integrity": "sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz", + "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==", "dev": true, "requires": { - "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/types": "7.1.1", "eslint-visitor-keys": "^3.4.1" } }, @@ -14055,42 +14338,42 @@ } }, "@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.1.tgz", + "integrity": "sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/typescript-estree": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz", + "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==", "dev": true, "requires": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1" } }, "@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz", + "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz", + "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==", "dev": true, "requires": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -14100,12 +14383,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz", + "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==", "dev": true, "requires": { - "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/types": "7.1.1", "eslint-visitor-keys": "^3.4.1" } }, @@ -14140,41 +14423,41 @@ } }, "@typescript-eslint/type-utils": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.1.tgz", - "integrity": "sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.1.1.tgz", + "integrity": "sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "6.19.1", - "@typescript-eslint/utils": "6.19.1", + "@typescript-eslint/typescript-estree": "7.1.1", + "@typescript-eslint/utils": "7.1.1", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz", - "integrity": "sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz", + "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==", "dev": true, "requires": { - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/visitor-keys": "6.19.1" + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1" } }, "@typescript-eslint/types": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz", - "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz", + "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz", - "integrity": "sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz", + "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==", "dev": true, "requires": { - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/visitor-keys": "6.19.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -14184,27 +14467,27 @@ } }, "@typescript-eslint/utils": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.1.tgz", - "integrity": "sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.1.tgz", + "integrity": "sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.19.1", - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/typescript-estree": "6.19.1", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/typescript-estree": "7.1.1", "semver": "^7.5.4" } }, "@typescript-eslint/visitor-keys": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz", - "integrity": "sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz", + "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==", "dev": true, "requires": { - "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/types": "7.1.1", "eslint-visitor-keys": "^3.4.1" } }, @@ -14514,6 +14797,12 @@ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true }, + "adm-zip": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "dev": true + }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -14793,13 +15082,13 @@ } }, "array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" } }, "array-includes": { @@ -14821,6 +15110,19 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, + "array.prototype.findlast": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.4.tgz", + "integrity": "sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + } + }, "array.prototype.findlastindex": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", @@ -14858,31 +15160,44 @@ "es-shim-unscopables": "^1.0.0" } }, - "array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" } }, "arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, "requires": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" } }, @@ -14936,10 +15251,13 @@ "optional": true }, "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "requires": { + "possible-typed-array-names": "^1.0.0" + } }, "axe-core": { "version": "4.7.0", @@ -15277,13 +15595,16 @@ } }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "callsites": { @@ -15483,6 +15804,12 @@ "simple-swizzle": "^0.2.2" } }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, "colorette": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", @@ -15712,9 +16039,9 @@ } }, "css-loader": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.9.1.tgz", - "integrity": "sha512-OzABOh0+26JKFdMzlK6PY1u5Zx8+Ck7CVRlcGNZoY9qwJjdfu2VWFuprTIpPW+Av5TZTVViYWcFQaEEQURLknQ==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", "optional": true, "requires": { "icss-utils": "^5.1.0", @@ -15852,14 +16179,14 @@ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" }, "define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "devOptional": true, "requires": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" } }, "define-properties": { @@ -16091,12 +16418,12 @@ } }, "electron": { - "version": "28.2.6", - "resolved": "https://registry.npmjs.org/electron/-/electron-28.2.6.tgz", - "integrity": "sha512-RuhbW+ifvh3DqnVlHCcCKhKIFOxTktq1GN1gkIkEZ8y5LEZfcjOkxB2s6Fd1S6MzsMZbiJti+ZJG5hXS4SDVLQ==", + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-29.1.1.tgz", + "integrity": "sha512-cXN15NgCi7MkzGo5/23ZQbii+0UfhmUiDjACunmzcUofYCjF42XhFbL7JZnwgI0qtBCCeJU8qZNZt9lU91gUFw==", "requires": { "@electron/get": "^2.0.0", - "@types/node": "^18.11.18", + "@types/node": "^20.9.0", "extract-zip": "^2.0.1" } }, @@ -16330,72 +16657,90 @@ } }, "es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "version": "1.22.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.5.tgz", + "integrity": "sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.1", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.0", + "safe-regex-test": "^1.0.3", "string.prototype.trim": "^1.2.8", "string.prototype.trimend": "^1.0.7", "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.5", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "devOptional": true, + "requires": { + "get-intrinsic": "^1.2.4" } }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "devOptional": true + }, "es-iterator-helpers": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", - "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz", + "integrity": "sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==", "dev": true, "requires": { "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", + "es-abstract": "^1.22.4", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.2", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", + "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", + "internal-slot": "^1.0.7", "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" + "safe-array-concat": "^1.1.0" } }, "es-module-lexer": { @@ -16405,23 +16750,23 @@ "optional": true }, "es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" } }, "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "es-to-primitive": { @@ -16508,16 +16853,16 @@ } }, "eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -16606,9 +16951,9 @@ } }, "eslint-config-airbnb-typescript": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz", - "integrity": "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-18.0.0.tgz", + "integrity": "sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==", "dev": true, "requires": { "eslint-config-airbnb-base": "^15.0.0" @@ -16750,9 +17095,9 @@ } }, "eslint-plugin-jest": { - "version": "27.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.8.0.tgz", - "integrity": "sha512-347hVFiu4ZKMYl5xFp0X81gLNwBdno0dl0CMpUMjwuAux9X/M2a7z+ab2VHmPL6XCT87q8nv1vaVzhIO4TE/hw==", + "version": "27.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", + "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==", "dev": true, "requires": { "@typescript-eslint/utils": "^5.10.0" @@ -16783,27 +17128,29 @@ } }, "eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "version": "7.34.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.0.tgz", + "integrity": "sha512-MeVXdReleBTdkz/bvcQMSnCXGi+c9kvy51IpinjnJgutl3YTHWsDdke7Z1ufZpGfDG8xduBDKyjtB9JH1eBKIQ==", "dev": true, "requires": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", + "es-iterator-helpers": "^1.0.17", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", + "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" + "string.prototype.matchall": "^4.0.10" }, "dependencies": { "doctrine": { @@ -16816,12 +17163,12 @@ } }, "resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -16979,6 +17326,15 @@ "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", "optional": true }, + "fancy-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-2.0.0.tgz", + "integrity": "sha512-9CzxZbACXMUXW13tS0tI8XsGGmxWzO2DmYrGuBJOJ8k8q2K7hwfJA5qHjuPPe8wtsco33YR9wc+Rlr5wYFvhSA==", + "dev": true, + "requires": { + "color-support": "^1.1.3" + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -17292,15 +17648,16 @@ "devOptional": true }, "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "devOptional": true, "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-package-type": { @@ -17318,13 +17675,14 @@ } }, "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" } }, "get-tsconfig": { @@ -17445,15 +17803,6 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "devOptional": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -17467,18 +17816,18 @@ "devOptional": true }, "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "devOptional": true, "requires": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" } }, "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "devOptional": true }, "has-symbols": { @@ -17488,18 +17837,18 @@ "devOptional": true }, "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" } }, "hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "devOptional": true, "requires": { "function-bind": "^1.1.2" @@ -17711,13 +18060,13 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" } }, @@ -17728,14 +18077,13 @@ "optional": true }, "is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "requires": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" } }, "is-arrayish": { @@ -17863,9 +18211,9 @@ "dev": true }, "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true }, "is-number": { @@ -17920,12 +18268,12 @@ "dev": true }, "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "requires": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" } }, "is-stream": { @@ -17952,12 +18300,12 @@ } }, "is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "requires": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" } }, "is-typedarray": { @@ -18479,6 +18827,15 @@ "semver": "^7.5.3" } }, + "jest-sonar-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-sonar-reporter/-/jest-sonar-reporter-2.0.0.tgz", + "integrity": "sha512-ZervDCgEX5gdUbdtWsjdipLN3bKJwpxbvhkYNXTAYvAckCihobSLr9OT/IuyNIRT1EZMDDwR6DroWtrq+IL64w==", + "dev": true, + "requires": { + "xml": "^1.0.1" + } + }, "jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", @@ -18894,11 +19251,12 @@ "integrity": "sha512-bwKX88k2JhCV9D1vtE8+naDKlLiGrSmf8zi/Y9ivFHwbmRfA8RxS/aVJ+sIht2XOwqoNr4xUPUkGZpc1sHFEKg==" }, "logform": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz", - "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", "requires": { - "@colors/colors": "1.5.0", + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", @@ -19106,6 +19464,12 @@ "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", "optional": true }, + "node-downloader-helper": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/node-downloader-helper/-/node-downloader-helper-2.1.9.tgz", + "integrity": "sha512-FSvAol2Z8UP191sZtsUZwHIN0eGoGue3uEXGdWIH5228e9KH1YHXT7fN8Oa33UGf+FbqGTQg3sJfrRGzmVCaJA==", + "dev": true + }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -19159,9 +19523,9 @@ "dev": true }, "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true }, "object-keys": { @@ -19171,13 +19535,13 @@ "devOptional": true }, "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } @@ -19217,13 +19581,13 @@ } }, "object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dev": true, "requires": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "object.values": { @@ -19484,6 +19848,12 @@ "xmlbuilder": "^15.1.1" } }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true + }, "postcss": { "version": "8.4.33", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", @@ -19808,14 +20178,15 @@ "dev": true }, "regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" } }, "relateurl": { @@ -19994,13 +20365,13 @@ } }, "safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" } @@ -20011,20 +20382,20 @@ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" } }, "safe-stable-stringify": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz", - "integrity": "sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==" + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==" }, "safer-buffer": { "version": "2.1.2", @@ -20146,6 +20517,20 @@ "randombytes": "^2.1.0" } }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, "set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", @@ -20181,6 +20566,12 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "devOptional": true }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -20244,12 +20635,62 @@ "is-fullwidth-code-point": "^3.0.0" } }, + "slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "dev": true + }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "optional": true }, + "sonarqube-scanner": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sonarqube-scanner/-/sonarqube-scanner-3.3.0.tgz", + "integrity": "sha512-G1A6nXT3GwoK5eRwHfFrR/7ThiDfaRefWPIFQ+ifwFOQ/V9OwziLpZBdWZgmZp21kBRnzAMvjcTzgZMqGBXQKA==", + "dev": true, + "requires": { + "adm-zip": "^0.5.10", + "fancy-log": "^2.0.0", + "https-proxy-agent": "^7.0.1", + "jest-sonar-reporter": "^2.0.0", + "mkdirp": "^3.0.1", + "node-downloader-helper": "^2.1.9", + "progress": "^2.0.3", + "shell-quote": "^1.8.1", + "slugify": "^1.6.6" + }, + "dependencies": { + "agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "requires": { + "debug": "^4.3.4" + } + }, + "https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true + } + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -20363,18 +20804,19 @@ } }, "string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", "side-channel": "^1.0.4" } }, @@ -20709,9 +21151,9 @@ } }, "triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==" }, "truncate-utf8-bytes": { "version": "1.0.2", @@ -20840,50 +21282,55 @@ "dev": true }, "typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" } }, "typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "requires": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" } }, "typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" } }, "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", + "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", "dev": true, "requires": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" } }, "typedarray-to-buffer": { @@ -20895,9 +21342,9 @@ } }, "typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", + "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", "devOptional": true }, "unbox-primitive": { @@ -20912,6 +21359,11 @@ "which-boxed-primitive": "^1.0.2" } }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "unicorn-magic": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", @@ -21038,9 +21490,9 @@ "dev": true }, "webpack": { - "version": "5.90.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.0.tgz", - "integrity": "sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w==", + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", "optional": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -21208,16 +21660,16 @@ } }, "which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" } }, "wildcard": { @@ -21227,9 +21679,9 @@ "optional": true }, "winston": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz", - "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.12.0.tgz", + "integrity": "sha512-OwbxKaOlESDi01mC9rkM0dQqQt2I8DAUMRLZ/HpbwvDXm85IryEHgoogy5fziQy38PntgZsLlhAYHz//UPHZ5w==", "requires": { "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", @@ -21241,20 +21693,13 @@ "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" - }, - "dependencies": { - "@colors/colors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==" - } + "winston-transport": "^4.7.0" } }, "winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz", + "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", "requires": { "logform": "^2.3.2", "readable-stream": "^3.6.0", @@ -21312,6 +21757,12 @@ "dev": true, "requires": {} }, + "xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "dev": true + }, "xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", diff --git a/starskydesktop/package.json b/starskydesktop/package.json index 43a5b5f1cf..a369661055 100644 --- a/starskydesktop/package.json +++ b/starskydesktop/package.json @@ -14,7 +14,8 @@ "lint": "eslint . --cache --ext js,jsx,cjs,mjs,ts,tsx", "lint:fix": "eslint . --fix --cache --ext js,jsx,cjs,mjs,ts,tsx", "fix": "npm run lint:fix", - "test:ci": "npm run jest && npm run lint", + "sonar": "node sonar-scanner.js", + "test:ci": "npm run jest && npm run lint && npm run sonar", "test-ci": "npm run jest && npm run lint", "windows": "npm run prod && electron-builder build --win --publish never", "mac": "npm run prod && electron-builder build --mac --x64 --arm64 --publish never", @@ -88,35 +89,36 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "wait-on": "^7.2.0", - "winston": "^3.11.0" + "winston": "^3.12.0" }, "devDependencies": { - "@types/jest": "^29.5.11", - "@types/react": "^18.2.55", - "@types/react-dom": "^18.2.19", + "@types/jest": "^29.5.12", + "@types/react": "^18.2.64", + "@types/react-dom": "^18.2.21", "@types/wait-on": "^5.3.4", - "@typescript-eslint/eslint-plugin": "^6.19.1", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^7.1.1", + "@typescript-eslint/parser": "^7.1.1", "cross-env": "^7.0.3", - "electron": "^28.2.6", - "eslint": "^8.56.0", + "electron": "^29.1.1", + "eslint": "^8.57.0", "eslint-config-airbnb": "^19.0.4", - "eslint-config-airbnb-typescript": "^17.1.0", + "eslint-config-airbnb-typescript": "^18.0.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jest": "^27.8.0", + "eslint-plugin-jest": "^27.9.0", "eslint-plugin-jsx-a11y": "^6.8.0", - "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react": "^7.34.0", "eslint-plugin-react-hooks": "^4.6.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", + "sonarqube-scanner": "^3.3.0", "ts-jest": "^29.1.2", - "typescript": "^5.3.3" + "typescript": "^5.4.2" }, "optionalDependencies": { "copy-webpack-plugin": "^12.0.2", - "css-loader": "^6.9.1", - "electron-builder": "^24.9.1", + "css-loader": "^6.10.0", + "electron-builder": "^24.13.3", "file-loader": "^6.2.0", "html-webpack-plugin": "^5.6.0", "rimraf": "^5.0.5", @@ -124,7 +126,7 @@ "ts-loader": "^9.5.1", "tsconfig-paths": "^4.2.0", "tsconfig-paths-webpack-plugin": "^4.1.0", - "webpack": "^5.90.0", + "webpack": "^5.90.3", "webpack-cli": "^5.1.4", "webpack-merge": "^5.10.0" }, diff --git a/starskydesktop/sonar-scanner.js b/starskydesktop/sonar-scanner.js new file mode 100644 index 0000000000..47ef1535db --- /dev/null +++ b/starskydesktop/sonar-scanner.js @@ -0,0 +1,112 @@ +const scanner = require("sonarqube-scanner"); +const process = require('process'); +const path = require('path'); +const { execSync } = require('child_process'); + +// src: https://gist.github.com/santoshshinde2012/b600d52d3bc0db2f62cf77a2044c3e05 + +// The URL of the SonarQube server. Defaults to http://localhost:9000 +let serverUrl = process.env.STARSKY_SONAR_URL; +if (!serverUrl) { + serverUrl = "https://sonarcloud.io"; +} + +const organization = process.env.STARSKY_SONAR_ORGANISATION + +// The token used to connect to the SonarQube/SonarCloud server. Empty by default. +const token = process.env.STARSKY_SONAR_TOKEN; + +if (!token || !organization) { + console.error(`STARSKY_SONAR_TOKEN env is missing so skip check or:`); + console.error(`STARSKY_SONAR_ORGANISATION env is missing so skip check`); + process.exit(0); +} + +// projectKey must be unique in a given SonarQube instance +const projectKey = "StarskyDesktop"; + +const isPrBuild = process.env.GITHUB_ACTIONS !== null && + process.env.GITHUB_JOB !== null && + process.env.GITHUB_BASE_REF !== null && + process.env.PR_NUMBER_GITHUB !== undefined && + process.env.PR_NUMBER_GITHUB !== ""; + +const githubPrNumber = process.env.PR_NUMBER_GITHUB; +const githubBaseBranch = process.env.GITHUB_BASE_REF; +const githubRepoSlug = process.env.GITHUB_REPOSITORY; + +// options Map (optional) Used to pass extra parameters for the analysis. +// See the [official documentation](https://docs.sonarqube.org/latest/analysis/analysis-parameters/) for more details. +const options = { + "sonar.projectKey": projectKey, + + // projectName - defaults to project key + "sonar.projectName": "StarskyDesktop", + + "sonar.organization": organization, + + // Path is relative to the sonar-project.properties file. Defaults to . + "sonar.sources": "src", + + // source language + "sonar.language": "ts", + + "sonar.typescript.tsconfigPath": "tsconfig.json", + + "sonar.exclusions": "**/build/*,**/coverage/*,**/runtime-starsky-mac-arm64/*,**/runtime-starsky-mac-x64/*,**/setup/*", + + "sonar.coverage.exclusions": "**/build/*,**/coverage/*,**/runtime-starsky-mac-arm64/*,**/runtime-starsky-mac-x64/*,**/setup/,**.spec.ts", + + "sonar.javascript.lcov.reportPaths": path.join("coverage", "lcov.info"), + + // Encoding of the source code. Default is default system encoding + "sonar.sourceEncoding": "UTF-8", +}; + +if (!isPrBuild) { + try { + // Execute the git command to get the current branch name + const branchName = execSync('git rev-parse --abbrev-ref HEAD').toString().trim(); + console.log("Current branch:", branchName); + options["sonar.branch.name"] = branchName; + } catch (error) { + console.error("Error getting branch name:", error); + } +} + +if (isPrBuild) { + options["sonar.pullrequest.key"] = githubPrNumber; + options["sonar.pullrequest.branch"] = gitBranchName; + options["sonar.pullrequest.base"] = githubBaseBranch; + options["sonar.pullrequest.provider"] = "github"; + options["sonar.pullrequest.github.endpoint"] = "https://api.github.com/"; + options["github.repository"] = githubRepoSlug + +} + +// parameters for sonarqube-scanner +const params = { + serverUrl, + token, + options, +}; + +const sonarScanner = async () => { + console.log(serverUrl); + + if (!serverUrl) { + console.log("SonarQube url not set. Nothing to do..."); + return; + } + + // Function Callback (the execution of the analysis is asynchronous). + const callback = (result) => { + console.log("Sonarqube scanner result:", result); + }; + + scanner(params, callback); +}; + +sonarScanner().catch((err) => console.error("Error during sonar scan", err)).then((e) => { + console.log(e) +}); From c1625645ec9dea63487c6b1b7acb3ba0791738cd Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 17:33:33 +0100 Subject: [PATCH 11/30] rename --- .gitignore | 2 +- starskydesktop/src/shared/slugify.spec.ts | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 08b21b88ac..2f176e68d7 100644 --- a/.gitignore +++ b/.gitignore @@ -339,7 +339,7 @@ starskyapp/tmp/settings.json starskydesktop/dist-prod/* starskydesktop/tmp/settings.json -starskydesktop/src/.scannerwork/* +starskydesktop/.scannerwork/* starsky-tools/docs/*.yml starsky-tools/docs/*.sh diff --git a/starskydesktop/src/shared/slugify.spec.ts b/starskydesktop/src/shared/slugify.spec.ts index abbec971e8..88e3c0a20b 100644 --- a/starskydesktop/src/shared/slugify.spec.ts +++ b/starskydesktop/src/shared/slugify.spec.ts @@ -1,28 +1,28 @@ import { Slugify } from "./slugify"; describe("Slugify", () => { - it("lowercase", () => { + it("test lowercase", () => { const slugifyResult = Slugify("Test"); expect(slugifyResult).toBe("test"); }); - it("trim", () => { - const slugifyResult = Slugify(" test"); - expect(slugifyResult).toBe("test"); + it("test replace ----", () => { + const slugifyResult = Slugify("test-----test"); + expect(slugifyResult).toBe("test-test"); }); - it("space", () => { - const slugifyResult = Slugify("test test"); - expect(slugifyResult).toBe("test-test"); + it("test trim", () => { + const slugifyResult = Slugify(" test"); + expect(slugifyResult).toBe("test"); }); - it("remove $$", () => { + it("test remove $$", () => { const slugifyResult = Slugify("test$$$test"); expect(slugifyResult).toBe("testtest"); }); - it("replace ----", () => { - const slugifyResult = Slugify("test-----test"); + it("test space", () => { + const slugifyResult = Slugify("test test"); expect(slugifyResult).toBe("test-test"); }); }); From 4d17d20a43ba95eb8252a198eb2eab6caad20356 Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 17:35:41 +0100 Subject: [PATCH 12/30] add to gitignore --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2f176e68d7..a62305400e 100644 --- a/.gitignore +++ b/.gitignore @@ -339,7 +339,9 @@ starskyapp/tmp/settings.json starskydesktop/dist-prod/* starskydesktop/tmp/settings.json -starskydesktop/.scannerwork/* +starskydesktop/.scannerwork/** +starskydesktop/src/.scannerwork/** + starsky-tools/docs/*.yml starsky-tools/docs/*.sh From 6d331f0b4c4ef8affc7b2325bfcf89c169c7a887 Mon Sep 17 00:00:00 2001 From: Dion van Velde Date: Mon, 11 Mar 2024 17:39:33 +0100 Subject: [PATCH 13/30] Rename starskyapp-electron-pr-build-mac-win.yml to desktop-electron-pr-build-mac-win.yml --- ...pr-build-mac-win.yml => desktop-electron-pr-build-mac-win.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{starskyapp-electron-pr-build-mac-win.yml => desktop-electron-pr-build-mac-win.yml} (100%) diff --git a/.github/workflows/starskyapp-electron-pr-build-mac-win.yml b/.github/workflows/desktop-electron-pr-build-mac-win.yml similarity index 100% rename from .github/workflows/starskyapp-electron-pr-build-mac-win.yml rename to .github/workflows/desktop-electron-pr-build-mac-win.yml From 729d38ab87e8bc2f557229cf850bf500c8ab6451 Mon Sep 17 00:00:00 2001 From: Dion van Velde Date: Mon, 11 Mar 2024 17:43:16 +0100 Subject: [PATCH 14/30] Create desktop-electron-sonarqube-missing-net-dependency.yml --- ...ctron-sonarqube-missing-net-dependency.yml | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 .github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml diff --git a/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml b/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml new file mode 100644 index 0000000000..6fc803c326 --- /dev/null +++ b/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml @@ -0,0 +1,95 @@ +name: SonarQube ClientApp .NET Analyze (Missing .NET dependency) + +on: + workflow_dispatch: + pull_request: + types: + - synchronize + - opened + branches: + - master + paths: + - 'starsky/**' + - '.github/workflows/**' + - '!starsky/Dockerfile' + - '!starsky/docker_demo_setup.sh' + - '!history.md' + push: + branches: [master] + paths: + - 'starsky/**' + schedule: + - cron: '36 0 * * 0,2,4,6' + +env: + PR_NUMBER_GITHUB: ${{ github.event.pull_request.number }} + +jobs: + build: + + runs-on: ubuntu-latest + + env: + WEBSITE_SITE_NAME: "ci" + + steps: + - name: 'Checkout repository on branch: ${{ github.REF }}' + uses: actions/checkout@v4 + with: + ref: ${{ github.HEAD_REF }} + + - name: Retrieve entire repository history + run: | + git fetch --prune --unshallow + + - name: Setup .NET SDK + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.201 + + - name: Use Java 17 + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '17' + check-latest: true + java-package: jdk # (jre, jdk, or jdk+fx) - defaults to jdk + architecture: x64 # (x64 or x86) - defaults to x64 + + - name: Cache node modules clientapp (*nix) + uses: actions/cache@v4 + with: + # npm cache files are stored in `~/.npm` on Linux/macOS + path: ~/.npm + key: ${{ runner.os }}-build-clientapp-${{ hashFiles('./starsky/starsky/clientapp/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-clientapp- + + - name: Cache nuget packages (*nix) + uses: actions/cache@v4 + with: + # nuget cache files are stored in `~/.nuget/packages` on Linux/macOS + path: ~/.nuget/packages + key: ${{ runner.os }}-build-netcore-${{ hashFiles('./starsky/starsky/nuget-packages-list.json') }} + restore-keys: | + ${{ runner.os }}-build-netcore- + + - name: Cache sonarqube packages (*nix) + uses: actions/cache@v4 + with: + # nuget cache files are stored in `~/.sonar` on Linux/macOS + path: ~/.sonar + key: ${{ runner.os }}-build-sonarqube + restore-keys: | + ${{ runner.os }}-build-sonarqube- + + - name: Build + shell: bash + env: + STARSKY_SONAR_KEY: ${{ secrets.STARSKY_SONAR_KEY }} + STARSKY_SONAR_TOKEN: ${{ secrets.STARSKY_SONAR_TOKEN }} + STARSKY_SONAR_ORGANISATION: ${{ secrets.STARSKY_SONAR_ORGANISATION }} + STARSKY_SONAR_URL: ${{ secrets.STARSKY_SONAR_URL }} + working-directory: ./starsky + run: bash build.sh --no-logo --no-publish --no-dependencies + From a9ad22493bbc0e5d4d6a8d1d4dcc54ae426848bd Mon Sep 17 00:00:00 2001 From: Dion van Velde Date: Mon, 11 Mar 2024 17:44:10 +0100 Subject: [PATCH 15/30] Update desktop-electron-sonarqube-missing-net-dependency.yml --- ...ctron-sonarqube-missing-net-dependency.yml | 42 ++----------------- 1 file changed, 4 insertions(+), 38 deletions(-) diff --git a/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml b/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml index 6fc803c326..4877e50d13 100644 --- a/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml +++ b/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml @@ -9,11 +9,8 @@ on: branches: - master paths: - - 'starsky/**' + - 'starskydesktop/**' - '.github/workflows/**' - - '!starsky/Dockerfile' - - '!starsky/docker_demo_setup.sh' - - '!history.md' push: branches: [master] paths: @@ -41,11 +38,6 @@ jobs: - name: Retrieve entire repository history run: | git fetch --prune --unshallow - - - name: Setup .NET SDK - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 8.0.201 - name: Use Java 17 uses: actions/setup-java@v4 @@ -56,40 +48,14 @@ jobs: java-package: jdk # (jre, jdk, or jdk+fx) - defaults to jdk architecture: x64 # (x64 or x86) - defaults to x64 - - name: Cache node modules clientapp (*nix) - uses: actions/cache@v4 - with: - # npm cache files are stored in `~/.npm` on Linux/macOS - path: ~/.npm - key: ${{ runner.os }}-build-clientapp-${{ hashFiles('./starsky/starsky/clientapp/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-clientapp- - - - name: Cache nuget packages (*nix) - uses: actions/cache@v4 - with: - # nuget cache files are stored in `~/.nuget/packages` on Linux/macOS - path: ~/.nuget/packages - key: ${{ runner.os }}-build-netcore-${{ hashFiles('./starsky/starsky/nuget-packages-list.json') }} - restore-keys: | - ${{ runner.os }}-build-netcore- - - name: Cache sonarqube packages (*nix) uses: actions/cache@v4 with: # nuget cache files are stored in `~/.sonar` on Linux/macOS path: ~/.sonar - key: ${{ runner.os }}-build-sonarqube + key: ${{ runner.os }}-build-desktop-sonarqube restore-keys: | - ${{ runner.os }}-build-sonarqube- + ${{ runner.os }}-build-desktop-sonarqube- + - - name: Build - shell: bash - env: - STARSKY_SONAR_KEY: ${{ secrets.STARSKY_SONAR_KEY }} - STARSKY_SONAR_TOKEN: ${{ secrets.STARSKY_SONAR_TOKEN }} - STARSKY_SONAR_ORGANISATION: ${{ secrets.STARSKY_SONAR_ORGANISATION }} - STARSKY_SONAR_URL: ${{ secrets.STARSKY_SONAR_URL }} - working-directory: ./starsky - run: bash build.sh --no-logo --no-publish --no-dependencies From d4b3a63f082816ecd65e960d11b07e0ac985561c Mon Sep 17 00:00:00 2001 From: Dion van Velde Date: Mon, 11 Mar 2024 17:44:51 +0100 Subject: [PATCH 16/30] Update desktop-electron-sonarqube-missing-net-dependency.yml --- .../desktop-electron-sonarqube-missing-net-dependency.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml b/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml index 4877e50d13..d24f56efa6 100644 --- a/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml +++ b/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml @@ -56,6 +56,13 @@ jobs: key: ${{ runner.os }}-build-desktop-sonarqube restore-keys: | ${{ runner.os }}-build-desktop-sonarqube- + + - name: NpmCi + working-directory: ./starskydesktop + run: npm ci + - name: Test + working-directory: ./starskydesktop + run: npm run test:ci From c98e38b35112d37d9ef95a0567cde3df64f1ed95 Mon Sep 17 00:00:00 2001 From: Dion van Velde Date: Mon, 11 Mar 2024 18:01:58 +0100 Subject: [PATCH 17/30] Update desktop-electron-sonarqube-missing-net-dependency.yml --- .../desktop-electron-sonarqube-missing-net-dependency.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml b/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml index d24f56efa6..73f3b38c55 100644 --- a/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml +++ b/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml @@ -1,4 +1,4 @@ -name: SonarQube ClientApp .NET Analyze (Missing .NET dependency) +name: SonarQube Desktop .NET Analyze (Missing .NET dependency) on: workflow_dispatch: From 90b5aa4b4ef74d01267df2321cbf36c3057dafcd Mon Sep 17 00:00:00 2001 From: Dion van Velde Date: Mon, 11 Mar 2024 18:08:24 +0100 Subject: [PATCH 18/30] Update desktop-electron-sonarqube-missing-net-dependency.yml --- .../desktop-electron-sonarqube-missing-net-dependency.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml b/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml index 73f3b38c55..45c0b9c2e3 100644 --- a/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml +++ b/.github/workflows/desktop-electron-sonarqube-missing-net-dependency.yml @@ -63,6 +63,11 @@ jobs: - name: Test working-directory: ./starskydesktop + env: + STARSKY_SONAR_KEY: ${{ secrets.STARSKY_SONAR_KEY }} + STARSKY_SONAR_TOKEN: ${{ secrets.STARSKY_SONAR_TOKEN }} + STARSKY_SONAR_ORGANISATION: ${{ secrets.STARSKY_SONAR_ORGANISATION }} + STARSKY_SONAR_URL: ${{ secrets.STARSKY_SONAR_URL }} run: npm run test:ci From 49db48aa6c61da377d4bbc97071f908182efe36e Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 18:15:29 +0100 Subject: [PATCH 19/30] fix branch && rename in docs --- .../developer-guide/github-actions/readme.md | 4 +-- readme.md | 2 +- starskydesktop/sonar-scanner.js | 25 ++++++++++++------- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/documentation/docs/developer-guide/github-actions/readme.md b/documentation/docs/developer-guide/github-actions/readme.md index dd6e816a1b..971177bfc9 100644 --- a/documentation/docs/developer-guide/github-actions/readme.md +++ b/documentation/docs/developer-guide/github-actions/readme.md @@ -271,9 +271,9 @@ Smoke tests for the starsky-tools Build the Electron app on pull request without .NET so faster but does not run the app For Windows and Mac OS builds the app and runs the unit tests -[![Docker buildx multi-arch CI unstable master](https://github.com/qdraw/starsky/actions/workflows/starskyapp-electron-pr-build-mac-win.yml/badge.svg)](https://github.com/qdraw/starsky/actions/workflows/starskyapp-electron-pr-build-mac-win.yml) +[![Docker buildx multi-arch CI unstable master](https://github.com/qdraw/starsky/actions/workflows/desktop-electron-pr-build-mac-win.yml/badge.svg)](https://github.com/qdraw/starsky/actions/workflows/desktop-electron-pr-build-mac-win.yml) -> [starskyapp-electron-pr-build-mac-win.yml](https://github.com/qdraw/starsky/actions/workflows/starskyapp-electron-pr-build-mac-win.yml) +> [desktop-electron-pr-build-mac-win.yml](https://github.com/qdraw/starsky/actions/workflows/desktop-electron-pr-build-mac-win.yml) ## storybook clientapp netlify diff --git a/readme.md b/readme.md index 457db2178a..dd94fa236a 100644 --- a/readme.md +++ b/readme.md @@ -91,7 +91,7 @@ _See `./pipelines/azure` for details_ The pipeline below is to test the Desktop build process. The .NET part isn't build in this pipeline, but it's needed to run the Desktop app. -[![starskyDesktop Electron PR (Missing .NET dependency)](https://github.com/qdraw/starsky/actions/workflows/starskyapp-electron-pr-build-mac-win.yml/badge.svg)](https://github.com/qdraw/starsky/actions/workflows/starskyapp-electron-pr-build-mac-win.yml) +[![starskyDesktop Electron PR (Missing .NET dependency)](https://github.com/qdraw/starsky/actions/workflows/desktop-electron-pr-build-mac-win.yml/badge.svg)](https://github.com/qdraw/starsky/actions/workflows/desktop-electron-pr-build-mac-win.yml) A full build including the .NET dependency diff --git a/starskydesktop/sonar-scanner.js b/starskydesktop/sonar-scanner.js index 47ef1535db..c9372e90c6 100644 --- a/starskydesktop/sonar-scanner.js +++ b/starskydesktop/sonar-scanner.js @@ -41,7 +41,7 @@ const options = { "sonar.projectKey": projectKey, // projectName - defaults to project key - "sonar.projectName": "StarskyDesktop", + "sonar.projectName": projectKey, "sonar.organization": organization, @@ -63,15 +63,22 @@ const options = { "sonar.sourceEncoding": "UTF-8", }; +let gitBranchName = ""; +try { + // Execute the git command to get the current branch name + gitBranchName = execSync('git rev-parse --abbrev-ref HEAD').toString().trim(); + console.log("Current branch:", gitBranchName); +} catch (error) { + console.error("Error getting branch name:", error); +} + +if (!gitBranchName) { + console.error("Set to Default Branch name: master") + gitBranchName = "master"; +} + if (!isPrBuild) { - try { - // Execute the git command to get the current branch name - const branchName = execSync('git rev-parse --abbrev-ref HEAD').toString().trim(); - console.log("Current branch:", branchName); - options["sonar.branch.name"] = branchName; - } catch (error) { - console.error("Error getting branch name:", error); - } + options["sonar.branch.name"] = gitBranchName; } if (isPrBuild) { From 0ac258fc9e57dbea81314658e0a4245a081e85bd Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 18:33:30 +0100 Subject: [PATCH 20/30] keep a changelog --- history.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/history.md b/history.md index da224d681a..5d0ddb8883 100644 --- a/history.md +++ b/history.md @@ -56,6 +56,8 @@ Semantic Versioning 2.0.0 is from version 0.1.6+ - [x] (Fixed) _Front-end_ Fix list item status OkAndSame is not red anymore (PR #1445) - [x] (Removed) _Back-end_ Unused .NET cultures (PR #1453) - [x] (Changed) _Back-end_ Change GetParentPath() to avoid regex due timeout (PR #1461) +- [x] (Added) _Desktop_ Add support for Apple Silicon Mac OS in Desktop App (PR #1454) +- [x] (Added) _Desktop_ SonarScanner for Desktop App (PR #1454) ## version 0.6.0-beta.2 - 2024-03-05 {#v0.6.0-beta.2} From 1f95f6264c8e69e59786bd84a5170db330d9f308 Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 18:56:46 +0100 Subject: [PATCH 21/30] allow mocking out --- starskydesktop/jest.config.mjs | 1 + .../app/child-process/spawn-clean-mac-os.ts | 20 ++++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/starskydesktop/jest.config.mjs b/starskydesktop/jest.config.mjs index 782b050f7f..1f8a4a3991 100644 --- a/starskydesktop/jest.config.mjs +++ b/starskydesktop/jest.config.mjs @@ -65,6 +65,7 @@ export default { '!runtime-starsky-win-x64/**', '!runtime-starsky-mac-arm64/**', '!runtime-starsky-linux-x64/**', + '!src/setup/**', '!dist/**', '!dist-prod/**', ], diff --git a/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts b/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts index d9d082aded..31cf741a93 100644 --- a/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts +++ b/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts @@ -2,16 +2,19 @@ import { spawn } from "child_process"; import * as path from "path"; import logger from "../logger/logger"; -function executeXattrCommand(appStarskyPath: string): Promise { +export function ExecuteXattrCommand( + appStarskyPath: string, + xattr: string = "xattr" +): Promise { return new Promise((resolve, reject) => { const xattrArgs = ["-rd", "com.apple.quarantine", appStarskyPath]; const xattrOptions = { detached: true, env: process.env, - argv0: "xattr", + argv0: xattr, }; - const xattrChild = spawn("xattr", xattrArgs, xattrOptions); + const xattrChild = spawn(xattr, xattrArgs, xattrOptions); xattrChild.on("error", (err) => { logger.info("Error occurred while running xattr command:", err); @@ -30,7 +33,10 @@ function executeXattrCommand(appStarskyPath: string): Promise { }); } -function executeCodesignCommand(appStarskyPath: string): Promise { +export function ExecuteCodesignCommand( + appStarskyPath: string, + codesign: string = "codesign" +): Promise { return new Promise((resolve, reject) => { const args = [ "--force", @@ -44,10 +50,10 @@ function executeCodesignCommand(appStarskyPath: string): Promise { cwd: path.dirname(appStarskyPath), detached: true, env: process.env, - argv0: "codesign", + argv0: codesign, }; - const codeSignSpawn = spawn("codesign", args, options); + const codeSignSpawn = spawn(codesign, args, options); codeSignSpawn.on("exit", (code) => { logger.info(`code sign EXIT: CODE: ${code}`); @@ -74,7 +80,7 @@ export function SpawnCleanMacOs(appStarskyPath: string, processPlatform: string) resolve(true); } - Promise.all([executeXattrCommand(appStarskyPath), executeCodesignCommand(appStarskyPath)]) + Promise.all([ExecuteXattrCommand(appStarskyPath), ExecuteCodesignCommand(appStarskyPath)]) .then(() => { resolve(true); }) From c10a64f199fb4c2c72e3e7ab14305e506d3369d0 Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 19:08:40 +0100 Subject: [PATCH 22/30] add test --- .../child-process/spawn-clean-mac-os.spec.ts | 89 +++++++++++++++++++ starskydesktop/src/shared/__test/mock-error | 3 + starskydesktop/src/shared/__test/starsky | 2 + starskydesktop/src/shared/slugify.spec.ts | 25 +++--- 4 files changed, 109 insertions(+), 10 deletions(-) create mode 100644 starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts create mode 100755 starskydesktop/src/shared/__test/mock-error create mode 100755 starskydesktop/src/shared/__test/starsky diff --git a/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts b/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts new file mode 100644 index 0000000000..99ef25b7e9 --- /dev/null +++ b/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts @@ -0,0 +1,89 @@ +import fs from "fs"; +import * as path from "path"; +import * as process from "process"; +import { ExecuteCodesignCommand, ExecuteXattrCommand, SpawnCleanMacOs } from "./spawn-clean-mac-os"; + +describe("SpawnCleanMacOs function", () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it("should resolve true when processPlatform is not darwin", async () => { + const result = await SpawnCleanMacOs("appStarskyPath", "notDarwinPlatform"); + + expect(result).toBe(true); + }); + + it("should call executeXattrCommand and executeCodesignCommand when processPlatform is darwin", async () => { + if (process.platform !== "darwin") { + return; + } + const exampleApp = path.join(process.cwd(), "src", "shared", "__test", "starsky"); + + console.log(exampleApp); + + const result = await SpawnCleanMacOs(exampleApp, "darwin"); + + expect(result).toBeTruthy(); + }); + + it("mock out ExecuteCodesignCommand happy flow", async () => { + if (process.platform !== "darwin" && process.platform !== "linux") { + return; + } + + const beforeCwd = process.cwd(); + const testDir = path.join(process.cwd(), "src", "shared", "__test"); + const starskyMockApp = path.join(process.cwd(), "src", "shared", "__test", "starsky"); + + process.chdir(testDir); + + fs.chmodSync(starskyMockApp, "755"); + + const result = await ExecuteCodesignCommand("./starsky", "./starsky"); + + expect(result).toBeUndefined(); + + process.chdir(beforeCwd); + }); + + it("mock out ExecuteXattrCommand happy flow", async () => { + if (process.platform !== "darwin" && process.platform !== "linux") { + return; + } + + const beforeCwd = process.cwd(); + const testDir = path.join(process.cwd(), "src", "shared", "__test"); + const starskyMockApp = path.join(process.cwd(), "src", "shared", "__test", "starsky"); + + process.chdir(testDir); + + fs.chmodSync(starskyMockApp, "755"); + + const result = await ExecuteXattrCommand("./starsky", "./starsky"); + + expect(result).toBeUndefined(); + + process.chdir(beforeCwd); + }); + + it("mock out ExecuteXattrCommand error", async () => { + if (process.platform !== "darwin" && process.platform !== "linux") { + return; + } + + const beforeCwd = process.cwd(); + const testDir = path.join(process.cwd(), "src", "shared", "__test"); + const starskyMockApp = path.join(process.cwd(), "src", "shared", "__test", "mock-error"); + + process.chdir(testDir); + + fs.chmodSync(starskyMockApp, "755"); + + await expect(ExecuteXattrCommand("./starsky", "./mock-error")).rejects.toThrow( + new Error("xattr command exited with code 1 and signal null") + ); + + process.chdir(beforeCwd); + }); +}); diff --git a/starskydesktop/src/shared/__test/mock-error b/starskydesktop/src/shared/__test/mock-error new file mode 100755 index 0000000000..4a4a05e2d3 --- /dev/null +++ b/starskydesktop/src/shared/__test/mock-error @@ -0,0 +1,3 @@ +#!/bin/bash +echo "fake starsky" +exit 1 \ No newline at end of file diff --git a/starskydesktop/src/shared/__test/starsky b/starskydesktop/src/shared/__test/starsky new file mode 100755 index 0000000000..f4879bbeac --- /dev/null +++ b/starskydesktop/src/shared/__test/starsky @@ -0,0 +1,2 @@ +#!/bin/bash +echo "fake starsky" \ No newline at end of file diff --git a/starskydesktop/src/shared/slugify.spec.ts b/starskydesktop/src/shared/slugify.spec.ts index 88e3c0a20b..0e5c3dbdb9 100644 --- a/starskydesktop/src/shared/slugify.spec.ts +++ b/starskydesktop/src/shared/slugify.spec.ts @@ -2,27 +2,32 @@ import { Slugify } from "./slugify"; describe("Slugify", () => { it("test lowercase", () => { - const slugifyResult = Slugify("Test"); - expect(slugifyResult).toBe("test"); + const slugifyResult1 = Slugify("Test"); + // it should remove the capital at start + expect(slugifyResult1).toBe("test"); }); it("test replace ----", () => { - const slugifyResult = Slugify("test-----test"); - expect(slugifyResult).toBe("test-test"); + const slugifyResult2 = Slugify("test-----test"); + // it should give a slugified result + expect(slugifyResult2).toBe("test-test"); }); it("test trim", () => { - const slugifyResult = Slugify(" test"); - expect(slugifyResult).toBe("test"); + const slugifyResult3 = Slugify(" test"); + // it should trim before + expect(slugifyResult3).toBe("test"); }); it("test remove $$", () => { - const slugifyResult = Slugify("test$$$test"); - expect(slugifyResult).toBe("testtest"); + const slugifyResult4 = Slugify("test$$$test"); + // it should remove the dollar signs + expect(slugifyResult4).toBe("testtest"); }); it("test space", () => { - const slugifyResult = Slugify("test test"); - expect(slugifyResult).toBe("test-test"); + const slugifyResult5 = Slugify("test test"); + // it should replace the space with a dash + expect(slugifyResult5).toBe("test-test"); }); }); From bc9d66417d41d7d3d1ac6546f7ae4eabb41f6f18 Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 19:11:32 +0100 Subject: [PATCH 23/30] remove unused code --- .../app/edit-file/is-application-running.ts | 48 ------------------- 1 file changed, 48 deletions(-) delete mode 100644 starskydesktop/src/app/edit-file/is-application-running.ts diff --git a/starskydesktop/src/app/edit-file/is-application-running.ts b/starskydesktop/src/app/edit-file/is-application-running.ts deleted file mode 100644 index 2d45f5d86d..0000000000 --- a/starskydesktop/src/app/edit-file/is-application-running.ts +++ /dev/null @@ -1,48 +0,0 @@ -import * as childProcess from "child_process"; -import logger from "../logger/logger"; - -export const IsApplicationRunning = (query: string) => { - return new Promise((resolve, reject) => { - const { platform } = process; - let cmd = ""; - let args: string[] = []; - switch (platform) { - case "win32": - cmd = `tasklist`; - break; - case "darwin": - cmd = "sh"; - args = ["-c", `ps aux | grep ${query}`]; - break; - case "linux": - cmd = "ps"; - args = ["-A"]; - break; - default: - break; - } - - const starskyChild = childProcess.spawn(cmd, args); - - let stdOutData = ""; - - starskyChild.stdout.on("data", (stdout: string) => { - stdOutData += stdout.toString(); - }); - - starskyChild.stdout.on("end", () => { - const queryLowercaseNoEscape = `(grep )?${ - query.toLowerCase().replace(/\\ /gi, " ").replace(/\//gi, ".")}`; - const matches = ( - stdOutData.match(new RegExp(queryLowercaseNoEscape, "ig")) || [] - ).filter((p) => p.indexOf("grep") === -1); - resolve(matches.length >= 1); - }); - - starskyChild.stderr.on("data", (data :string) => { - logger.info("IsApplicationRunning"); - logger.info(`stderr: ${data.toString()}`); - reject(); - }); - }); -}; From 1ca35bc3ee567e93234f6be689a73c1aa1582694 Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 19:12:45 +0100 Subject: [PATCH 24/30] rename to setup --- .../app/child-process/spawn-clean-mac-os.spec.ts | 14 +++++++------- .../src/{shared => setup}/__test/mock-error | 0 .../src/{shared => setup}/__test/starsky | 0 3 files changed, 7 insertions(+), 7 deletions(-) rename starskydesktop/src/{shared => setup}/__test/mock-error (100%) rename starskydesktop/src/{shared => setup}/__test/starsky (100%) diff --git a/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts b/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts index 99ef25b7e9..b6a716733c 100644 --- a/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts +++ b/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts @@ -18,7 +18,7 @@ describe("SpawnCleanMacOs function", () => { if (process.platform !== "darwin") { return; } - const exampleApp = path.join(process.cwd(), "src", "shared", "__test", "starsky"); + const exampleApp = path.join(process.cwd(), "src", "setup", "__test", "starsky"); console.log(exampleApp); @@ -33,8 +33,8 @@ describe("SpawnCleanMacOs function", () => { } const beforeCwd = process.cwd(); - const testDir = path.join(process.cwd(), "src", "shared", "__test"); - const starskyMockApp = path.join(process.cwd(), "src", "shared", "__test", "starsky"); + const testDir = path.join(process.cwd(), "src", "setup", "__test"); + const starskyMockApp = path.join(process.cwd(), "src", "setup", "__test", "starsky"); process.chdir(testDir); @@ -53,8 +53,8 @@ describe("SpawnCleanMacOs function", () => { } const beforeCwd = process.cwd(); - const testDir = path.join(process.cwd(), "src", "shared", "__test"); - const starskyMockApp = path.join(process.cwd(), "src", "shared", "__test", "starsky"); + const testDir = path.join(process.cwd(), "src", "setup", "__test"); + const starskyMockApp = path.join(process.cwd(), "src", "setup", "__test", "starsky"); process.chdir(testDir); @@ -73,8 +73,8 @@ describe("SpawnCleanMacOs function", () => { } const beforeCwd = process.cwd(); - const testDir = path.join(process.cwd(), "src", "shared", "__test"); - const starskyMockApp = path.join(process.cwd(), "src", "shared", "__test", "mock-error"); + const testDir = path.join(process.cwd(), "src", "setup", "__test"); + const starskyMockApp = path.join(process.cwd(), "src", "setup", "__test", "mock-error"); process.chdir(testDir); diff --git a/starskydesktop/src/shared/__test/mock-error b/starskydesktop/src/setup/__test/mock-error similarity index 100% rename from starskydesktop/src/shared/__test/mock-error rename to starskydesktop/src/setup/__test/mock-error diff --git a/starskydesktop/src/shared/__test/starsky b/starskydesktop/src/setup/__test/starsky similarity index 100% rename from starskydesktop/src/shared/__test/starsky rename to starskydesktop/src/setup/__test/starsky From 4442dc08b54d96ee363ec12603a5751c927e7754 Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 19:18:10 +0100 Subject: [PATCH 25/30] test this --- .../src/app/child-process/spawn-clean-mac-os.spec.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts b/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts index b6a716733c..16cf3ec8d7 100644 --- a/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts +++ b/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts @@ -22,13 +22,14 @@ describe("SpawnCleanMacOs function", () => { console.log(exampleApp); + // real one: const result = await SpawnCleanMacOs(exampleApp, "darwin"); expect(result).toBeTruthy(); }); it("mock out ExecuteCodesignCommand happy flow", async () => { - if (process.platform !== "darwin" && process.platform !== "linux") { + if (process.platform === "win32") { return; } @@ -48,7 +49,7 @@ describe("SpawnCleanMacOs function", () => { }); it("mock out ExecuteXattrCommand happy flow", async () => { - if (process.platform !== "darwin" && process.platform !== "linux") { + if (process.platform === "win32") { return; } @@ -68,7 +69,7 @@ describe("SpawnCleanMacOs function", () => { }); it("mock out ExecuteXattrCommand error", async () => { - if (process.platform !== "darwin" && process.platform !== "linux") { + if (process.platform === "win32") { return; } From c9054cba09fe0bf81f0ba53f17bf79a6de82769a Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 22:16:35 +0100 Subject: [PATCH 26/30] add logger --- starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts b/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts index 16cf3ec8d7..1fadb2bcec 100644 --- a/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts +++ b/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts @@ -41,6 +41,8 @@ describe("SpawnCleanMacOs function", () => { fs.chmodSync(starskyMockApp, "755"); + console.log("chmod done"); + const result = await ExecuteCodesignCommand("./starsky", "./starsky"); expect(result).toBeUndefined(); From 6a97cd5ba87623b033a90e5cb6e544eab266d6f7 Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 22:20:12 +0100 Subject: [PATCH 27/30] add logger --- starskydesktop/src/app/child-process/spawn-clean-mac-os.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts b/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts index 31cf741a93..c522730a89 100644 --- a/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts +++ b/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts @@ -46,6 +46,8 @@ export function ExecuteCodesignCommand( appStarskyPath, ]; + logger.info(`appStarskyPath: ${appStarskyPath} - codesign: ${codesign}`); + const options = { cwd: path.dirname(appStarskyPath), detached: true, From be247e2138255ef4bbe220d4fac124d121e3e937 Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 22:24:48 +0100 Subject: [PATCH 28/30] try again --- .../src/app/child-process/spawn-clean-mac-os.spec.ts | 7 +++++-- starskydesktop/src/app/child-process/spawn-clean-mac-os.ts | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts b/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts index 1fadb2bcec..c1386d2620 100644 --- a/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts +++ b/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts @@ -14,7 +14,7 @@ describe("SpawnCleanMacOs function", () => { expect(result).toBe(true); }); - it("should call executeXattrCommand and executeCodesignCommand when processPlatform is darwin", async () => { + it.skip("should call executeXattrCommand and executeCodesignCommand when processPlatform is darwin", async () => { if (process.platform !== "darwin") { return; } @@ -37,14 +37,17 @@ describe("SpawnCleanMacOs function", () => { const testDir = path.join(process.cwd(), "src", "setup", "__test"); const starskyMockApp = path.join(process.cwd(), "src", "setup", "__test", "starsky"); + console.log(`testDir: ${testDir}`); + process.chdir(testDir); fs.chmodSync(starskyMockApp, "755"); - console.log("chmod done"); const result = await ExecuteCodesignCommand("./starsky", "./starsky"); + console.log(`--- ExecuteCodesignCommand`); + expect(result).toBeUndefined(); process.chdir(beforeCwd); diff --git a/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts b/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts index c522730a89..2cf07e231f 100644 --- a/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts +++ b/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts @@ -46,7 +46,7 @@ export function ExecuteCodesignCommand( appStarskyPath, ]; - logger.info(`appStarskyPath: ${appStarskyPath} - codesign: ${codesign}`); + logger.info(`appStarskyPath: ${appStarskyPath} - codesign: ${codesign} -- `); const options = { cwd: path.dirname(appStarskyPath), From 2f272f5fead4f09961ebda81daedca85a74ae41b Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 22:27:18 +0100 Subject: [PATCH 29/30] try this --- starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts | 2 +- starskydesktop/src/app/child-process/spawn-clean-mac-os.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts b/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts index c1386d2620..df22942993 100644 --- a/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts +++ b/starskydesktop/src/app/child-process/spawn-clean-mac-os.spec.ts @@ -14,7 +14,7 @@ describe("SpawnCleanMacOs function", () => { expect(result).toBe(true); }); - it.skip("should call executeXattrCommand and executeCodesignCommand when processPlatform is darwin", async () => { + it("should call executeXattrCommand and executeCodesignCommand when processPlatform is darwin", async () => { if (process.platform !== "darwin") { return; } diff --git a/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts b/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts index 2cf07e231f..2ba2ce6852 100644 --- a/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts +++ b/starskydesktop/src/app/child-process/spawn-clean-mac-os.ts @@ -80,6 +80,7 @@ export function SpawnCleanMacOs(appStarskyPath: string, processPlatform: string) return new Promise((resolve, reject) => { if (processPlatform !== "darwin") { resolve(true); + return; } Promise.all([ExecuteXattrCommand(appStarskyPath), ExecuteCodesignCommand(appStarskyPath)]) From f5bf8a26f08207d3c7f5d17f9ca2fe29170762e0 Mon Sep 17 00:00:00 2001 From: Dion Date: Mon, 11 Mar 2024 22:30:30 +0100 Subject: [PATCH 30/30] add linter --- starskydesktop/webpack.config.mjs | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/starskydesktop/webpack.config.mjs b/starskydesktop/webpack.config.mjs index 64a4596fb7..dfca50b8f7 100644 --- a/starskydesktop/webpack.config.mjs +++ b/starskydesktop/webpack.config.mjs @@ -1,3 +1,4 @@ +// (randomly disabled sometimes) eslint-disable-next-line import/no-unresolved import CopyPlugin from 'copy-webpack-plugin'; import path from 'path'; import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin'; @@ -96,18 +97,6 @@ const preloadConfig = merge(commonConfig, { output: { filename: 'preload-main.bundle.js' }, }); -// import HtmlWebpackPlugin from 'html-webpack-plugin'; -// const rendererConfig = merge(commonConfig, { -// entry: './src/renderer/renderer.tsx', -// target: 'electron-renderer', -// output: { filename: 'renderer.bundle.js' }, -// plugins: [ -// new HtmlWebpackPlugin({ -// template: path.resolve(__dirname, './public/index.html'), -// }), -// ], -// }); - const clientConfig = merge(commonConfig, { entry: { 'reload-redirect': "./src/client/script/reload-redirect.ts",