diff --git a/angular.json b/angular.json
index 55eaa843..3d29bcbd 100644
--- a/angular.json
+++ b/angular.json
@@ -11,15 +11,13 @@
"prefix": "app",
"architect": {
"build": {
- "builder": "@angular-devkit/build-angular:application",
+ "builder": "@angular-devkit/build-angular:browser",
"options": {
- "outputPath": {
- "base": "dist/frontend"
- },
+ "outputPath": "dist/frontend",
"index": "src/index.html",
+ "main": "src/main.ts",
"polyfills": [
- "zone.js",
- "@angular/localize/init"
+ "zone.js"
],
"tsConfig": "tsconfig.app.json",
"assets": [
@@ -30,27 +28,28 @@
"node_modules/bootstrap/dist/css/bootstrap.min.css",
"src/styles.css"
],
- "scripts": [],
- "browser": "src/main.ts"
+ "scripts": []
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
- "maximumWarning": "500kb",
- "maximumError": "1mb"
+ "maximumWarning": "1mb",
+ "maximumError": "2mb"
},
{
"type": "anyComponentStyle",
- "maximumWarning": "2kb",
- "maximumError": "5kb"
+ "maximumWarning": "10kb",
+ "maximumError": "10kb"
}
],
"outputHashing": "all"
},
"development": {
+ "buildOptimizer": false,
"optimization": false,
+ "vendorChunk": true,
"extractLicenses": false,
"sourceMap": true,
"namedChunks": true
@@ -62,10 +61,10 @@
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
- "buildTarget": "frontend:build:production"
+ "browserTarget": "frontend:build:production"
},
"development": {
- "buildTarget": "frontend:build:development"
+ "browserTarget": "frontend:build:development"
}
},
"defaultConfiguration": "development"
@@ -73,7 +72,7 @@
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
- "buildTarget": "frontend:build"
+ "browserTarget": "frontend:build"
}
},
"test": {
@@ -98,6 +97,6 @@
}
},
"cli": {
- "analytics": false
+ "analytics": "0812ed0f-7fe3-4ead-911a-474b02068946"
}
}
diff --git a/app.js b/app.js
index 5bc5e5c5..f72a50ff 100644
--- a/app.js
+++ b/app.js
@@ -4,6 +4,7 @@ const url = require("url");
const path = require("path");
let mainWindow;
+let zipPaths = [];
function createWindow() {
mainWindow = new BrowserWindow({
@@ -21,7 +22,7 @@ function createWindow() {
mainWindow.loadURL(
url.format({
- pathname: path.join(__dirname, `/dist/frontend/browser/index.html`),
+ pathname: path.join(__dirname, `/dist/frontend/index.html`),
protocol: "file:",
slashes: true,
})
@@ -52,19 +53,23 @@ ipcMain.handle("selectFiles", async () => {
ipcMain.handle("getZipFromFolder", async () => {
return new Promise(async(resolve, reject) => {
+ console.log('[Electron] Opening folder dialog...');
let folder = await dialog.showOpenDialog(mainWindow, {
properties: ["openDirectory"],
});
-
+
if(folder.filePaths.length === 1) {
let zipPath = folder.filePaths[0];
let tempPath = path.join(__dirname, "temp.zip");
zipPaths = [zipPath, tempPath];
+ console.log('[Electron] Folder selected:', zipPath);
+ console.log('[Electron] Will zip to:', tempPath);
return resolve(true);
}
+ console.log('[Electron] No folder selected or cancelled');
return reject(false);
})
});
@@ -72,11 +77,74 @@ ipcMain.handle("getZipFromFolder", async () => {
ipcMain.handle("zipDirectory", async() => {
return new Promise(async(resolve, reject) => {
try {
- const { zip } = await import('zip-a-folder');
- await zip(zipPaths[0], zipPaths[1]);
- const fileData = await fs.promises.readFile(zipPaths[1]);
- return resolve(fileData);
+ console.log('[Electron] Starting zip of:', zipPaths[0]);
+ console.log('[Electron] Output path:', zipPaths[1]);
+
+ // Check if node_modules exists and warn about size
+ const nodeModulesPath = path.join(zipPaths[0], 'node_modules');
+ const hasNodeModules = fs.existsSync(nodeModulesPath);
+
+ if (hasNodeModules) {
+ console.log('[Electron] WARNING: node_modules detected - excluding from zip for faster processing');
+ console.log('[Electron] OSI will run npm install automatically if needed');
+ }
+
+ // Dynamic import for ES modules
+ const { zip } = await import("zip-a-folder");
+ const archiver = await import("archiver");
+ const streamBuffers = await import("stream-buffers");
+
+ // Create a buffer to store the zip
+ const outputStreamBuffer = new streamBuffers.default.WritableStreamBuffer({
+ initialSize: (100 * 1024),
+ incrementAmount: (10 * 1024)
+ });
+
+ // Create archive with exclusions
+ const archive = archiver.default('zip', {
+ zlib: { level: 5 } // Moderate compression for speed
+ });
+
+ archive.on('error', (err) => {
+ console.error('[Electron] Archive error:', err);
+ reject(err);
+ });
+
+ archive.on('end', async () => {
+ console.log('[Electron] Archive finalized, size:', archive.pointer(), 'bytes');
+ const buffer = outputStreamBuffer.getContents();
+
+ // Write to temp file
+ await fs.promises.writeFile(zipPaths[1], buffer);
+ console.log('[Electron] Zip file written to:', zipPaths[1]);
+
+ return resolve(buffer);
+ });
+
+ // Pipe archive to buffer
+ archive.pipe(outputStreamBuffer);
+
+ // Add directory with exclusions
+ archive.glob('**/*', {
+ cwd: zipPaths[0],
+ ignore: [
+ '**/node_modules/**',
+ '**/.git/**',
+ '**/dist/**',
+ '**/build/**',
+ '**/.next/**',
+ '**/coverage/**',
+ '**/.cache/**',
+ '**/tmp/**',
+ '**/*.log'
+ ]
+ });
+
+ console.log('[Electron] Creating optimized zip (excluding node_modules and build artifacts)...');
+ await archive.finalize();
+
} catch(error) {
+ console.error('[Electron] Zip error:', error);
return reject(error);
}
})
diff --git a/doc/changelog.md b/doc/changelog.md
index c6f417dc..ff57288e 100644
--- a/doc/changelog.md
+++ b/doc/changelog.md
@@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [Unreleased] - (11/22/25)
+### Added
+- Security Dashboard that surfaces per-project vulnerability totals, severity cards, active alerts, and historical trends, powered by the new backend history endpoints.
+- Severity filters, project dropdowns, and improved toast workflows so users can acknowledge alerts and pivot between SBOMs faster.
+
+### Changed
+- Optimized the Electron zip routine to skip `node_modules`/build artifacts before sending projects to OSI, drastically reducing upload times.
+- Raised the Angular `anyComponentStyle` budget to 10kb to eliminate noisy build warnings from rich views like upload/viewer.
+
## [v1.2.1] - (11/29/23)
### Added
- Support for XML CDX SBOM's in Convert and Generate added
diff --git a/package-lock.json b/package-lock.json
index 47ddb966..b4df82bf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
- "name": "svip",
- "version": "0.0.0",
+ "name": "sbox-gui",
+ "version": "1.2.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "svip",
- "version": "0.0.0",
+ "name": "sbox-gui",
+ "version": "1.2.1",
"dependencies": {
"@angular/animations": "^19.2.14",
"@angular/common": "^19.2.14",
@@ -18,10 +18,12 @@
"@angular/router": "^19.2.14",
"@ng-bootstrap/ng-bootstrap": "^18.0.0",
"@popperjs/core": "^2.11.6",
+ "archiver": "^7.0.1",
"bootstrap": "^5.3.7",
"fflate": "^0.8.2",
"file-saver": "^2.0.5",
"rxjs": "~7.8.2",
+ "stream-buffers": "^3.0.3",
"tslib": "^2.3.0",
"zip-a-folder": "^3.1.9",
"zone.js": "~0.15.1"
@@ -59,13 +61,13 @@
}
},
"node_modules/@angular-devkit/architect": {
- "version": "0.1902.15",
- "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1902.15.tgz",
- "integrity": "sha512-RbqhStc6ZoRv57ZqLB36VOkBkAdU3nNezCvIs0AJV5V4+vLPMrb0hpIB0sF+9yMlMjWsolnRsj0/Fil+zQG3bw==",
+ "version": "0.1902.19",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1902.19.tgz",
+ "integrity": "sha512-iexYDIYpGAeAU7T60bGcfrGwtq1bxpZixYxWuHYiaD1b5baQgNSfd1isGEOh37GgDNsf4In9i2LOLPm0wBdtgQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/core": "19.2.15",
+ "@angular-devkit/core": "19.2.19",
"rxjs": "7.8.1"
},
"engines": {
@@ -85,17 +87,17 @@
}
},
"node_modules/@angular-devkit/build-angular": {
- "version": "19.2.15",
- "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-19.2.15.tgz",
- "integrity": "sha512-mqudAcyrSp/E7ZQdQoHfys0/nvQuwyJDaAzj3qL3HUStuUzb5ULNOj2f6sFBo+xYo+/WT8IzmzDN9DCqDgvFaA==",
+ "version": "19.2.19",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-19.2.19.tgz",
+ "integrity": "sha512-uIxi6Vzss6+ycljVhkyPUPWa20w8qxJL9lEn0h6+sX/fhM8Djt0FHIuTQjoX58EoMaQ/1jrXaRaGimkbaFcG9A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "2.3.0",
- "@angular-devkit/architect": "0.1902.15",
- "@angular-devkit/build-webpack": "0.1902.15",
- "@angular-devkit/core": "19.2.15",
- "@angular/build": "19.2.15",
+ "@angular-devkit/architect": "0.1902.19",
+ "@angular-devkit/build-webpack": "0.1902.19",
+ "@angular-devkit/core": "19.2.19",
+ "@angular/build": "19.2.19",
"@babel/core": "7.26.10",
"@babel/generator": "7.26.10",
"@babel/helper-annotate-as-pure": "7.25.9",
@@ -106,7 +108,7 @@
"@babel/preset-env": "7.26.9",
"@babel/runtime": "7.26.10",
"@discoveryjs/json-ext": "0.6.3",
- "@ngtools/webpack": "19.2.15",
+ "@ngtools/webpack": "19.2.19",
"@vitejs/plugin-basic-ssl": "1.2.0",
"ansi-colors": "4.1.3",
"autoprefixer": "10.4.20",
@@ -160,7 +162,7 @@
"@angular/localize": "^19.0.0 || ^19.2.0-next.0",
"@angular/platform-server": "^19.0.0 || ^19.2.0-next.0",
"@angular/service-worker": "^19.0.0 || ^19.2.0-next.0",
- "@angular/ssr": "^19.2.15",
+ "@angular/ssr": "^19.2.19",
"@web/test-runner": "^0.20.0",
"browser-sync": "^3.0.2",
"jest": "^29.5.0",
@@ -210,208 +212,82 @@
}
}
},
- "node_modules/@angular-devkit/build-angular/node_modules/@angular/build": {
- "version": "19.2.15",
- "resolved": "https://registry.npmjs.org/@angular/build/-/build-19.2.15.tgz",
- "integrity": "sha512-iE4fp4d5ALu702uoL6/YkjM2JlGEXZ5G+RVzq3W2jg/Ft6ISAQnRKB6mymtetDD6oD7i87e8uSu9kFVNBauX2w==",
+ "node_modules/@angular-devkit/build-angular/node_modules/@babel/core": {
+ "version": "7.26.10",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
+ "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@ampproject/remapping": "2.3.0",
- "@angular-devkit/architect": "0.1902.15",
- "@babel/core": "7.26.10",
- "@babel/helper-annotate-as-pure": "7.25.9",
- "@babel/helper-split-export-declaration": "7.24.7",
- "@babel/plugin-syntax-import-attributes": "7.26.0",
- "@inquirer/confirm": "5.1.6",
- "@vitejs/plugin-basic-ssl": "1.2.0",
- "beasties": "0.3.2",
- "browserslist": "^4.23.0",
- "esbuild": "0.25.4",
- "fast-glob": "3.3.3",
- "https-proxy-agent": "7.0.6",
- "istanbul-lib-instrument": "6.0.3",
- "listr2": "8.2.5",
- "magic-string": "0.30.17",
- "mrmime": "2.0.1",
- "parse5-html-rewriting-stream": "7.0.0",
- "picomatch": "4.0.2",
- "piscina": "4.8.0",
- "rollup": "4.34.8",
- "sass": "1.85.0",
- "semver": "7.7.1",
- "source-map-support": "0.5.21",
- "vite": "6.2.7",
- "watchpack": "2.4.2"
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.10",
+ "@babel/helper-compilation-targets": "^7.26.5",
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helpers": "^7.26.10",
+ "@babel/parser": "^7.26.10",
+ "@babel/template": "^7.26.9",
+ "@babel/traverse": "^7.26.10",
+ "@babel/types": "^7.26.10",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
},
"engines": {
- "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
- "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
- "yarn": ">= 1.13.0"
- },
- "optionalDependencies": {
- "lmdb": "3.2.6"
- },
- "peerDependencies": {
- "@angular/compiler": "^19.0.0 || ^19.2.0-next.0",
- "@angular/compiler-cli": "^19.0.0 || ^19.2.0-next.0",
- "@angular/localize": "^19.0.0 || ^19.2.0-next.0",
- "@angular/platform-server": "^19.0.0 || ^19.2.0-next.0",
- "@angular/service-worker": "^19.0.0 || ^19.2.0-next.0",
- "@angular/ssr": "^19.2.15",
- "karma": "^6.4.0",
- "less": "^4.2.0",
- "ng-packagr": "^19.0.0 || ^19.2.0-next.0",
- "postcss": "^8.4.0",
- "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0",
- "typescript": ">=5.5 <5.9"
+ "node": ">=6.9.0"
},
- "peerDependenciesMeta": {
- "@angular/localize": {
- "optional": true
- },
- "@angular/platform-server": {
- "optional": true
- },
- "@angular/service-worker": {
- "optional": true
- },
- "@angular/ssr": {
- "optional": true
- },
- "karma": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "ng-packagr": {
- "optional": true
- },
- "postcss": {
- "optional": true
- },
- "tailwindcss": {
- "optional": true
- }
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
}
},
- "node_modules/@angular-devkit/build-angular/node_modules/@angular/build/node_modules/vite": {
- "version": "6.2.7",
- "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.7.tgz",
- "integrity": "sha512-qg3LkeuinTrZoJHHF94coSaTfIPyBYoywp+ys4qu20oSJFbKMYoIJo0FWJT9q6Vp49l6z9IsJRbHdcGtiKbGoQ==",
+ "node_modules/@angular-devkit/build-angular/node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.25.0",
- "postcss": "^8.5.3",
- "rollup": "^4.30.1"
- },
+ "license": "ISC",
"bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
- "jiti": ">=1.21.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "sass-embedded": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.16.0",
- "tsx": "^4.8.1",
- "yaml": "^2.4.2"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "jiti": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- },
- "tsx": {
- "optional": true
- },
- "yaml": {
- "optional": true
- }
+ "semver": "bin/semver.js"
}
},
- "node_modules/@angular-devkit/build-angular/node_modules/@angular/build/node_modules/vite/node_modules/postcss": {
- "version": "8.5.6",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
- "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "node_modules/@angular-devkit/build-angular/node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
+ "license": "MIT"
+ },
+ "node_modules/@angular-devkit/build-angular/node_modules/istanbul-lib-instrument": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz",
+ "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==",
+ "dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
- "nanoid": "^3.3.11",
- "picocolors": "^1.1.1",
- "source-map-js": "^1.2.1"
+ "@babel/core": "^7.23.9",
+ "@babel/parser": "^7.23.9",
+ "@istanbuljs/schema": "^0.1.3",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^7.5.4"
},
"engines": {
- "node": "^10 || ^12 || >=14"
+ "node": ">=10"
}
},
- "node_modules/@angular-devkit/build-angular/node_modules/@ngtools/webpack": {
- "version": "19.2.15",
- "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-19.2.15.tgz",
- "integrity": "sha512-H37nop/wWMkSgoU2VvrMzanHePdLRRrX52nC5tT2ZhH3qP25+PrnMyw11PoLDLv3iWXC68uB1AiKNIT+jiQbuQ==",
+ "node_modules/@angular-devkit/build-angular/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true,
"license": "MIT",
"engines": {
- "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
- "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
- "yarn": ">= 1.13.0"
+ "node": ">=12"
},
- "peerDependencies": {
- "@angular/compiler-cli": "^19.0.0 || ^19.2.0-next.0",
- "typescript": ">=5.5 <5.9",
- "webpack": "^5.54.0"
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/@angular-devkit/build-angular/node_modules/rxjs": {
@@ -424,14 +300,27 @@
"tslib": "^2.1.0"
}
},
+ "node_modules/@angular-devkit/build-angular/node_modules/semver": {
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@angular-devkit/build-webpack": {
- "version": "0.1902.15",
- "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1902.15.tgz",
- "integrity": "sha512-pIfZeizWsViXx8bsMoBLZw7Tl7uFf7bM7hAfmNwk0bb0QGzx5k1BiW6IKWyaG+Dg6U4UCrlNpIiut2b78HwQZw==",
+ "version": "0.1902.19",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1902.19.tgz",
+ "integrity": "sha512-x2tlGg5CsUveFzuRuqeHknSbGirSAoRynEh+KqPRGK0G3WpMViW/M8SuVurecasegfIrDWtYZ4FnVxKqNbKwXQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/architect": "0.1902.15",
+ "@angular-devkit/architect": "0.1902.19",
"rxjs": "7.8.1"
},
"engines": {
@@ -455,9 +344,9 @@
}
},
"node_modules/@angular-devkit/core": {
- "version": "19.2.15",
- "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.15.tgz",
- "integrity": "sha512-pU2RZYX6vhd7uLSdLwPnuBcr0mXJSjp3EgOXKsrlQFQZevc+Qs+2JdXgIElnOT/aDqtRtriDmLlSbtdE8n3ZbA==",
+ "version": "19.2.19",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.19.tgz",
+ "integrity": "sha512-JbLL+4IMLMBgjLZlnPG4lYDfz4zGrJ/s6Aoon321NJKuw1Kb1k5KpFu9dUY0BqLIe8xPQ2UJBpI+xXdK5MXMHQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -482,6 +371,19 @@
}
}
},
+ "node_modules/@angular-devkit/core/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/@angular-devkit/core/node_modules/rxjs": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
@@ -493,13 +395,13 @@
}
},
"node_modules/@angular-devkit/schematics": {
- "version": "19.2.15",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.15.tgz",
- "integrity": "sha512-kNOJ+3vekJJCQKWihNmxBkarJzNW09kP5a9E1SRNiQVNOUEeSwcRR0qYotM65nx821gNzjjhJXnAZ8OazWldrg==",
+ "version": "19.2.19",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.19.tgz",
+ "integrity": "sha512-J4Jarr0SohdrHcb40gTL4wGPCQ952IMWF1G/MSAQfBAPvA9ZKApYhpxcY7PmehVePve+ujpus1dGsJ7dPxz8Kg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/core": "19.2.15",
+ "@angular-devkit/core": "19.2.19",
"jsonc-parser": "3.3.1",
"magic-string": "0.30.17",
"ora": "5.4.1",
@@ -522,9 +424,9 @@
}
},
"node_modules/@angular/animations": {
- "version": "19.2.14",
- "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-19.2.14.tgz",
- "integrity": "sha512-xhl8fLto5HHJdVj8Nb6EoBEiTAcXuWDYn1q5uHcGxyVH3kiwENWy/2OQXgCr2CuWo2e6hNUGzSLf/cjbsMNqEA==",
+ "version": "19.2.15",
+ "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-19.2.15.tgz",
+ "integrity": "sha512-eq9vokLU8bjs7g/Znz8zJUQEOhT0MAJ/heBCHbB35S+CtZXJmItrsEqkI1tsRiR58NKXB6cbhBhULVo6qJbhXQ==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -533,31 +435,208 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
- "@angular/common": "19.2.14",
- "@angular/core": "19.2.14"
+ "@angular/common": "19.2.15",
+ "@angular/core": "19.2.15"
}
},
- "node_modules/@angular/cli": {
- "version": "19.2.15",
- "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-19.2.15.tgz",
- "integrity": "sha512-YRIpARHWSOnWkHusUWTQgeUrPWMjWvtQrOkjWc6stF36z2KUzKMEng6EzUvH6sZolNSwVwOFpODEP0ut4aBkvQ==",
+ "node_modules/@angular/build": {
+ "version": "19.2.19",
+ "resolved": "https://registry.npmjs.org/@angular/build/-/build-19.2.19.tgz",
+ "integrity": "sha512-SFzQ1bRkNFiOVu+aaz+9INmts7tDUrsHLEr9HmARXr9qk5UmR8prlw39p2u+Bvi6/lCiJ18TZMQQl9mGyr63lg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/architect": "0.1902.15",
- "@angular-devkit/core": "19.2.15",
- "@angular-devkit/schematics": "19.2.15",
- "@inquirer/prompts": "7.3.2",
- "@listr2/prompt-adapter-inquirer": "2.0.18",
- "@schematics/angular": "19.2.15",
- "@yarnpkg/lockfile": "1.1.0",
- "ini": "5.0.0",
- "jsonc-parser": "3.3.1",
- "listr2": "8.2.5",
- "npm-package-arg": "12.0.2",
- "npm-pick-manifest": "10.0.0",
- "pacote": "20.0.0",
- "resolve": "1.22.10",
+ "@ampproject/remapping": "2.3.0",
+ "@angular-devkit/architect": "0.1902.19",
+ "@babel/core": "7.26.10",
+ "@babel/helper-annotate-as-pure": "7.25.9",
+ "@babel/helper-split-export-declaration": "7.24.7",
+ "@babel/plugin-syntax-import-attributes": "7.26.0",
+ "@inquirer/confirm": "5.1.6",
+ "@vitejs/plugin-basic-ssl": "1.2.0",
+ "beasties": "0.3.2",
+ "browserslist": "^4.23.0",
+ "esbuild": "0.25.4",
+ "fast-glob": "3.3.3",
+ "https-proxy-agent": "7.0.6",
+ "istanbul-lib-instrument": "6.0.3",
+ "listr2": "8.2.5",
+ "magic-string": "0.30.17",
+ "mrmime": "2.0.1",
+ "parse5-html-rewriting-stream": "7.0.0",
+ "picomatch": "4.0.2",
+ "piscina": "4.8.0",
+ "rollup": "4.34.8",
+ "sass": "1.85.0",
+ "semver": "7.7.1",
+ "source-map-support": "0.5.21",
+ "vite": "6.4.1",
+ "watchpack": "2.4.2"
+ },
+ "engines": {
+ "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ },
+ "optionalDependencies": {
+ "lmdb": "3.2.6"
+ },
+ "peerDependencies": {
+ "@angular/compiler": "^19.0.0 || ^19.2.0-next.0",
+ "@angular/compiler-cli": "^19.0.0 || ^19.2.0-next.0",
+ "@angular/localize": "^19.0.0 || ^19.2.0-next.0",
+ "@angular/platform-server": "^19.0.0 || ^19.2.0-next.0",
+ "@angular/service-worker": "^19.0.0 || ^19.2.0-next.0",
+ "@angular/ssr": "^19.2.19",
+ "karma": "^6.4.0",
+ "less": "^4.2.0",
+ "ng-packagr": "^19.0.0 || ^19.2.0-next.0",
+ "postcss": "^8.4.0",
+ "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0",
+ "typescript": ">=5.5 <5.9"
+ },
+ "peerDependenciesMeta": {
+ "@angular/localize": {
+ "optional": true
+ },
+ "@angular/platform-server": {
+ "optional": true
+ },
+ "@angular/service-worker": {
+ "optional": true
+ },
+ "@angular/ssr": {
+ "optional": true
+ },
+ "karma": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "ng-packagr": {
+ "optional": true
+ },
+ "postcss": {
+ "optional": true
+ },
+ "tailwindcss": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@angular/build/node_modules/@babel/core": {
+ "version": "7.26.10",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
+ "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.10",
+ "@babel/helper-compilation-targets": "^7.26.5",
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helpers": "^7.26.10",
+ "@babel/parser": "^7.26.10",
+ "@babel/template": "^7.26.9",
+ "@babel/traverse": "^7.26.10",
+ "@babel/types": "^7.26.10",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@angular/build/node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@angular/build/node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@angular/build/node_modules/istanbul-lib-instrument": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz",
+ "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@babel/core": "^7.23.9",
+ "@babel/parser": "^7.23.9",
+ "@istanbuljs/schema": "^0.1.3",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@angular/build/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/@angular/build/node_modules/semver": {
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@angular/cli": {
+ "version": "19.2.19",
+ "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-19.2.19.tgz",
+ "integrity": "sha512-e9tAzFNOL4mMWfMnpC9Up83OCTOp2siIj8W41FCp8jfoEnw79AXDDLh3d70kOayiObchksTJVShslTogLUyhMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/architect": "0.1902.19",
+ "@angular-devkit/core": "19.2.19",
+ "@angular-devkit/schematics": "19.2.19",
+ "@inquirer/prompts": "7.3.2",
+ "@listr2/prompt-adapter-inquirer": "2.0.18",
+ "@schematics/angular": "19.2.19",
+ "@yarnpkg/lockfile": "1.1.0",
+ "ini": "5.0.0",
+ "jsonc-parser": "3.3.1",
+ "listr2": "8.2.5",
+ "npm-package-arg": "12.0.2",
+ "npm-pick-manifest": "10.0.0",
+ "pacote": "20.0.0",
+ "resolve": "1.22.10",
"semver": "7.7.1",
"symbol-observable": "4.0.0",
"yargs": "17.7.2"
@@ -571,10 +650,23 @@
"yarn": ">= 1.13.0"
}
},
+ "node_modules/@angular/cli/node_modules/semver": {
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@angular/common": {
- "version": "19.2.14",
- "resolved": "https://registry.npmjs.org/@angular/common/-/common-19.2.14.tgz",
- "integrity": "sha512-NcNklcuyqaTjOVGf7aru8APX9mjsnZ01gFZrn47BxHozhaR0EMRrotYQTdi8YdVjPkeYFYanVntSLfhyobq/jg==",
+ "version": "19.2.15",
+ "resolved": "https://registry.npmjs.org/@angular/common/-/common-19.2.15.tgz",
+ "integrity": "sha512-aVa/ctBYH/4qgA7r4sS7TV+/DzRYmcS+3d6l89pNKUXkI8gpmsd+r3FjccaemX4Wqru1QOrMvC+i+e7IBIVv0g==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -583,14 +675,14 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
- "@angular/core": "19.2.14",
+ "@angular/core": "19.2.15",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/compiler": {
- "version": "19.2.14",
- "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.2.14.tgz",
- "integrity": "sha512-ZqJDYOdhgKpVGNq3+n/Gbxma8DVYElDsoRe0tvNtjkWBVdaOxdZZUqmJ3kdCBsqD/aqTRvRBu0KGo9s2fCChkA==",
+ "version": "19.2.15",
+ "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.2.15.tgz",
+ "integrity": "sha512-hMHZU6/03xG0tbPDIm1hbVSTFLnRkGYfh+xdBwUMnIFYYTS0QJ2hdPfEZKCJIXm+fz9IAI5MPdDTfeyp0sgaHQ==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -600,9 +692,9 @@
}
},
"node_modules/@angular/compiler-cli": {
- "version": "19.2.14",
- "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-19.2.14.tgz",
- "integrity": "sha512-e9/h86ETjoIK2yTLE9aUeMCKujdg/du2pq7run/aINjop4RtnNOw+ZlSTUa6R65lP5CVwDup1kPytpAoifw8cA==",
+ "version": "19.2.15",
+ "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-19.2.15.tgz",
+ "integrity": "sha512-4r5tvGA2Ok3o8wROZBkF9qNKS7L0AEpdBIkAVJbLw2rBY2SlyycFIRYyV2+D1lJ1jq/f9U7uN6oon0MjTvNYkA==",
"license": "MIT",
"dependencies": {
"@babel/core": "7.26.9",
@@ -623,59 +715,14 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
- "@angular/compiler": "19.2.14",
+ "@angular/compiler": "19.2.15",
"typescript": ">=5.5 <5.9"
}
},
- "node_modules/@angular/compiler-cli/node_modules/@babel/core": {
- "version": "7.26.9",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz",
- "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==",
- "license": "MIT",
- "dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.26.2",
- "@babel/generator": "^7.26.9",
- "@babel/helper-compilation-targets": "^7.26.5",
- "@babel/helper-module-transforms": "^7.26.0",
- "@babel/helpers": "^7.26.9",
- "@babel/parser": "^7.26.9",
- "@babel/template": "^7.26.9",
- "@babel/traverse": "^7.26.9",
- "@babel/types": "^7.26.9",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "license": "MIT"
- },
- "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
"node_modules/@angular/core": {
- "version": "19.2.14",
- "resolved": "https://registry.npmjs.org/@angular/core/-/core-19.2.14.tgz",
- "integrity": "sha512-EVErpW9tGqJ/wNcAN3G/ErH8pHCJ8mM1E6bsJ8UJIpDTZkpqqYjBMtZS9YWH5n3KwUd1tAkAB2w8FK125AjDUQ==",
+ "version": "19.2.15",
+ "resolved": "https://registry.npmjs.org/@angular/core/-/core-19.2.15.tgz",
+ "integrity": "sha512-PxhzCwwm23N4Mq6oV7UPoYiJF4r6FzGhRSxOBBlEp322k7zEQbIxd/XO6F3eoG73qC1UsOXMYYv6GnQpx42y3A==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -689,9 +736,9 @@
}
},
"node_modules/@angular/forms": {
- "version": "19.2.14",
- "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.2.14.tgz",
- "integrity": "sha512-hWtDOj2B0AuRTf+nkMJeodnFpDpmEK9OIhIv1YxcRe73ooaxrIdjgugkElO8I9Tj0E4/7m117ezhWDUkbqm1zA==",
+ "version": "19.2.15",
+ "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.2.15.tgz",
+ "integrity": "sha512-pZDElcYPmNzPxvWJpZQCIizsNApDIfk9xLJE4I8hzLISfWGbQvfjuuarDAuQZEXudeLXoDOstDXkDja40muLGg==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -700,16 +747,16 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
- "@angular/common": "19.2.14",
- "@angular/core": "19.2.14",
- "@angular/platform-browser": "19.2.14",
+ "@angular/common": "19.2.15",
+ "@angular/core": "19.2.15",
+ "@angular/platform-browser": "19.2.15",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/localize": {
- "version": "19.2.14",
- "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-19.2.14.tgz",
- "integrity": "sha512-T2qPVE5N4qe1rQnx9tkxqUzXV+gUgAwSpVG+vHHRJe//jxCIVfk5zyPd2Z9nFzwGarHP61hvnEzbdbZHtCmbcQ==",
+ "version": "19.2.15",
+ "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-19.2.15.tgz",
+ "integrity": "sha512-3udIlMgzhHRQzpNjd5X1Rq3H8PX2AYkXDurSMmloB2XKIPzUpx8Xs1SGLShXICGITG0w73BZPL55lNIDpTIb4A==",
"license": "MIT",
"dependencies": {
"@babel/core": "7.26.9",
@@ -726,70 +773,25 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
- "@angular/compiler": "19.2.14",
- "@angular/compiler-cli": "19.2.14"
+ "@angular/compiler": "19.2.15",
+ "@angular/compiler-cli": "19.2.15"
}
},
- "node_modules/@angular/localize/node_modules/@babel/core": {
- "version": "7.26.9",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz",
- "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==",
+ "node_modules/@angular/platform-browser": {
+ "version": "19.2.15",
+ "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.2.15.tgz",
+ "integrity": "sha512-OelQ6weCjon8kZD8kcqNzwugvZJurjS3uMJCwsA2vXmP/3zJ31SWtNqE2zLT1R2csVuwnp0h+nRMgq+pINU7Rg==",
"license": "MIT",
"dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.26.2",
- "@babel/generator": "^7.26.9",
- "@babel/helper-compilation-targets": "^7.26.5",
- "@babel/helper-module-transforms": "^7.26.0",
- "@babel/helpers": "^7.26.9",
- "@babel/parser": "^7.26.9",
- "@babel/template": "^7.26.9",
- "@babel/traverse": "^7.26.9",
- "@babel/types": "^7.26.9",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@angular/localize/node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "license": "MIT"
- },
- "node_modules/@angular/localize/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@angular/platform-browser": {
- "version": "19.2.14",
- "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.2.14.tgz",
- "integrity": "sha512-hzkT5nmA64oVBQl6PRjdL4dIFT1n7lfM9rm5cAoS+6LUUKRgiE2d421Kpn/Hz3jaCJfo+calMIdtSMIfUJBmww==",
- "license": "MIT",
- "dependencies": {
- "tslib": "^2.3.0"
+ "tslib": "^2.3.0"
},
"engines": {
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
- "@angular/animations": "19.2.14",
- "@angular/common": "19.2.14",
- "@angular/core": "19.2.14"
+ "@angular/animations": "19.2.15",
+ "@angular/common": "19.2.15",
+ "@angular/core": "19.2.15"
},
"peerDependenciesMeta": {
"@angular/animations": {
@@ -798,9 +800,9 @@
}
},
"node_modules/@angular/platform-browser-dynamic": {
- "version": "19.2.14",
- "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-19.2.14.tgz",
- "integrity": "sha512-Hfz0z1KDQmIdnFXVFCwCPykuIsHPkr1uW2aY396eARwZ6PK8i0Aadcm1ZOnpd3MR1bMyDrJo30VRS5kx89QWvA==",
+ "version": "19.2.15",
+ "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-19.2.15.tgz",
+ "integrity": "sha512-dKy0SS395FCh8cW9AQ8nf4Wn3XlONaH7z50T1bGxm3eOoRqjxJYyIeIlEbDdJakMz4QPR3dGr81HleZd8TJumQ==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -809,16 +811,16 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
- "@angular/common": "19.2.14",
- "@angular/compiler": "19.2.14",
- "@angular/core": "19.2.14",
- "@angular/platform-browser": "19.2.14"
+ "@angular/common": "19.2.15",
+ "@angular/compiler": "19.2.15",
+ "@angular/core": "19.2.15",
+ "@angular/platform-browser": "19.2.15"
}
},
"node_modules/@angular/router": {
- "version": "19.2.14",
- "resolved": "https://registry.npmjs.org/@angular/router/-/router-19.2.14.tgz",
- "integrity": "sha512-cBTWY9Jx7YhbmDYDb7Hqz4Q7UNIMlKTkdKToJd2pbhIXyoS+kHVQrySmyca+jgvYMjWnIjsAEa3dpje12D4mFw==",
+ "version": "19.2.15",
+ "resolved": "https://registry.npmjs.org/@angular/router/-/router-19.2.15.tgz",
+ "integrity": "sha512-0TM1D8S7RQ00drKy7hA/ZLBY14dUBqFBgm06djcNcOjNzVAtgkeV0i+0Smq9tCC7UsGKdpZu4RgfYjHATBNlTQ==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -827,9 +829,9 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
- "@angular/common": "19.2.14",
- "@angular/core": "19.2.14",
- "@angular/platform-browser": "19.2.14",
+ "@angular/common": "19.2.15",
+ "@angular/core": "19.2.15",
+ "@angular/platform-browser": "19.2.15",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
@@ -848,30 +850,30 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz",
- "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz",
+ "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.26.10",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
- "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz",
+ "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==",
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.26.2",
- "@babel/generator": "^7.26.10",
+ "@babel/generator": "^7.26.9",
"@babel/helper-compilation-targets": "^7.26.5",
"@babel/helper-module-transforms": "^7.26.0",
- "@babel/helpers": "^7.26.10",
- "@babel/parser": "^7.26.10",
+ "@babel/helpers": "^7.26.9",
+ "@babel/parser": "^7.26.9",
"@babel/template": "^7.26.9",
- "@babel/traverse": "^7.26.10",
- "@babel/types": "^7.26.10",
+ "@babel/traverse": "^7.26.9",
+ "@babel/types": "^7.26.9",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -956,18 +958,18 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz",
- "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz",
+ "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.27.3",
- "@babel/helper-member-expression-to-functions": "^7.27.1",
+ "@babel/helper-member-expression-to-functions": "^7.28.5",
"@babel/helper-optimise-call-expression": "^7.27.1",
"@babel/helper-replace-supers": "^7.27.1",
"@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
- "@babel/traverse": "^7.28.3",
+ "@babel/traverse": "^7.28.5",
"semver": "^6.3.1"
},
"engines": {
@@ -1001,14 +1003,14 @@
}
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz",
- "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz",
+ "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
- "regexpu-core": "^6.2.0",
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "regexpu-core": "^6.3.1",
"semver": "^6.3.1"
},
"engines": {
@@ -1068,14 +1070,14 @@
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz",
- "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz",
+ "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/traverse": "^7.28.5",
+ "@babel/types": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1220,9 +1222,9 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
- "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -1253,25 +1255,25 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.3.tgz",
- "integrity": "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==",
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
+ "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
"license": "MIT",
"dependencies": {
"@babel/template": "^7.27.2",
- "@babel/types": "^7.28.2"
+ "@babel/types": "^7.28.4"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz",
- "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
+ "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.28.2"
+ "@babel/types": "^7.28.5"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -1281,14 +1283,14 @@
}
},
"node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz",
- "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz",
+ "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/traverse": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1495,9 +1497,9 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz",
- "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz",
+ "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1545,9 +1547,9 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.3.tgz",
- "integrity": "sha512-DoEWC5SuxuARF2KdKmGUq3ghfPMO6ZzR12Dnp5gubwbeWJo4dbNWXJPVlwvh4Zlq6Z7YVvL8VFxeSOJgjsx4Sg==",
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz",
+ "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1556,7 +1558,7 @@
"@babel/helper-globals": "^7.28.0",
"@babel/helper-plugin-utils": "^7.27.1",
"@babel/helper-replace-supers": "^7.27.1",
- "@babel/traverse": "^7.28.3"
+ "@babel/traverse": "^7.28.4"
},
"engines": {
"node": ">=6.9.0"
@@ -1596,14 +1598,14 @@
}
},
"node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz",
- "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz",
+ "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1",
- "@babel/traverse": "^7.28.0"
+ "@babel/traverse": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1679,9 +1681,9 @@
}
},
"node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz",
- "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz",
+ "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1778,9 +1780,9 @@
}
},
"node_modules/@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz",
- "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz",
+ "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1844,16 +1846,16 @@
}
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz",
- "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz",
+ "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.27.1",
+ "@babel/helper-module-transforms": "^7.28.3",
"@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "@babel/traverse": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1945,9 +1947,9 @@
}
},
"node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz",
- "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==",
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz",
+ "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1955,7 +1957,7 @@
"@babel/helper-plugin-utils": "^7.27.1",
"@babel/plugin-transform-destructuring": "^7.28.0",
"@babel/plugin-transform-parameters": "^7.27.7",
- "@babel/traverse": "^7.28.0"
+ "@babel/traverse": "^7.28.4"
},
"engines": {
"node": ">=6.9.0"
@@ -1998,9 +2000,9 @@
}
},
"node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz",
- "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz",
+ "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2095,9 +2097,9 @@
}
},
"node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.3.tgz",
- "integrity": "sha512-K3/M/a4+ESb5LEldjQb+XSrpY0nF+ZBFlTCbSnKaYAMfD8v33O6PMs4uYnOk19HlcsI8WMu3McdFPTiQHF/1/A==",
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz",
+ "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2459,17 +2461,17 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz",
- "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz",
+ "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.3",
+ "@babel/generator": "^7.28.5",
"@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.28.3",
+ "@babel/parser": "^7.28.5",
"@babel/template": "^7.27.2",
- "@babel/types": "^7.28.2",
+ "@babel/types": "^7.28.5",
"debug": "^4.3.1"
},
"engines": {
@@ -2477,13 +2479,13 @@
}
},
"node_modules/@babel/traverse/node_modules/@babel/generator": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz",
- "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
+ "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.28.3",
- "@babel/types": "^7.28.2",
+ "@babel/parser": "^7.28.5",
+ "@babel/types": "^7.28.5",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@@ -2493,13 +2495,13 @@
}
},
"node_modules/@babel/types": {
- "version": "7.28.2",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz",
- "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
+ "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1"
+ "@babel/helper-validator-identifier": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
@@ -2543,10 +2545,32 @@
"node": ">=10.12.0"
}
},
+ "node_modules/@electron/asar/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@electron/get": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@electron/get/-/get-3.1.0.tgz",
- "integrity": "sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz",
+ "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2559,37 +2583,12 @@
"sumchecker": "^3.0.1"
},
"engines": {
- "node": ">=14"
+ "node": ">=12"
},
"optionalDependencies": {
"global-agent": "^3.0.0"
}
},
- "node_modules/@electron/get/node_modules/fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
- "node_modules/@electron/get/node_modules/jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
- "dev": true,
- "license": "MIT",
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
"node_modules/@electron/get/node_modules/semver": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
@@ -2600,47 +2599,6 @@
"semver": "bin/semver.js"
}
},
- "node_modules/@electron/get/node_modules/universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/@electron/notarize": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.5.0.tgz",
- "integrity": "sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "^4.1.1",
- "fs-extra": "^9.0.1",
- "promise-retry": "^2.0.1"
- },
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@electron/notarize/node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@electron/osx-sign": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.3.tgz",
@@ -2678,10 +2636,33 @@
"node": ">=12"
}
},
+ "node_modules/@electron/osx-sign/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@electron/osx-sign/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
"node_modules/@electron/packager": {
- "version": "18.4.2",
- "resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.4.2.tgz",
- "integrity": "sha512-5wr/6YoOhBlQoAloquKksY21Pa/2Eg4kq4y/+jOX+9smAFS4fcM3kG3KyhU/zEuwitxRjquq9/KxDNNhJbhc+w==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.4.4.tgz",
+ "integrity": "sha512-fTUCmgL25WXTcFpM1M72VmFP8w3E4d+KNzWxmTDRpvwkfn/S206MAtM2cy0GF78KS9AwASMOUmlOIzCHeNxcGQ==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -2717,322 +2698,1025 @@
"url": "https://github.com/electron/packager?sponsor=1"
}
},
- "node_modules/@electron/universal": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.3.tgz",
- "integrity": "sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==",
+ "node_modules/@electron/packager/node_modules/@electron/get": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-3.1.0.tgz",
+ "integrity": "sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@electron/asar": "^3.3.1",
- "@malept/cross-spawn-promise": "^2.0.0",
- "debug": "^4.3.1",
- "dir-compare": "^4.2.0",
- "fs-extra": "^11.1.1",
- "minimatch": "^9.0.3",
- "plist": "^3.1.0"
+ "debug": "^4.1.1",
+ "env-paths": "^2.2.0",
+ "fs-extra": "^8.1.0",
+ "got": "^11.8.5",
+ "progress": "^2.0.3",
+ "semver": "^6.2.0",
+ "sumchecker": "^3.0.1"
},
"engines": {
- "node": ">=16.4"
+ "node": ">=14"
+ },
+ "optionalDependencies": {
+ "global-agent": "^3.0.0"
}
},
- "node_modules/@electron/universal/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "node_modules/@electron/packager/node_modules/@electron/get/node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0"
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
}
},
- "node_modules/@electron/universal/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "node_modules/@electron/packager/node_modules/@electron/get/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@electron/packager/node_modules/@electron/notarize": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.5.0.tgz",
+ "integrity": "sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "debug": "^4.1.1",
+ "fs-extra": "^9.0.1",
+ "promise-retry": "^2.0.1"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">= 10.0.0"
}
},
- "node_modules/@electron/windows-sign": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.2.tgz",
- "integrity": "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==",
+ "node_modules/@electron/packager/node_modules/@electron/notarize/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dev": true,
- "license": "BSD-2-Clause",
+ "license": "MIT",
"dependencies": {
- "cross-dirname": "^0.1.0",
- "debug": "^4.3.4",
- "fs-extra": "^11.1.1",
- "minimist": "^1.2.8",
- "postject": "^1.0.0-alpha.6"
- },
- "bin": {
- "electron-windows-sign": "bin/electron-windows-sign.js"
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
},
"engines": {
- "node": ">=14.14"
+ "node": ">=10"
}
},
- "node_modules/@esbuild/linux-x64": {
- "version": "0.25.4",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz",
- "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@electron/packager/node_modules/@electron/notarize/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@electron/packager/node_modules/@electron/notarize/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
"engines": {
- "node": ">=18"
+ "node": ">= 10.0.0"
}
},
- "node_modules/@inquirer/checkbox": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.1.tgz",
- "integrity": "sha512-bevKGO6kX1eM/N+pdh9leS5L7TBF4ICrzi9a+cbWkrxeAeIcwlo/7OfWGCDERdRCI2/Q6tjltX4bt07ALHDwFw==",
+ "node_modules/@electron/packager/node_modules/@electron/universal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.3.tgz",
+ "integrity": "sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.1.15",
- "@inquirer/figures": "^1.0.13",
- "@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2",
- "yoctocolors-cjs": "^2.1.2"
+ "@electron/asar": "^3.3.1",
+ "@malept/cross-spawn-promise": "^2.0.0",
+ "debug": "^4.3.1",
+ "dir-compare": "^4.2.0",
+ "fs-extra": "^11.1.1",
+ "minimatch": "^9.0.3",
+ "plist": "^3.1.0"
},
"engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
+ "node": ">=16.4"
}
},
- "node_modules/@inquirer/confirm": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.6.tgz",
- "integrity": "sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw==",
+ "node_modules/@electron/packager/node_modules/@electron/universal/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "@inquirer/core": "^10.1.7",
- "@inquirer/type": "^3.0.4"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
+ "node": ">=16 || 14 >=14.17"
},
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/@inquirer/core": {
- "version": "10.1.15",
- "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.15.tgz",
- "integrity": "sha512-8xrp836RZvKkpNbVvgWUlxjT4CraKk2q+I3Ksy+seI2zkcE+y6wNs1BVhgcv8VyImFecUhdQrYLdW32pAjwBdA==",
+ "node_modules/@electron/packager/node_modules/@malept/cross-spawn-promise": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz",
+ "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==",
"dev": true,
- "license": "MIT",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/malept"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund"
+ }
+ ],
+ "license": "Apache-2.0",
"dependencies": {
- "@inquirer/figures": "^1.0.13",
- "@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2",
- "cli-width": "^4.1.0",
- "mute-stream": "^2.0.0",
- "signal-exit": "^4.1.0",
- "wrap-ansi": "^6.2.0",
- "yoctocolors-cjs": "^2.1.2"
+ "cross-spawn": "^7.0.1"
},
"engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
+ "node": ">= 12.13.0"
}
},
- "node_modules/@inquirer/editor": {
- "version": "4.2.17",
- "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.17.tgz",
- "integrity": "sha512-r6bQLsyPSzbWrZZ9ufoWL+CztkSatnJ6uSxqd6N+o41EZC51sQeWOzI6s5jLb+xxTWxl7PlUppqm8/sow241gg==",
+ "node_modules/@electron/packager/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.1.15",
- "@inquirer/external-editor": "^1.0.1",
- "@inquirer/type": "^3.0.8"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
+ "balanced-match": "^1.0.0"
}
},
- "node_modules/@inquirer/expand": {
- "version": "4.0.17",
- "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.17.tgz",
- "integrity": "sha512-PSqy9VmJx/VbE3CT453yOfNa+PykpKg/0SYP7odez1/NWBGuDXgPhp4AeGYYKjhLn5lUUavVS/JbeYMPdH50Mw==",
+ "node_modules/@electron/packager/node_modules/dir-compare": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz",
+ "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.1.15",
- "@inquirer/type": "^3.0.8",
- "yoctocolors-cjs": "^2.1.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
+ "minimatch": "^3.0.5",
+ "p-limit": "^3.1.0 "
}
},
- "node_modules/@inquirer/external-editor": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.1.tgz",
- "integrity": "sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==",
+ "node_modules/@electron/packager/node_modules/fs-extra": {
+ "version": "11.3.2",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz",
+ "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "chardet": "^2.1.0",
- "iconv-lite": "^0.6.3"
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
},
"engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/@electron/packager/node_modules/fs-extra/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
},
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
}
},
- "node_modules/@inquirer/figures": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz",
- "integrity": "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==",
+ "node_modules/@electron/packager/node_modules/fs-extra/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=18"
+ "node": ">= 10.0.0"
}
},
- "node_modules/@inquirer/input": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.1.tgz",
- "integrity": "sha512-tVC+O1rBl0lJpoUZv4xY+WGWY8V5b0zxU1XDsMsIHYregdh7bN5X5QnIONNBAl0K765FYlAfNHS2Bhn7SSOVow==",
+ "node_modules/@electron/packager/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.1.15",
- "@inquirer/type": "^3.0.8"
+ "yocto-queue": "^0.1.0"
},
"engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
+ "node": ">=10"
},
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@inquirer/number": {
- "version": "3.0.17",
- "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.17.tgz",
- "integrity": "sha512-GcvGHkyIgfZgVnnimURdOueMk0CztycfC8NZTiIY9arIAkeOgt6zG57G+7vC59Jns3UX27LMkPKnKWAOF5xEYg==",
+ "node_modules/@electron/packager/node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@inquirer/core": "^10.1.15",
- "@inquirer/type": "^3.0.8"
- },
"engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
+ "node": ">=10"
},
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@inquirer/password": {
- "version": "4.0.17",
- "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.17.tgz",
- "integrity": "sha512-DJolTnNeZ00E1+1TW+8614F7rOJJCM4y4BAGQ3Gq6kQIG+OJ4zr3GLjIjVVJCbKsk2jmkmv6v2kQuN/vriHdZA==",
+ "node_modules/@electron/windows-sign": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.2.tgz",
+ "integrity": "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==",
"dev": true,
- "license": "MIT",
+ "license": "BSD-2-Clause",
"dependencies": {
- "@inquirer/core": "^10.1.15",
- "@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2"
- },
- "engines": {
- "node": ">=18"
+ "cross-dirname": "^0.1.0",
+ "debug": "^4.3.4",
+ "fs-extra": "^11.1.1",
+ "minimist": "^1.2.8",
+ "postject": "^1.0.0-alpha.6"
},
- "peerDependencies": {
- "@types/node": ">=18"
+ "bin": {
+ "electron-windows-sign": "bin/electron-windows-sign.js"
},
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
+ "engines": {
+ "node": ">=14.14"
}
},
- "node_modules/@inquirer/prompts": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz",
- "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==",
+ "node_modules/@electron/windows-sign/node_modules/fs-extra": {
+ "version": "11.3.2",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz",
+ "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/checkbox": "^4.1.2",
- "@inquirer/confirm": "^5.1.6",
- "@inquirer/editor": "^4.2.7",
- "@inquirer/expand": "^4.0.9",
- "@inquirer/input": "^4.1.6",
- "@inquirer/number": "^3.0.9",
- "@inquirer/password": "^4.0.9",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/@electron/windows-sign/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@electron/windows-sign/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz",
+ "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz",
+ "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz",
+ "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz",
+ "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz",
+ "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz",
+ "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz",
+ "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz",
+ "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz",
+ "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz",
+ "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz",
+ "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz",
+ "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz",
+ "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz",
+ "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz",
+ "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz",
+ "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz",
+ "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz",
+ "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz",
+ "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz",
+ "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz",
+ "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz",
+ "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz",
+ "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz",
+ "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz",
+ "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@inquirer/ansi": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.1.tgz",
+ "integrity": "sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@inquirer/checkbox": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.0.tgz",
+ "integrity": "sha512-5+Q3PKH35YsnoPTh75LucALdAxom6xh5D1oeY561x4cqBuH24ZFVyFREPe14xgnrtmGu3EEt1dIi60wRVSnGCw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/ansi": "^1.0.1",
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/figures": "^1.0.14",
+ "@inquirer/type": "^3.0.9",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/confirm": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.6.tgz",
+ "integrity": "sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.1.7",
+ "@inquirer/type": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/core": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.0.tgz",
+ "integrity": "sha512-Uv2aPPPSK5jeCplQmQ9xadnFx2Zhj9b5Dj7bU6ZeCdDNNY11nhYy4btcSdtDguHqCT2h5oNeQTcUNSGGLA7NTA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/ansi": "^1.0.1",
+ "@inquirer/figures": "^1.0.14",
+ "@inquirer/type": "^3.0.9",
+ "cli-width": "^4.1.0",
+ "mute-stream": "^2.0.0",
+ "signal-exit": "^4.1.0",
+ "wrap-ansi": "^6.2.0",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/core/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@inquirer/core/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@inquirer/editor": {
+ "version": "4.2.21",
+ "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.21.tgz",
+ "integrity": "sha512-MjtjOGjr0Kh4BciaFShYpZ1s9400idOdvQ5D7u7lE6VztPFoyLcVNE5dXBmEEIQq5zi4B9h2kU+q7AVBxJMAkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/external-editor": "^1.0.2",
+ "@inquirer/type": "^3.0.9"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/expand": {
+ "version": "4.0.21",
+ "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.21.tgz",
+ "integrity": "sha512-+mScLhIcbPFmuvU3tAGBed78XvYHSvCl6dBiYMlzCLhpr0bzGzd8tfivMMeqND6XZiaZ1tgusbUHJEfc6YzOdA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/type": "^3.0.9",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/external-editor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.2.tgz",
+ "integrity": "sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chardet": "^2.1.0",
+ "iconv-lite": "^0.7.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/external-editor/node_modules/iconv-lite": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
+ "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/@inquirer/figures": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.14.tgz",
+ "integrity": "sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@inquirer/input": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.5.tgz",
+ "integrity": "sha512-7GoWev7P6s7t0oJbenH0eQ0ThNdDJbEAEtVt9vsrYZ9FulIokvd823yLyhQlWHJPGce1wzP53ttfdCZmonMHyA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/type": "^3.0.9"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/number": {
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.21.tgz",
+ "integrity": "sha512-5QWs0KGaNMlhbdhOSCFfKsW+/dcAVC2g4wT/z2MCiZM47uLgatC5N20kpkDQf7dHx+XFct/MJvvNGy6aYJn4Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/type": "^3.0.9"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/password": {
+ "version": "4.0.21",
+ "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.21.tgz",
+ "integrity": "sha512-xxeW1V5SbNFNig2pLfetsDb0svWlKuhmr7MPJZMYuDnCTkpVBI+X/doudg4pznc1/U+yYmWFFOi4hNvGgUo7EA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/ansi": "^1.0.1",
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/type": "^3.0.9"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/prompts": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz",
+ "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/checkbox": "^4.1.2",
+ "@inquirer/confirm": "^5.1.6",
+ "@inquirer/editor": "^4.2.7",
+ "@inquirer/expand": "^4.0.9",
+ "@inquirer/input": "^4.1.6",
+ "@inquirer/number": "^3.0.9",
+ "@inquirer/password": "^4.0.9",
"@inquirer/rawlist": "^4.0.9",
"@inquirer/search": "^3.0.9",
"@inquirer/select": "^4.0.9"
@@ -3050,14 +3734,14 @@
}
},
"node_modules/@inquirer/rawlist": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.5.tgz",
- "integrity": "sha512-R5qMyGJqtDdi4Ht521iAkNqyB6p2UPuZUbMifakg1sWtu24gc2Z8CJuw8rP081OckNDMgtDCuLe42Q2Kr3BolA==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.9.tgz",
+ "integrity": "sha512-AWpxB7MuJrRiSfTKGJ7Y68imYt8P9N3Gaa7ySdkFj1iWjr6WfbGAhdZvw/UnhFXTHITJzxGUI9k8IX7akAEBCg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.1.15",
- "@inquirer/type": "^3.0.8",
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/type": "^3.0.9",
"yoctocolors-cjs": "^2.1.2"
},
"engines": {
@@ -3073,15 +3757,15 @@
}
},
"node_modules/@inquirer/search": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.0.tgz",
- "integrity": "sha512-PMk1+O/WBcYJDq2H7foV0aAZSmDdkzZB9Mw2v/DmONRJopwA/128cS9M/TXWLKKdEQKZnKwBzqu2G4x/2Nqx8Q==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.0.tgz",
+ "integrity": "sha512-a5SzB/qrXafDX1Z4AZW3CsVoiNxcIYCzYP7r9RzrfMpaLpB+yWi5U8BWagZyLmwR0pKbbL5umnGRd0RzGVI8bQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.1.15",
- "@inquirer/figures": "^1.0.13",
- "@inquirer/type": "^3.0.8",
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/figures": "^1.0.14",
+ "@inquirer/type": "^3.0.9",
"yoctocolors-cjs": "^2.1.2"
},
"engines": {
@@ -3097,16 +3781,16 @@
}
},
"node_modules/@inquirer/select": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.1.tgz",
- "integrity": "sha512-Gfl/5sqOF5vS/LIrSndFgOh7jgoe0UXEizDqahFRkq5aJBLegZ6WjuMh/hVEJwlFQjyLq1z9fRtvUMkb7jM1LA==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.0.tgz",
+ "integrity": "sha512-kaC3FHsJZvVyIjYBs5Ih8y8Bj4P/QItQWrZW22WJax7zTN+ZPXVGuOM55vzbdCP9zKUiBd9iEJVdesujfF+cAA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.1.15",
- "@inquirer/figures": "^1.0.13",
- "@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2",
+ "@inquirer/ansi": "^1.0.1",
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/figures": "^1.0.14",
+ "@inquirer/type": "^3.0.9",
"yoctocolors-cjs": "^2.1.2"
},
"engines": {
@@ -3122,9 +3806,9 @@
}
},
"node_modules/@inquirer/type": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.8.tgz",
- "integrity": "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.9.tgz",
+ "integrity": "sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3177,10 +3861,22 @@
"node": ">=12"
}
},
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
"node_modules/@isaacs/cliui/node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -3212,6 +3908,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
"node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
@@ -3289,9 +4000,9 @@
"license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.30",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz",
- "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==",
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
"license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
@@ -3316,9 +4027,9 @@
}
},
"node_modules/@jsonjoy.com/buffers": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.0.0.tgz",
- "integrity": "sha512-NDigYR3PHqCnQLXYyoLbnEdzMMvzeiCWo1KOut7Q0CoIqg9tUAPKJ1iq/2nFhc5kZtexzutNY0LFjdwWL3Dw3Q==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz",
+ "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -3350,19 +4061,20 @@
}
},
"node_modules/@jsonjoy.com/json-pack": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.11.0.tgz",
- "integrity": "sha512-nLqSTAYwpk+5ZQIoVp7pfd/oSKNWlEdvTq2LzVA4r2wtWZg6v+5u0VgBOaDJuUfNOuw/4Ysq6glN5QKSrOCgrA==",
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz",
+ "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@jsonjoy.com/base64": "^1.1.2",
- "@jsonjoy.com/buffers": "^1.0.0",
+ "@jsonjoy.com/buffers": "^1.2.0",
"@jsonjoy.com/codegen": "^1.0.0",
- "@jsonjoy.com/json-pointer": "^1.0.1",
+ "@jsonjoy.com/json-pointer": "^1.0.2",
"@jsonjoy.com/util": "^1.9.0",
"hyperdyperid": "^1.2.0",
- "thingies": "^2.5.0"
+ "thingies": "^2.5.0",
+ "tree-dump": "^1.1.0"
},
"engines": {
"node": ">=10.0"
@@ -3376,13 +4088,14 @@
}
},
"node_modules/@jsonjoy.com/json-pointer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.1.tgz",
- "integrity": "sha512-tJpwQfuBuxqZlyoJOSZcqf7OUmiYQ6MiPNmOv4KbZdXE/DdvBSSAwhos0zIlJU/AXxC8XpuO8p08bh2fIl+RKA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz",
+ "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/util": "^1.3.0"
+ "@jsonjoy.com/codegen": "^1.0.0",
+ "@jsonjoy.com/util": "^1.9.0"
},
"engines": {
"node": ">=10.0"
@@ -3462,6 +4175,62 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/@lmdb/lmdb-darwin-arm64": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.2.6.tgz",
+ "integrity": "sha512-yF/ih9EJJZc72psFQbwnn8mExIWfTnzWJg+N02hnpXtDPETYLmQswIMBn7+V88lfCaFrMozJsUvcEQIkEPU0Gg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-darwin-x64": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.2.6.tgz",
+ "integrity": "sha512-5BbCumsFLbCi586Bb1lTWQFkekdQUw8/t8cy++Uq251cl3hbDIGEwD9HAwh8H6IS2F6QA9KdKmO136LmipRNkg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-linux-arm": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.2.6.tgz",
+ "integrity": "sha512-+6XgLpMb7HBoWxXj+bLbiiB4s0mRRcDPElnRS3LpWRzdYSe+gFk5MT/4RrVNqd2MESUDmb53NUXw1+BP69bjiQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-linux-arm64": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.2.6.tgz",
+ "integrity": "sha512-l5VmJamJ3nyMmeD1ANBQCQqy7do1ESaJQfKPSm2IG9/ADZryptTyCj8N6QaYgIWewqNUrcbdMkJajRQAt5Qjfg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
"node_modules/@lmdb/lmdb-linux-x64": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.2.6.tgz",
@@ -3476,28 +4245,75 @@
"linux"
]
},
- "node_modules/@malept/cross-spawn-promise": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz",
- "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==",
+ "node_modules/@lmdb/lmdb-win32-x64": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.2.6.tgz",
+ "integrity": "sha512-XlqVtILonQnG+9fH2N3Aytria7P/1fwDgDhl29rde96uH2sLB8CHORIf2PfuLVzFQJ7Uqp8py9AYwr3ZUCFfWg==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/malept"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund"
- }
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz",
+ "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==",
+ "cpu": [
+ "arm64"
],
- "license": "Apache-2.0",
- "dependencies": {
- "cross-spawn": "^7.0.1"
- },
- "engines": {
- "node": ">= 12.13.0"
- }
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz",
+ "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz",
+ "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz",
+ "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
"node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": {
"version": "3.0.3",
@@ -3513,6 +4329,20 @@
"linux"
]
},
+ "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz",
+ "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
"node_modules/@napi-rs/nice": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.1.1.tgz",
@@ -3547,6 +4377,193 @@
"@napi-rs/nice-win32-x64-msvc": "1.1.1"
}
},
+ "node_modules/@napi-rs/nice-android-arm-eabi": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.1.1.tgz",
+ "integrity": "sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-android-arm64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.1.1.tgz",
+ "integrity": "sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-darwin-arm64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.1.1.tgz",
+ "integrity": "sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-darwin-x64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.1.1.tgz",
+ "integrity": "sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-freebsd-x64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.1.1.tgz",
+ "integrity": "sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-arm-gnueabihf": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.1.1.tgz",
+ "integrity": "sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-arm64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.1.1.tgz",
+ "integrity": "sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-arm64-musl": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.1.1.tgz",
+ "integrity": "sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-ppc64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.1.1.tgz",
+ "integrity": "sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-riscv64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.1.1.tgz",
+ "integrity": "sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-s390x-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.1.1.tgz",
+ "integrity": "sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
"node_modules/@napi-rs/nice-linux-x64-gnu": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.1.1.tgz",
@@ -3581,6 +4598,74 @@
"node": ">= 10"
}
},
+ "node_modules/@napi-rs/nice-openharmony-arm64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-openharmony-arm64/-/nice-openharmony-arm64-1.1.1.tgz",
+ "integrity": "sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-win32-arm64-msvc": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.1.1.tgz",
+ "integrity": "sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-win32-ia32-msvc": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.1.1.tgz",
+ "integrity": "sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-win32-x64-msvc": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.1.1.tgz",
+ "integrity": "sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
"node_modules/@ng-bootstrap/ng-bootstrap": {
"version": "18.0.0",
"resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-18.0.0.tgz",
@@ -3598,6 +4683,23 @@
"rxjs": "^6.5.3 || ^7.4.0"
}
},
+ "node_modules/@ngtools/webpack": {
+ "version": "19.2.19",
+ "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-19.2.19.tgz",
+ "integrity": "sha512-R9aeTrOBiRVl8I698JWPniUAAEpSvzc8SUGWSM5UXWMcHnWqd92cOnJJ1aXDGJZKXrbhMhCBx9Dglmcks5IDpg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ },
+ "peerDependencies": {
+ "@angular/compiler-cli": "^19.0.0 || ^19.2.0-next.0",
+ "typescript": ">=5.5 <5.9",
+ "webpack": "^5.54.0"
+ }
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -3740,86 +4842,39 @@
"node": "^18.17.0 || >=20.5.0"
}
},
- "node_modules/@npmcli/node-gyp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz",
- "integrity": "sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "^18.17.0 || >=20.5.0"
- }
- },
- "node_modules/@npmcli/package-json": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-6.2.0.tgz",
- "integrity": "sha512-rCNLSB/JzNvot0SEyXqWZ7tX2B5dD2a1br2Dp0vSYVo5jh8Z0EZ7lS9TsZ1UtziddB1UfNUaMCc538/HztnJGA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@npmcli/git": "^6.0.0",
- "glob": "^10.2.2",
- "hosted-git-info": "^8.0.0",
- "json-parse-even-better-errors": "^4.0.0",
- "proc-log": "^5.0.0",
- "semver": "^7.5.3",
- "validate-npm-package-license": "^3.0.4"
- },
- "engines": {
- "node": "^18.17.0 || >=20.5.0"
- }
- },
- "node_modules/@npmcli/package-json/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/@npmcli/package-json/node_modules/glob": {
- "version": "10.4.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
- "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "node_modules/@npmcli/node-gyp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz",
+ "integrity": "sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==",
"dev": true,
"license": "ISC",
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
- "minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "node_modules/@npmcli/package-json/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "node_modules/@npmcli/package-json": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-6.2.0.tgz",
+ "integrity": "sha512-rCNLSB/JzNvot0SEyXqWZ7tX2B5dD2a1br2Dp0vSYVo5jh8Z0EZ7lS9TsZ1UtziddB1UfNUaMCc538/HztnJGA==",
"dev": true,
"license": "ISC",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "@npmcli/git": "^6.0.0",
+ "glob": "^10.2.2",
+ "hosted-git-info": "^8.0.0",
+ "json-parse-even-better-errors": "^4.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.5.3",
+ "validate-npm-package-license": "^3.0.4"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@npmcli/promise-spawn": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-8.0.2.tgz",
- "integrity": "sha512-/bNJhjc+o6qL+Dwz/bqfTQClkEO5nTQ1ZEcdCkAQjhkZMHIh22LPG7fNh1enJP1NKWDqYiiABnjFCY7E0zHYtQ==",
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-8.0.3.tgz",
+ "integrity": "sha512-Yb00SWaL4F8w+K8YGhQ55+xE4RUNdMHV43WZGsiTM92gS+lC0mGsn7I4hLug7pbao035S6bj3Y3w0cUNGLfmkg==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -3909,55 +4964,286 @@
"node": "^18.17.0 || >=20.5.0"
}
},
- "node_modules/@parcel/watcher": {
+ "node_modules/@parcel/watcher": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz",
+ "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^1.0.3",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.5",
+ "node-addon-api": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher-android-arm64": "2.5.1",
+ "@parcel/watcher-darwin-arm64": "2.5.1",
+ "@parcel/watcher-darwin-x64": "2.5.1",
+ "@parcel/watcher-freebsd-x64": "2.5.1",
+ "@parcel/watcher-linux-arm-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm-musl": "2.5.1",
+ "@parcel/watcher-linux-arm64-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm64-musl": "2.5.1",
+ "@parcel/watcher-linux-x64-glibc": "2.5.1",
+ "@parcel/watcher-linux-x64-musl": "2.5.1",
+ "@parcel/watcher-win32-arm64": "2.5.1",
+ "@parcel/watcher-win32-ia32": "2.5.1",
+ "@parcel/watcher-win32-x64": "2.5.1"
+ }
+ },
+ "node_modules/@parcel/watcher-android-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz",
+ "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz",
+ "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz",
+ "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-freebsd-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz",
+ "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz",
+ "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz",
+ "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz",
+ "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz",
+ "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz",
+ "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz",
+ "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-arm64": {
"version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz",
- "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz",
+ "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "hasInstallScript": true,
"license": "MIT",
"optional": true,
- "dependencies": {
- "detect-libc": "^1.0.3",
- "is-glob": "^4.0.3",
- "micromatch": "^4.0.5",
- "node-addon-api": "^7.0.0"
- },
+ "os": [
+ "win32"
+ ],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
- },
- "optionalDependencies": {
- "@parcel/watcher-android-arm64": "2.5.1",
- "@parcel/watcher-darwin-arm64": "2.5.1",
- "@parcel/watcher-darwin-x64": "2.5.1",
- "@parcel/watcher-freebsd-x64": "2.5.1",
- "@parcel/watcher-linux-arm-glibc": "2.5.1",
- "@parcel/watcher-linux-arm-musl": "2.5.1",
- "@parcel/watcher-linux-arm64-glibc": "2.5.1",
- "@parcel/watcher-linux-arm64-musl": "2.5.1",
- "@parcel/watcher-linux-x64-glibc": "2.5.1",
- "@parcel/watcher-linux-x64-musl": "2.5.1",
- "@parcel/watcher-win32-arm64": "2.5.1",
- "@parcel/watcher-win32-ia32": "2.5.1",
- "@parcel/watcher-win32-x64": "2.5.1"
}
},
- "node_modules/@parcel/watcher-linux-x64-glibc": {
+ "node_modules/@parcel/watcher-win32-ia32": {
"version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz",
- "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz",
+ "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==",
"cpu": [
- "x64"
+ "ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
- "linux"
+ "win32"
],
"engines": {
"node": ">= 10.0.0"
@@ -3967,10 +5253,10 @@
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/watcher-linux-x64-musl": {
+ "node_modules/@parcel/watcher-win32-x64": {
"version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz",
- "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz",
+ "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
"cpu": [
"x64"
],
@@ -3978,7 +5264,7 @@
"license": "MIT",
"optional": true,
"os": [
- "linux"
+ "win32"
],
"engines": {
"node": ">= 10.0.0"
@@ -4016,24 +5302,332 @@
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"license": "MIT",
"optional": true,
- "engines": {
- "node": ">=14"
- }
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz",
+ "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz",
+ "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz",
+ "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz",
+ "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz",
+ "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz",
+ "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz",
+ "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz",
+ "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz",
+ "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz",
+ "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-gnu": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz",
+ "integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz",
+ "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz",
+ "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz",
+ "integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz",
+ "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz",
+ "integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz",
+ "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz",
+ "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz",
+ "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-openharmony-arm64": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz",
+ "integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz",
+ "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
- "node_modules/@popperjs/core": {
- "version": "2.11.8",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
- "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.34.8",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz",
+ "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
"license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/popperjs"
- }
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz",
- "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==",
+ "node_modules/@rollup/rollup-win32-x64-gnu": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz",
+ "integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==",
"cpu": [
"x64"
],
@@ -4041,13 +5635,13 @@
"license": "MIT",
"optional": true,
"os": [
- "linux"
+ "win32"
]
},
- "node_modules/@rollup/rollup-linux-x64-musl": {
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz",
- "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz",
+ "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==",
"cpu": [
"x64"
],
@@ -4055,18 +5649,18 @@
"license": "MIT",
"optional": true,
"os": [
- "linux"
+ "win32"
]
},
"node_modules/@schematics/angular": {
- "version": "19.2.15",
- "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-19.2.15.tgz",
- "integrity": "sha512-dz/eoFQKG09POSygpEDdlCehFIMo35HUM2rVV8lx9PfQEibpbGwl1NNQYEbqwVjTyCyD/ILyIXCWPE+EfTnG4g==",
+ "version": "19.2.19",
+ "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-19.2.19.tgz",
+ "integrity": "sha512-6/0pvbPCY4UHeB4lnM/5r250QX5gcLgOYbR5FdhFu+22mOPHfWpRc5tNuY9kCephDHzAHjo6fTW1vefOOmA4jw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/core": "19.2.15",
- "@angular-devkit/schematics": "19.2.15",
+ "@angular-devkit/core": "19.2.19",
+ "@angular-devkit/schematics": "19.2.19",
"jsonc-parser": "3.3.1"
},
"engines": {
@@ -4397,22 +5991,22 @@
"license": "MIT"
},
"node_modules/@types/express": {
- "version": "4.17.23",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz",
- "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==",
+ "version": "4.17.25",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz",
+ "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/body-parser": "*",
"@types/express-serve-static-core": "^4.17.33",
"@types/qs": "*",
- "@types/serve-static": "*"
+ "@types/serve-static": "^1"
}
},
"node_modules/@types/express-serve-static-core": {
- "version": "4.19.6",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz",
- "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==",
+ "version": "4.19.7",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz",
+ "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4444,9 +6038,9 @@
"license": "MIT"
},
"node_modules/@types/http-proxy": {
- "version": "1.17.16",
- "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz",
- "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==",
+ "version": "1.17.17",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz",
+ "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4454,9 +6048,9 @@
}
},
"node_modules/@types/jasmine": {
- "version": "5.1.9",
- "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.9.tgz",
- "integrity": "sha512-8t4HtkW4wxiPVedMpeZ63n3vlWxEIquo/zc1Tm8ElU+SqVV7+D3Na2PWaJUp179AzTragMWVwkMv7mvty0NfyQ==",
+ "version": "5.1.12",
+ "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.12.tgz",
+ "integrity": "sha512-1BzPxNsFDLDfj9InVR3IeY0ZVf4o9XV+4mDqoCfyPkbsA7dYyKAPAb2co6wLFlHcvxPlt1wShm7zQdV7uTfLGA==",
"dev": true,
"license": "MIT"
},
@@ -4485,9 +6079,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "22.17.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.17.2.tgz",
- "integrity": "sha512-gL6z5N9Jm9mhY+U2KXZpteb+09zyffliRkZyZOHODGATyC5B1Jt/7TzuuiLkFsSUMLbS1OLmlj/E+/3KF4Q/4w==",
+ "version": "22.19.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.0.tgz",
+ "integrity": "sha512-xpr/lmLPQEj+TUnHmR+Ab91/glhJvsqcjB+yY0Ix9GO70H6Lb4FHH5GeqdOE5btAx7eIMwuHkp4H2MSkLcqWbA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4495,9 +6089,9 @@
}
},
"node_modules/@types/node-forge": {
- "version": "1.3.13",
- "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.13.tgz",
- "integrity": "sha512-zePQJSW5QkwSHKRApqWCVKeKoSOt4xvEnLENZPjyvm9Ezdf/EyDeJM7jqLzOwjVICQQzvLZ63T55MKdJB5H6ww==",
+ "version": "1.3.14",
+ "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz",
+ "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4536,13 +6130,12 @@
"license": "MIT"
},
"node_modules/@types/send": {
- "version": "0.17.5",
- "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz",
- "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz",
+ "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/mime": "^1",
"@types/node": "*"
}
},
@@ -4557,15 +6150,26 @@
}
},
"node_modules/@types/serve-static": {
- "version": "1.15.8",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz",
- "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==",
+ "version": "1.15.10",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz",
+ "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/http-errors": "*",
"@types/node": "*",
- "@types/send": "*"
+ "@types/send": "<1"
+ }
+ },
+ "node_modules/@types/serve-static/node_modules/@types/send": {
+ "version": "0.17.6",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz",
+ "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
}
},
"node_modules/@types/sockjs": {
@@ -4774,9 +6378,9 @@
}
},
"node_modules/@xmldom/xmldom": {
- "version": "0.8.10",
- "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
- "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==",
+ "version": "0.8.11",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz",
+ "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4961,16 +6565,16 @@
}
},
"node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz",
+ "integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "type-fest": "^0.21.3"
+ "environment": "^1.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -4990,15 +6594,12 @@
}
},
"node_modules/ansi-regex": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
- "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"license": "MIT",
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ "node": ">=8"
}
},
"node_modules/ansi-styles": {
@@ -5079,15 +6680,6 @@
"node": ">= 14"
}
},
- "node_modules/archiver-utils/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
"node_modules/archiver-utils/node_modules/buffer": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
@@ -5112,41 +6704,6 @@
"ieee754": "^1.2.1"
}
},
- "node_modules/archiver-utils/node_modules/glob": {
- "version": "10.4.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
- "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
- "license": "ISC",
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
- "minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/archiver-utils/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/archiver-utils/node_modules/readable-stream": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
@@ -5163,6 +6720,35 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/archiver-utils/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/archiver-utils/node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
"node_modules/archiver/node_modules/buffer": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
@@ -5212,6 +6798,35 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/archiver/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/archiver/node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -5291,10 +6906,18 @@
}
},
"node_modules/b4a": {
- "version": "1.6.7",
- "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
- "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==",
- "license": "Apache-2.0"
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz",
+ "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "react-native-b4a": "*"
+ },
+ "peerDependenciesMeta": {
+ "react-native-b4a": {
+ "optional": true
+ }
+ }
},
"node_modules/babel-loader": {
"version": "9.2.1",
@@ -5373,11 +6996,18 @@
"license": "MIT"
},
"node_modules/bare-events": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.1.tgz",
- "integrity": "sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==",
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz",
+ "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==",
"license": "Apache-2.0",
- "optional": true
+ "peerDependencies": {
+ "bare-abort-controller": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-abort-controller": {
+ "optional": true
+ }
+ }
},
"node_modules/base64-js": {
"version": "1.5.1",
@@ -5409,6 +7039,15 @@
"node": "^4.5.0 || >= 5.9"
}
},
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.8.20",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.20.tgz",
+ "integrity": "sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==",
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.js"
+ }
+ },
"node_modules/batch": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
@@ -5471,6 +7110,21 @@
"readable-stream": "^3.4.0"
}
},
+ "node_modules/bl/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
@@ -5513,19 +7167,6 @@
"ms": "2.0.0"
}
},
- "node_modules/body-parser/node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/body-parser/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -5561,9 +7202,9 @@
"optional": true
},
"node_modules/bootstrap": {
- "version": "5.3.7",
- "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.7.tgz",
- "integrity": "sha512-7KgiD8UHjfcPBHEpDNg+zGz8L3LqR3GVwqZiBRFX04a1BCArZOz1r2kjly2HQ0WokqTO0v1nF+QAt8dsW4lKlw==",
+ "version": "5.3.8",
+ "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz",
+ "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==",
"funding": [
{
"type": "github",
@@ -5603,9 +7244,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.25.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.2.tgz",
- "integrity": "sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==",
+ "version": "4.27.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz",
+ "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==",
"funding": [
{
"type": "opencollective",
@@ -5622,10 +7263,11 @@
],
"license": "MIT",
"dependencies": {
- "caniuse-lite": "^1.0.30001733",
- "electron-to-chromium": "^1.5.199",
- "node-releases": "^2.0.19",
- "update-browserslist-db": "^1.1.3"
+ "baseline-browser-mapping": "^2.8.19",
+ "caniuse-lite": "^1.0.30001751",
+ "electron-to-chromium": "^1.5.238",
+ "node-releases": "^2.0.26",
+ "update-browserslist-db": "^1.1.4"
},
"bin": {
"browserslist": "cli.js"
@@ -5722,102 +7364,38 @@
"tar": "^7.4.3",
"unique-filename": "^4.0.0"
},
- "engines": {
- "node": "^18.17.0 || >=20.5.0"
- }
- },
- "node_modules/cacache/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/cacache/node_modules/chownr": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
- "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/cacache/node_modules/glob": {
- "version": "10.4.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
- "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
- "minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/cacache/node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/cacache/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "node_modules/cacache/node_modules/mkdirp": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
- "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
+ "node_modules/cacache/node_modules/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
"dev": true,
- "license": "MIT",
- "bin": {
- "mkdirp": "dist/cjs/src/bin.js"
- },
+ "license": "BlueOak-1.0.0",
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=18"
}
},
+ "node_modules/cacache/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/cacache/node_modules/tar": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
- "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
+ "version": "7.5.2",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz",
+ "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==",
"dev": true,
- "license": "ISC",
+ "license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/fs-minipass": "^4.0.0",
"chownr": "^3.0.0",
"minipass": "^7.1.2",
- "minizlib": "^3.0.1",
- "mkdirp": "^3.0.1",
+ "minizlib": "^3.1.0",
"yallist": "^5.0.0"
},
"engines": {
@@ -5905,9 +7483,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001735",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz",
- "integrity": "sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==",
+ "version": "1.0.30001751",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz",
+ "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==",
"funding": [
{
"type": "opencollective",
@@ -5942,9 +7520,9 @@
}
},
"node_modules/chardet": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz",
- "integrity": "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz",
+ "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==",
"dev": true,
"license": "MIT"
},
@@ -5984,19 +7562,16 @@
}
},
"node_modules/cli-cursor": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
- "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "restore-cursor": "^5.0.0"
+ "restore-cursor": "^3.1.0"
},
"engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=8"
}
},
"node_modules/cli-spinners": {
@@ -6029,95 +7604,82 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/cli-width": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
- "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
+ "node_modules/cli-truncate/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
- "license": "ISC",
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/cliui/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "node_modules/cliui/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "node_modules/cli-truncate/node_modules/emoji-regex": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+ "dev": true,
"license": "MIT"
},
- "node_modules/cliui/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "node_modules/cli-truncate/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "dev": true,
"license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/cliui/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "node_modules/cli-truncate/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "ansi-regex": "^6.0.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "node_modules/cliui/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
+ "node_modules/cli-width": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
+ "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
+ "dev": true,
+ "license": "ISC",
"engines": {
- "node": ">=8"
+ "node": ">= 12"
}
},
- "node_modules/cliui/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "license": "MIT",
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "license": "ISC",
"dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ "node": ">=12"
}
},
"node_modules/clone": {
@@ -6279,6 +7841,35 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/compress-commons/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/compress-commons/node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
"node_modules/compressible": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
@@ -6338,6 +7929,27 @@
"node": ">= 0.6"
}
},
+ "node_modules/compression/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -6401,6 +8013,27 @@
"node": ">= 0.6"
}
},
+ "node_modules/content-disposition/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/content-type": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
@@ -6472,14 +8105,27 @@
"webpack": "^5.1.0"
}
},
+ "node_modules/copy-webpack-plugin/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
"node_modules/core-js-compat": {
- "version": "3.45.0",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.45.0.tgz",
- "integrity": "sha512-gRoVMBawZg0OnxaVv3zpqLLxaHmsubEGyTnqdpI/CEBvX4JadI1dMSHxagThprYRtSVbuQxvi6iUatdPxohHpA==",
+ "version": "3.46.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz",
+ "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==",
"dev": true,
"license": "MIT",
"dependencies": {
- "browserslist": "^4.25.1"
+ "browserslist": "^4.26.3"
},
"funding": {
"type": "opencollective",
@@ -6598,6 +8244,35 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/crc32-stream/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/crc32-stream/node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
"node_modules/cross-dirname": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz",
@@ -6655,6 +8330,19 @@
}
}
},
+ "node_modules/css-loader/node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/css-select": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
@@ -6716,9 +8404,9 @@
}
},
"node_modules/debug": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
- "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
@@ -6887,9 +8575,9 @@
}
},
"node_modules/detect-libc": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
- "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
"dev": true,
"license": "Apache-2.0",
"optional": true,
@@ -6911,17 +8599,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/dir-compare": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz",
- "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "minimatch": "^3.0.5",
- "p-limit": "^3.1.0 "
- }
- },
"node_modules/dns-packet": {
"version": "5.6.1",
"resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz",
@@ -7036,9 +8713,9 @@
"license": "MIT"
},
"node_modules/electron": {
- "version": "37.3.0",
- "resolved": "https://registry.npmjs.org/electron/-/electron-37.3.0.tgz",
- "integrity": "sha512-cPOPUD26DwCh+PZ9q+gMyVBvdBN75SnekI6u5zcOeoLVIXQpzrCm1ewz9BcrkWkVW7oOtfQAEo1G1SffvXrSSw==",
+ "version": "37.8.0",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-37.8.0.tgz",
+ "integrity": "sha512-R7fCCfp/foGvJjxReBpb01Fk0bEKAvUdbwXK4c2c2ttuHpPEV/k65GRkz5yYYVhE8EGIa/j5uh0uToOpsocsZw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -7055,83 +8732,15 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.202",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.202.tgz",
- "integrity": "sha512-NxbYjRmiHcHXV1Ws3fWUW+SLb62isauajk45LUJ/HgIOkUA7jLZu/X2Iif+X9FBNK8QkF9Zb4Q2mcwXCcY30mg==",
+ "version": "1.5.241",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.241.tgz",
+ "integrity": "sha512-ILMvKX/ZV5WIJzzdtuHg8xquk2y0BOGlFOxBVwTpbiXqWIH0hamG45ddU4R3PQ0gYu+xgo0vdHXHli9sHIGb4w==",
"license": "ISC"
},
- "node_modules/electron/node_modules/@electron/get": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz",
- "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "^4.1.1",
- "env-paths": "^2.2.0",
- "fs-extra": "^8.1.0",
- "got": "^11.8.5",
- "progress": "^2.0.3",
- "semver": "^6.2.0",
- "sumchecker": "^3.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "global-agent": "^3.0.0"
- }
- },
- "node_modules/electron/node_modules/fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
- "node_modules/electron/node_modules/jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
- "dev": true,
- "license": "MIT",
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/electron/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/electron/node_modules/universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
"node_modules/emoji-regex": {
- "version": "10.4.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
- "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
- "dev": true,
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"license": "MIT"
},
"node_modules/emojis-list": {
@@ -7165,6 +8774,20 @@
"iconv-lite": "^0.6.2"
}
},
+ "node_modules/encoding/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/end-of-stream": {
"version": "1.4.5",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
@@ -7312,9 +8935,9 @@
}
},
"node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7440,17 +9063,13 @@
"license": "MIT"
},
"node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
"license": "MIT",
- "optional": true,
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.8.0"
}
},
"node_modules/eslint-scope": {
@@ -7545,10 +9164,19 @@
"node": ">=0.8.x"
}
},
+ "node_modules/events-universal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz",
+ "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bare-events": "^2.7.0"
+ }
+ },
"node_modules/exponential-backoff": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz",
- "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz",
+ "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==",
"dev": true,
"license": "Apache-2.0"
},
@@ -7655,6 +9283,27 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/express/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/express/node_modules/statuses": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
@@ -7722,22 +9371,10 @@
"node": ">=8.6.0"
}
},
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/fast-uri": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz",
- "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
+ "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
"dev": true,
"funding": [
{
@@ -7982,6 +9619,29 @@
"node": ">=12"
}
},
+ "node_modules/flora-colossus/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/flora-colossus/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
"node_modules/follow-redirects": {
"version": "1.15.11",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
@@ -8019,6 +9679,18 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -8054,18 +9726,18 @@
}
},
"node_modules/fs-extra": {
- "version": "11.3.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz",
- "integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"dev": true,
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
},
"engines": {
- "node": ">=14.14"
+ "node": ">=6 <7 || >=8"
}
},
"node_modules/fs-minipass": {
@@ -8088,6 +9760,21 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -8128,6 +9815,29 @@
"node": ">=12"
}
},
+ "node_modules/galactus/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/galactus/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -8147,9 +9857,9 @@
}
},
"node_modules/get-east-asian-width": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz",
- "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
+ "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8248,38 +9958,52 @@
}
},
"node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dev": true,
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
"license": "ISC",
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
- "engines": {
- "node": "*"
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
},
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "engines": {
+ "node": ">= 6"
}
},
- "node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "node_modules/glob-to-regex.js": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz",
+ "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==",
"dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.3"
- },
+ "license": "Apache-2.0",
"engines": {
- "node": ">=10.13.0"
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
}
},
"node_modules/glob-to-regexp": {
@@ -8289,6 +10013,30 @@
"dev": true,
"license": "BSD-2-Clause"
},
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/global-agent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
@@ -8498,39 +10246,6 @@
"wbuf": "^1.1.0"
}
},
- "node_modules/hpack.js/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/hpack.js/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/hpack.js/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/html-escaper": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
@@ -8705,13 +10420,13 @@
}
},
"node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
+ "safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
"node": ">=0.10.0"
@@ -8814,9 +10529,9 @@
}
},
"node_modules/immutable": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz",
- "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==",
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz",
+ "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==",
"dev": true,
"license": "MIT"
},
@@ -8931,22 +10646,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-docker": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
- "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "is-docker": "cli.js"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -8957,16 +10656,12 @@
}
},
"node_modules/is-fullwidth-code-point": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
- "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
- "dev": true,
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"license": "MIT",
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=8"
}
},
"node_modules/is-glob": {
@@ -9000,6 +10695,22 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-inside-container/node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-interactive": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
@@ -9011,9 +10722,9 @@
}
},
"node_modules/is-network-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz",
- "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz",
+ "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9106,22 +10817,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/is-wsl": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
- "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-inside-container": "^1.0.0"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -9168,20 +10863,30 @@
}
},
"node_modules/istanbul-lib-instrument": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz",
- "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
- "@babel/core": "^7.23.9",
- "@babel/parser": "^7.23.9",
- "@istanbuljs/schema": "^0.1.3",
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
"istanbul-lib-coverage": "^3.2.0",
- "semver": "^7.5.4"
+ "semver": "^6.3.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
}
},
"node_modules/istanbul-lib-report": {
@@ -9199,6 +10904,22 @@
"node": ">=10"
}
},
+ "node_modules/istanbul-lib-report/node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/istanbul-lib-source-maps": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
@@ -9225,9 +10946,9 @@
}
},
"node_modules/istanbul-reports": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
- "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz",
+ "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
@@ -9384,14 +11105,11 @@
"license": "MIT"
},
"node_modules/jsonfile": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
- "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "universalify": "^2.0.0"
- },
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
@@ -9496,33 +11214,6 @@
"node": ">=10.0.0"
}
},
- "node_modules/karma-coverage/node_modules/istanbul-lib-instrument": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
- "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/karma-coverage/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
"node_modules/karma-jasmine": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz",
@@ -9568,16 +11259,6 @@
"source-map-support": "^0.5.5"
}
},
- "node_modules/karma/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/karma/node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
@@ -9615,34 +11296,26 @@
"wrap-ansi": "^7.0.0"
}
},
- "node_modules/karma/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/karma/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "node_modules/karma/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
"license": "ISC",
"dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/karma/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "license": "MIT",
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
"engines": {
- "node": ">=8"
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/karma/node_modules/picomatch": {
@@ -9681,50 +11354,14 @@
"node": ">=0.10.0"
}
},
- "node_modules/karma/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/karma/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/karma/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "node_modules/karma/node_modules/tmp": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz",
+ "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ "node": ">=14.14"
}
},
"node_modules/karma/node_modules/yargs": {
@@ -9777,9 +11414,9 @@
}
},
"node_modules/launch-editor": {
- "version": "2.11.1",
- "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz",
- "integrity": "sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz",
+ "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9799,36 +11436,6 @@
"node": ">= 0.6.3"
}
},
- "node_modules/lazystream/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "license": "MIT",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/lazystream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "license": "MIT"
- },
- "node_modules/lazystream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/less": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/less/-/less-4.2.2.tgz",
@@ -9883,21 +11490,6 @@
}
}
},
- "node_modules/less/node_modules/make-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/less/node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
@@ -9912,28 +11504,6 @@
"node": ">=4"
}
},
- "node_modules/less/node_modules/pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/less/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "license": "ISC",
- "optional": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
"node_modules/less/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -9988,10 +11558,23 @@
"node": ">=18.0.0"
}
},
+ "node_modules/listr2/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
"node_modules/listr2/node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -10001,6 +11584,13 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/listr2/node_modules/emoji-regex": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/listr2/node_modules/eventemitter3": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
@@ -10008,10 +11598,44 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/listr2/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/listr2/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
"node_modules/listr2/node_modules/wrap-ansi": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
- "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10083,13 +11707,17 @@
}
},
"node_modules/loader-runner": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
- "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz",
+ "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6.11.5"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
}
},
"node_modules/loader-utils": {
@@ -10176,14 +11804,79 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/log-update/node_modules/ansi-escapes": {
+ "node_modules/log-update/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/log-update/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/log-update/node_modules/cli-cursor": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
+ "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-update/node_modules/emoji-regex": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/log-update/node_modules/is-fullwidth-code-point": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz",
+ "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-update/node_modules/onetime": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz",
- "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",
+ "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "environment": "^1.0.0"
+ "mimic-function": "^5.0.0"
},
"engines": {
"node": ">=18"
@@ -10192,27 +11885,63 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/log-update/node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "node_modules/log-update/node_modules/restore-cursor": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
+ "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^7.0.0",
+ "signal-exit": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-update/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/log-update/node_modules/slice-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz",
+ "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "is-fullwidth-code-point": "^5.0.0"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=18"
},
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
}
},
- "node_modules/log-update/node_modules/is-fullwidth-code-point": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz",
- "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==",
+ "node_modules/log-update/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "get-east-asian-width": "^1.0.0"
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
},
"engines": {
"node": ">=18"
@@ -10221,27 +11950,26 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/log-update/node_modules/slice-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz",
- "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==",
+ "node_modules/log-update/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "ansi-styles": "^6.2.1",
- "is-fullwidth-code-point": "^5.0.0"
+ "ansi-regex": "^6.0.1"
},
"engines": {
- "node": ">=18"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/log-update/node_modules/wrap-ansi": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
- "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10303,19 +12031,40 @@
}
},
"node_modules/make-dir": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
- "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"dev": true,
"license": "MIT",
+ "optional": true,
"dependencies": {
- "semver": "^7.5.3"
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=6"
+ }
+ },
+ "node_modules/make-dir/node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "license": "ISC",
+ "optional": true,
+ "bin": {
+ "semver": "bin/semver"
}
},
"node_modules/make-fetch-happen": {
@@ -10355,6 +12104,20 @@
"node": ">=10"
}
},
+ "node_modules/matcher/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
@@ -10376,20 +12139,19 @@
}
},
"node_modules/memfs": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.36.0.tgz",
- "integrity": "sha512-mfBfzGUdoEw5AZwG8E965ej3BbvW2F9LxEWj4uLxF6BEh1dO2N9eS3AGu9S6vfenuQYrVjsbUOOZK7y3vz4vyQ==",
+ "version": "4.50.0",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.50.0.tgz",
+ "integrity": "sha512-N0LUYQMUA1yS5tJKmMtU9yprPm6ZIg24yr/OVv/7t6q0kKDIho4cBbXRi1XKttUmNYDYgF/q45qrKE/UhGO0CA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/json-pack": "^1.0.3",
- "@jsonjoy.com/util": "^1.3.0",
- "tree-dump": "^1.0.1",
+ "@jsonjoy.com/json-pack": "^1.11.0",
+ "@jsonjoy.com/util": "^1.9.0",
+ "glob-to-regex.js": "^1.0.1",
+ "thingies": "^2.5.0",
+ "tree-dump": "^1.0.3",
"tslib": "^2.0.0"
},
- "engines": {
- "node": ">= 4.0.0"
- },
"funding": {
"type": "github",
"url": "https://github.com/sponsors/streamich"
@@ -10716,9 +12478,9 @@
"license": "ISC"
},
"node_modules/minizlib": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz",
- "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
+ "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10852,6 +12614,20 @@
"node": ">= 4.4.x"
}
},
+ "node_modules/needle/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/negotiator": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
@@ -10888,9 +12664,9 @@
}
},
"node_modules/node-gyp": {
- "version": "11.3.0",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.3.0.tgz",
- "integrity": "sha512-9J0+C+2nt3WFuui/mC46z2XCZ21/cKlFDuywULmseD/LlmnOrSeEAE4c/1jw6aybXLmpZnQY3/LmOJfgyHIcng==",
+ "version": "11.5.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.5.0.tgz",
+ "integrity": "sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10948,34 +12724,17 @@
"node": ">=16"
}
},
- "node_modules/node-gyp/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,
- "license": "MIT",
- "bin": {
- "mkdirp": "dist/cjs/src/bin.js"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/node-gyp/node_modules/tar": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
- "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
+ "version": "7.5.2",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz",
+ "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==",
"dev": true,
- "license": "ISC",
+ "license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/fs-minipass": "^4.0.0",
"chownr": "^3.0.0",
"minipass": "^7.1.2",
- "minizlib": "^3.0.1",
- "mkdirp": "^3.0.1",
+ "minizlib": "^3.1.0",
"yallist": "^5.0.0"
},
"engines": {
@@ -11009,9 +12768,9 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.19",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
- "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
+ "version": "2.0.26",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.26.tgz",
+ "integrity": "sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==",
"license": "MIT"
},
"node_modules/nopt": {
@@ -11030,36 +12789,6 @@
"node": "^18.17.0 || >=20.5.0"
}
},
- "node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/normalize-package-data/node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -11106,9 +12835,9 @@
}
},
"node_modules/npm-install-checks": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-7.1.1.tgz",
- "integrity": "sha512-u6DCwbow5ynAX5BdiHQ9qvexme4U3qHW3MWe5NqH+NeBm0LbiH6zvGjNNew1fY+AZZUtVHbOPF3j7mJxbUzpXg==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-7.1.2.tgz",
+ "integrity": "sha512-z9HJBCYw9Zr8BqXcllKIs5nI+QggAImbBdHphOzVYrz2CB4iQ6FzWyKmlqDZua+51nAu7FcemlbTc9VgQN5XDQ==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -11281,16 +13010,16 @@
}
},
"node_modules/onetime": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",
- "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "mimic-function": "^5.0.0"
+ "mimic-fn": "^2.1.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -11315,6 +13044,22 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/open/node_modules/is-wsl": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
+ "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-inside-container": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/ora": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
@@ -11339,79 +13084,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/ora/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ora/node_modules/cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "restore-cursor": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ora/node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ora/node_modules/restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ora/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/ora/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/ordered-binary": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.0.tgz",
@@ -11426,43 +13098,11 @@
"integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
- "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^4.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/p-locate/node_modules/p-limit": {
+ "node_modules/p-limit": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
"integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
@@ -11478,14 +13118,17 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/p-locate/node_modules/yocto-queue": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz",
- "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==",
+ "node_modules/p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
"engines": {
- "node": ">=12.20"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -11532,16 +13175,6 @@
"node": ">= 4"
}
},
- "node_modules/p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/package-json-from-dist": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
@@ -11813,9 +13446,9 @@
"license": "ISC"
},
"node_modules/picomatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
- "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11937,6 +13570,19 @@
}
}
},
+ "node_modules/postcss-loader/node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/postcss-media-query-parser": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
@@ -12264,19 +13910,6 @@
"node": ">= 0.8"
}
},
- "node_modules/raw-body/node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/read-pkg": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
@@ -12359,6 +13992,16 @@
"node": ">=4"
}
},
+ "node_modules/read-pkg-up/node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/read-pkg-up/node_modules/path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
@@ -12369,6 +14012,26 @@
"node": ">=4"
}
},
+ "node_modules/read-pkg/node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/read-pkg/node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
"node_modules/read-pkg/node_modules/path-type": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
@@ -12382,19 +14045,29 @@
"node": ">=4"
}
},
- "node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "node_modules/read-pkg/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"license": "MIT",
"dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
"node_modules/readdir-glob": {
@@ -12454,9 +14127,9 @@
"license": "MIT"
},
"node_modules/regenerate-unicode-properties": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz",
- "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==",
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz",
+ "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12481,18 +14154,18 @@
"license": "MIT"
},
"node_modules/regexpu-core": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz",
- "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==",
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz",
+ "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==",
"dev": true,
"license": "MIT",
"dependencies": {
"regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.2.0",
+ "regenerate-unicode-properties": "^10.2.2",
"regjsgen": "^0.8.0",
- "regjsparser": "^0.12.0",
+ "regjsparser": "^0.13.0",
"unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
+ "unicode-match-property-value-ecmascript": "^2.2.1"
},
"engines": {
"node": ">=4"
@@ -12506,31 +14179,18 @@
"license": "MIT"
},
"node_modules/regjsparser": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz",
- "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz",
+ "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "jsesc": "~3.0.2"
+ "jsesc": "~3.1.0"
},
"bin": {
"regjsparser": "bin/parser"
}
},
- "node_modules/regjsparser/node_modules/jsesc": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
- "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -12669,20 +14329,17 @@
}
},
"node_modules/restore-cursor": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
- "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "onetime": "^7.0.0",
- "signal-exit": "^4.1.0"
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
},
"engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=8"
}
},
"node_modules/retry": {
@@ -12729,6 +14386,28 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/roarr": {
"version": "2.15.4",
"resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
@@ -12748,6 +14427,14 @@
"node": ">=8.0"
}
},
+ "node_modules/roarr/node_modules/sprintf-js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "optional": true
+ },
"node_modules/rollup": {
"version": "4.34.8",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz",
@@ -12788,9 +14475,9 @@
}
},
"node_modules/run-applescript": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
- "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
+ "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -12833,23 +14520,9 @@
}
},
"node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"license": "MIT"
},
"node_modules/safe-regex-test": {
@@ -12940,17 +14613,17 @@
}
},
"node_modules/sax": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
- "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==",
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz",
+ "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==",
"dev": true,
- "license": "ISC",
+ "license": "BlueOak-1.0.0",
"optional": true
},
"node_modules/schema-utils": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz",
- "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz",
+ "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13007,10 +14680,13 @@
}
},
"node_modules/semver": {
- "version": "7.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
- "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+ "version": "7.5.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
+ "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
"license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
"semver": "bin/semver.js"
},
@@ -13026,6 +14702,24 @@
"license": "MIT",
"optional": true
},
+ "node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
"node_modules/send": {
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
@@ -13365,16 +15059,11 @@
}
},
"node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "license": "ISC",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true,
+ "license": "ISC"
},
"node_modules/sigstore": {
"version": "3.1.0",
@@ -13425,9 +15114,9 @@
}
},
"node_modules/slice-ansi/node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -13437,6 +15126,19 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
+ "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/smart-buffer": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
@@ -13629,6 +15331,19 @@
"webpack": "^5.72.1"
}
},
+ "node_modules/source-map-loader/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/source-map-support": {
"version": "0.5.21",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
@@ -13718,14 +15433,21 @@
"wbuf": "^1.7.3"
}
},
- "node_modules/sprintf-js": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
- "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
- "dev": true,
- "license": "BSD-3-Clause",
- "optional": true
- },
+ "node_modules/spdy-transport/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/ssri": {
"version": "12.0.0",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz",
@@ -13749,6 +15471,15 @@
"node": ">= 0.6"
}
},
+ "node_modules/stream-buffers": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.3.tgz",
+ "integrity": "sha512-pqMqwQCso0PBJt2PQmDO0cFj0lyqmiwOMiMSkVtRokl7e+ZTRYgDHKnuZNbqjiJXgsg4nuqtD/zxuo9KqTp0Yw==",
+ "license": "Unlicense",
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
"node_modules/streamroller": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz",
@@ -13764,79 +15495,38 @@
"node": ">=8.0"
}
},
- "node_modules/streamroller/node_modules/fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
- "node_modules/streamroller/node_modules/jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
- "dev": true,
- "license": "MIT",
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/streamroller/node_modules/universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
"node_modules/streamx": {
- "version": "2.22.1",
- "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz",
- "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==",
+ "version": "2.23.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz",
+ "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==",
"license": "MIT",
"dependencies": {
+ "events-universal": "^1.0.0",
"fast-fifo": "^1.3.2",
"text-decoder": "^1.1.0"
- },
- "optionalDependencies": {
- "bare-events": "^2.2.0"
}
},
"node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"license": "MIT",
"dependencies": {
- "safe-buffer": "~5.2.0"
+ "safe-buffer": "~5.1.0"
}
},
"node_modules/string-width": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
- "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
- "dev": true,
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"license": "MIT",
"dependencies": {
- "emoji-regex": "^10.3.0",
- "get-east-asian-width": "^1.0.0",
- "strip-ansi": "^7.1.0"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
},
"engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=8"
}
},
"node_modules/string-width-cjs": {
@@ -13854,31 +15544,7 @@
"node": ">=8"
}
},
- "node_modules/string-width-cjs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width-cjs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "license": "MIT"
- },
- "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width-cjs/node_modules/strip-ansi": {
+ "node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
@@ -13890,21 +15556,6 @@
"node": ">=8"
}
},
- "node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
"node_modules/strip-ansi-cjs": {
"name": "strip-ansi",
"version": "6.0.1",
@@ -13918,15 +15569,6 @@
"node": ">=8"
}
},
- "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/strip-bom": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
@@ -13950,16 +15592,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/strip-outer/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/sumchecker": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
@@ -14010,13 +15642,17 @@
}
},
"node_modules/tapable": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz",
- "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
+ "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
}
},
"node_modules/tar": {
@@ -14226,14 +15862,14 @@
"license": "MIT"
},
"node_modules/tinyglobby": {
- "version": "0.2.14",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
- "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
+ "version": "0.2.15",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "fdir": "^6.4.4",
- "picomatch": "^4.0.2"
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
},
"engines": {
"node": ">=12.0.0"
@@ -14242,16 +15878,6 @@
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
- "node_modules/tmp": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz",
- "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14.14"
- }
- },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -14275,9 +15901,9 @@
}
},
"node_modules/tree-dump": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.3.tgz",
- "integrity": "sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz",
+ "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -14314,16 +15940,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/trim-repeated/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
@@ -14345,19 +15961,6 @@
"node": "^18.17.0 || >=20.5.0"
}
},
- "node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
@@ -14393,9 +15996,9 @@
}
},
"node_modules/ua-parser-js": {
- "version": "0.7.40",
- "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.40.tgz",
- "integrity": "sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ==",
+ "version": "0.7.41",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.41.tgz",
+ "integrity": "sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg==",
"dev": true,
"funding": [
{
@@ -14451,9 +16054,9 @@
}
},
"node_modules/unicode-match-property-value-ecmascript": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz",
- "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz",
+ "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -14461,9 +16064,9 @@
}
},
"node_modules/unicode-property-aliases-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
- "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz",
+ "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -14510,13 +16113,13 @@
}
},
"node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">= 10.0.0"
+ "node": ">= 4.0.0"
}
},
"node_modules/unpipe": {
@@ -14530,9 +16133,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
- "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz",
+ "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==",
"funding": [
{
"type": "opencollective",
@@ -14617,12 +16220,11 @@
}
},
"node_modules/vite": {
- "version": "6.3.5",
- "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz",
- "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz",
+ "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.4.4",
@@ -14692,10 +16294,178 @@
}
}
},
+ "node_modules/vite/node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz",
+ "integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz",
+ "integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz",
+ "integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz",
+ "integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz",
+ "integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz",
+ "integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz",
+ "integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz",
+ "integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz",
+ "integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz",
+ "integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz",
+ "integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz",
+ "integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
"node_modules/vite/node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.46.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz",
- "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==",
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz",
+ "integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==",
"cpu": [
"x64"
],
@@ -14704,13 +16474,12 @@
"optional": true,
"os": [
"linux"
- ],
- "peer": true
+ ]
},
"node_modules/vite/node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.46.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz",
- "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==",
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz",
+ "integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==",
"cpu": [
"x64"
],
@@ -14719,16 +16488,56 @@
"optional": true,
"os": [
"linux"
+ ]
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz",
+ "integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz",
+ "integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz",
+ "integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==",
+ "cpu": [
+ "x64"
],
- "peer": true
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
"node_modules/vite/node_modules/@types/estree": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/vite/node_modules/postcss": {
"version": "8.5.6",
@@ -14750,7 +16559,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -14761,12 +16569,11 @@
}
},
"node_modules/vite/node_modules/rollup": {
- "version": "4.46.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz",
- "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==",
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz",
+ "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/estree": "1.0.8"
},
@@ -14778,26 +16585,28 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.46.2",
- "@rollup/rollup-android-arm64": "4.46.2",
- "@rollup/rollup-darwin-arm64": "4.46.2",
- "@rollup/rollup-darwin-x64": "4.46.2",
- "@rollup/rollup-freebsd-arm64": "4.46.2",
- "@rollup/rollup-freebsd-x64": "4.46.2",
- "@rollup/rollup-linux-arm-gnueabihf": "4.46.2",
- "@rollup/rollup-linux-arm-musleabihf": "4.46.2",
- "@rollup/rollup-linux-arm64-gnu": "4.46.2",
- "@rollup/rollup-linux-arm64-musl": "4.46.2",
- "@rollup/rollup-linux-loongarch64-gnu": "4.46.2",
- "@rollup/rollup-linux-ppc64-gnu": "4.46.2",
- "@rollup/rollup-linux-riscv64-gnu": "4.46.2",
- "@rollup/rollup-linux-riscv64-musl": "4.46.2",
- "@rollup/rollup-linux-s390x-gnu": "4.46.2",
- "@rollup/rollup-linux-x64-gnu": "4.46.2",
- "@rollup/rollup-linux-x64-musl": "4.46.2",
- "@rollup/rollup-win32-arm64-msvc": "4.46.2",
- "@rollup/rollup-win32-ia32-msvc": "4.46.2",
- "@rollup/rollup-win32-x64-msvc": "4.46.2",
+ "@rollup/rollup-android-arm-eabi": "4.52.5",
+ "@rollup/rollup-android-arm64": "4.52.5",
+ "@rollup/rollup-darwin-arm64": "4.52.5",
+ "@rollup/rollup-darwin-x64": "4.52.5",
+ "@rollup/rollup-freebsd-arm64": "4.52.5",
+ "@rollup/rollup-freebsd-x64": "4.52.5",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.52.5",
+ "@rollup/rollup-linux-arm-musleabihf": "4.52.5",
+ "@rollup/rollup-linux-arm64-gnu": "4.52.5",
+ "@rollup/rollup-linux-arm64-musl": "4.52.5",
+ "@rollup/rollup-linux-loong64-gnu": "4.52.5",
+ "@rollup/rollup-linux-ppc64-gnu": "4.52.5",
+ "@rollup/rollup-linux-riscv64-gnu": "4.52.5",
+ "@rollup/rollup-linux-riscv64-musl": "4.52.5",
+ "@rollup/rollup-linux-s390x-gnu": "4.52.5",
+ "@rollup/rollup-linux-x64-gnu": "4.52.5",
+ "@rollup/rollup-linux-x64-musl": "4.52.5",
+ "@rollup/rollup-openharmony-arm64": "4.52.5",
+ "@rollup/rollup-win32-arm64-msvc": "4.52.5",
+ "@rollup/rollup-win32-ia32-msvc": "4.52.5",
+ "@rollup/rollup-win32-x64-gnu": "4.52.5",
+ "@rollup/rollup-win32-x64-msvc": "4.52.5",
"fsevents": "~2.3.2"
}
},
@@ -15013,19 +16822,6 @@
"fsevents": "~2.3.2"
}
},
- "node_modules/webpack-dev-server/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/webpack-dev-server/node_modules/http-proxy-middleware": {
"version": "2.0.9",
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz",
@@ -15201,10 +16997,9 @@
"license": "MIT"
},
"node_modules/wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
@@ -15212,7 +17007,10 @@
"strip-ansi": "^6.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/wrap-ansi-cjs": {
@@ -15233,111 +17031,6 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "license": "MIT"
- },
- "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -15419,56 +17112,6 @@
"node": ">=12"
}
},
- "node_modules/yargs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "license": "MIT"
- },
- "node_modules/yargs/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/yauzl": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
@@ -15481,22 +17124,22 @@
}
},
"node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz",
+ "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">=12.20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/yoctocolors-cjs": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz",
- "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz",
+ "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15556,19 +17199,19 @@
}
},
"node_modules/zip-a-folder/node_modules/lru-cache": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz",
- "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==",
+ "version": "11.2.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
+ "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
"license": "ISC",
"engines": {
"node": "20 || >=22"
}
},
"node_modules/zip-a-folder/node_modules/minimatch": {
- "version": "10.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
- "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
- "license": "ISC",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
+ "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
+ "license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/brace-expansion": "^5.0.0"
},
@@ -15649,6 +17292,35 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/zip-stream/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/zip-stream/node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
"node_modules/zone.js": {
"version": "0.15.1",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz",
diff --git a/package.json b/package.json
index 51f96535..dcee59ae 100644
--- a/package.json
+++ b/package.json
@@ -23,10 +23,12 @@
"@angular/router": "^19.2.14",
"@ng-bootstrap/ng-bootstrap": "^18.0.0",
"@popperjs/core": "^2.11.6",
+ "archiver": "^7.0.1",
"bootstrap": "^5.3.7",
"fflate": "^0.8.2",
"file-saver": "^2.0.5",
"rxjs": "~7.8.2",
+ "stream-buffers": "^3.0.3",
"tslib": "^2.3.0",
"zip-a-folder": "^3.1.9",
"zone.js": "~0.15.1"
@@ -36,11 +38,11 @@
"@angular/cli": "~19.2.15",
"@angular/compiler-cli": "^19.2.14",
"@angular/localize": "^19.2.14",
+ "@electron/packager": "^18.4.2",
"@types/bootstrap": "^5.2.6",
"@types/file-saver": "^2.0.7",
"@types/jasmine": "~5.1.9",
"electron": "^37.3.0",
- "@electron/packager": "^18.4.2",
"jasmine-core": "~5.9.0",
"karma": "~6.4.4",
"karma-chrome-launcher": "~3.2.0",
diff --git a/src/app/app.component.css b/src/app/app.component.css
index 87d77c6f..c86fe065 100644
--- a/src/app/app.component.css
+++ b/src/app/app.component.css
@@ -3,17 +3,23 @@
width: 100vw;
height: 100vh;
overflow: hidden;
+ display: flex;
+ flex-direction: column;
}
.body {
width: 100%;
- height: 100%;
+ height: calc(100% - 72px);
}
-.body > * {
- width: 100%;
- height: 90%;
-}
+.body > * { width: 100%; height: 90%; }
+
+/* When a right-side view is open (VIEW/COMPARE/VEX/METRICS), shrink left panel */
+.body.with-right app-upload { max-width: 420px; flex: 0 0 420px; }
+.body.with-right app-view,
+.body.with-right app-comparison,
+.body.with-right app-vex,
+.body.with-right app-metrics { flex: 1 1 auto; width: auto; }
.flex {
display: flex;
diff --git a/src/app/app.component.html b/src/app/app.component.html
index 8f449eea..150fab86 100644
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -1,10 +1,12 @@
-
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 014b09cb..7b6a2757 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -30,6 +30,8 @@ import {GenerateModalComponent} from './shared/components/toolbar/modals/generat
import {DiffFiltersComponent} from './features/comparison/diff-filters/diff-filters.component';
import {SpinnerComponent} from './shared/components/spinner/spinner.component';
import {RepairModalComponent} from './shared/components/toolbar/modals/repair-modal/repair-modal.component';
+import {VulnerabilitiesComponent} from './features/vulnerabilities/vulnerabilities.component';
+import {VulnerabilityDetailsComponent} from './features/vulnerability-details/vulnerability-details.component';
@NgModule({
declarations: [
@@ -60,9 +62,9 @@ import {RepairModalComponent} from './shared/components/toolbar/modals/repair-mo
DiffFiltersComponent,
RepairModalComponent
],
- bootstrap: [AppComponent],
- imports: [BrowserModule, NgbModule, NgbTooltipModule, FormsModule],
- providers: [provideHttpClient(withInterceptorsFromDi())]
+ imports: [BrowserModule, NgbModule, NgbTooltipModule, FormsModule, VulnerabilitiesComponent, VulnerabilityDetailsComponent],
+ providers: [provideHttpClient(withInterceptorsFromDi())],
+ bootstrap: [AppComponent]
})
export class AppModule {
}
diff --git a/src/app/features/comparison/comparison.component.css b/src/app/features/comparison/comparison.component.css
index fbfe6090..90ed5d0a 100644
--- a/src/app/features/comparison/comparison.component.css
+++ b/src/app/features/comparison/comparison.component.css
@@ -1,51 +1,85 @@
+/* Comparison Component Styles */
+
.compare-container {
display: flex;
flex-direction: column;
- gap: 10px;
- width: 80%;
- height: 80%;
+ gap: var(--space-lg);
+ width: 90%;
+ max-width: 1400px;
+ height: 85%;
margin: auto;
- margin-top: 5%;
+ margin-top: 2%;
}
.body {
width: 100%;
height: 100%;
- background-color: #fff;
- border-radius: 16px;
+ background-color: var(--theme-surface);
+ border-radius: var(--radius-xl);
+ box-shadow: var(--shadow-lg);
+ border: 1px solid var(--theme-border);
}
.header {
width: 100%;
- height: 75px;
- background-color: var(--primary);
- color: white;
+ height: 64px;
+ background-color: var(--theme-surface-elevated);
+ color: var(--theme-text-tertiary);
align-items: center;
justify-content: center;
- gap: 50px;
- border-radius: 16px 16px 0 0;
+ gap: var(--space-2xl);
+ border-radius: var(--radius-xl) var(--radius-xl) 0 0;
+ border-bottom: 1px solid var(--theme-border);
+ font-weight: 600;
}
.option {
cursor: pointer;
+ padding: var(--space-sm) var(--space-md);
+ border-radius: var(--radius-md);
+ transition: all var(--transition-fast);
+}
+
+.option:hover {
+ color: var(--theme-text-primary);
+ background-color: var(--theme-bg-tertiary);
}
#selected {
- color: white;
+ color: var(--brand-primary);
+ background-color: var(--brand-primary-light);
}
.content {
height: 100%;
- padding: 10px;
+ padding: var(--space-xl);
word-break: break-word;
- overflow-y: scroll;
+ overflow-y: auto;
+ color: var(--theme-text-primary);
+}
+
+.content::-webkit-scrollbar {
+ width: 8px;
+}
+
+.content::-webkit-scrollbar-track {
+ background: var(--theme-bg-tertiary);
+ border-radius: var(--radius-md);
+}
+
+.content::-webkit-scrollbar-thumb {
+ background: var(--theme-border);
+ border-radius: var(--radius-md);
}
.filters-container {
display: flex;
flex-direction: column;
- gap: 5px;
- padding: 15px;
+ gap: var(--space-md);
+ padding: var(--space-lg);
+ background-color: var(--theme-bg-tertiary);
+ border-radius: var(--radius-md);
+ margin-bottom: var(--space-lg);
}
.wrapper {
@@ -54,8 +88,11 @@
height: 100%;
width: 100%;
min-width: 400px;
+ gap: var(--space-lg);
}
.button-container {
- margin-top: 20px;
-}
+ margin-top: var(--space-xl);
+ display: flex;
+ justify-content: flex-end;
+}
\ No newline at end of file
diff --git a/src/app/features/metrics/metrics/metrics.component.css b/src/app/features/metrics/metrics/metrics.component.css
index 9fe6903b..d8a3f8fd 100644
--- a/src/app/features/metrics/metrics/metrics.component.css
+++ b/src/app/features/metrics/metrics/metrics.component.css
@@ -1,61 +1,116 @@
+/* Metrics/QA Component Styles */
+
.wrapper {
display: flex;
justify-content: space-between;
height: 100%;
width: 100%;
min-width: 400px;
+ gap: var(--space-lg);
}
.loading {
width: 100%;
height: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ gap: var(--space-lg);
}
.loading > div {
width: max-content;
+ color: var(--theme-text-secondary);
+ font-size: 1rem;
}
.scroll-y {
- overflow-y: scroll;
+ overflow-y: auto;
+}
+
+.scroll-y::-webkit-scrollbar {
+ width: 8px;
+}
+
+.scroll-y::-webkit-scrollbar-track {
+ background: var(--theme-bg-tertiary);
+ border-radius: var(--radius-md);
}
+.scroll-y::-webkit-scrollbar-thumb {
+ background: var(--theme-border);
+ border-radius: var(--radius-md);
+}
+
+/* Test Results */
.test-result {
display: flex;
width: 100%;
justify-content: space-between;
align-items: center;
+ padding: var(--space-md);
+ background-color: var(--theme-surface);
+ border: 1px solid var(--theme-border);
+ border-radius: var(--radius-md);
+ margin-bottom: var(--space-sm);
+ transition: all var(--transition-fast);
+}
+
+.test-result:hover {
+ background-color: var(--theme-bg-tertiary);
+ box-shadow: var(--shadow-sm);
}
.attributes {
display: flex;
min-width: fit-content;
+ gap: 2px;
}
.attribute {
margin: 1px;
height: 20px;
width: 10px;
- border-radius: 2px;
+ border-radius: var(--radius-sm);
}
.component-title {
width: 100%;
+ color: var(--theme-text-primary);
+ font-weight: 600;
}
.list {
width: 100%;
+ display: flex;
+ flex-direction: column;
+ gap: var(--space-sm);
}
.filters-container {
display: flex;
flex-direction: column;
- gap: 5px;
+ gap: var(--space-md);
+ padding: var(--space-lg);
+ background-color: var(--theme-bg-tertiary);
+ border-radius: var(--radius-md);
+ margin-bottom: var(--space-lg);
}
.button-container {
- margin-top: 20px;
+ margin-top: var(--space-xl);
+ display: flex;
+ justify-content: flex-end;
}
.error-result {
flex-direction: row;
+ background-color: var(--color-error-bg);
+ border-color: var(--color-error);
+ border-left-width: 4px;
}
+
+.error-result:hover {
+ background-color: var(--color-error-bg);
+}
\ No newline at end of file
diff --git a/src/app/features/upload/upload.component.css b/src/app/features/upload/upload.component.css
index 3472673e..a739d3cc 100644
--- a/src/app/features/upload/upload.component.css
+++ b/src/app/features/upload/upload.component.css
@@ -1,304 +1,347 @@
+/* Upload Container - Main Layout */
.upload-container {
position: relative;
display: flex;
flex-direction: column;
- gap: 10px;
+ gap: var(--space-lg);
width: 100%;
height: 100%;
- padding: 25px 50px;
+ padding: var(--space-lg) var(--space-2xl);
margin-left: auto;
margin-right: auto;
- max-width: 1000px;
+ transition: all var(--transition-base);
}
-.file-name {
- border-radius: 15px 15px 0 0;
- border-color: var(--primary);
- background-color: white;
+.upload-container h3 {
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: var(--theme-text-primary);
+ margin: 0;
+}
+
+/* Search and Filter Section */
+.search-parent-container {
+ display: flex;
+ gap: var(--space-md);
+ justify-content: space-between;
align-items: center;
- justify-content: flex-start;
- padding: 10px;
+ flex-wrap: wrap;
}
-.file-name > div {
- width: 300px;
+.search-container {
+ display: flex;
+ align-items: center;
+ background-color: var(--theme-surface);
+ border: 1px solid var(--theme-border);
+ border-radius: var(--radius-md);
+ padding: var(--space-xs) var(--space-sm);
+ flex: 1;
+ min-width: 250px;
+ max-width: 400px;
+ transition: all var(--transition-fast);
}
-.file-name input {
- margin-right: 10px;
+.search-container:focus-within {
+ border-color: var(--brand-primary);
+ box-shadow: 0 0 0 3px var(--brand-primary-light);
}
-.file-name h3 {
- margin-bottom: 0rem !important;
- cursor: pointer;
+.search-container input {
+ border: 0;
+ color: var(--theme-text-primary);
+ background-color: transparent;
+ flex: 1;
+ outline: none;
+ font-size: 0.9375rem;
+ padding: var(--space-sm);
}
-.card-title {
- font-weight: bold;
- font-size: 18px;
- margin-bottom: 15px;
+.search-container ::placeholder {
+ color: var(--theme-text-tertiary);
}
-.file-dropzone {
- border-radius: 15px 15px 15px 15px;
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
- border: var(--primary) dashed 2px;
- color: var(--primary);
- background-color: white;
- padding: 40px;
+.search-container button {
+ background: transparent;
+ border: none;
cursor: pointer;
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 10px;
+ line-height: 0;
+ padding: var(--space-xs);
+ color: var(--theme-text-secondary);
+ border-radius: var(--radius-sm);
+ transition: all var(--transition-fast);
}
-.generate-dropzone {
- color: var(--primary);
- border-radius: 15p;
- border: var(--primary) dashed 2px;
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
- background-color: white;
- padding: 40px;
- cursor: pointer;
- display: flex;
- flex-direction: column;
+.search-container button:hover {
+ background: var(--theme-bg-tertiary);
+ color: var(--brand-primary);
+}
+
+.search-btn {
+ background-color: transparent;
+ color: var(--theme-text-secondary);
+}
+
+.format-filter {
+ min-width: 200px;
+}
+
+/* File List Header */
+.file-name {
+ border-radius: var(--radius-lg) var(--radius-lg) 0 0;
+ background-color: var(--theme-surface-elevated);
+ border: 1px solid var(--theme-border);
+ border-bottom: none;
align-items: center;
- gap: 10px;
+ justify-content: flex-start;
+ padding: var(--space-md) var(--space-lg);
+ gap: var(--space-lg);
}
-.file-dropzone span {
- font-size: 75px
+.file-name > div {
+ width: 300px;
}
-hr {
- width: 15%;
- border-top: 3px solid var(--primary);
- flex-wrap: wrap;
+.file-name input[type="checkbox"] {
+ margin-right: var(--space-sm);
+ cursor: pointer;
+ width: 18px;
+ height: 18px;
}
-.btn-primary {
- background-color: transparent;
- border-color: var(--primary);
- color: var(--primary);
- border-width: 2px;
+.file-name h3 {
+ margin: 0 !important;
+ cursor: pointer;
+ font-size: 1rem;
+ font-weight: 600;
+ color: var(--theme-text-primary);
+ user-select: none;
+ display: flex;
+ align-items: center;
+ gap: var(--space-xs);
+ transition: color var(--transition-fast);
}
-.search-btn {
- background-color: transparent;
- color: var(--primary);
+.file-name h3:hover {
+ color: var(--brand-primary);
}
+/* Files Container */
.files-container {
- border-radius: 0 0 15px 15px;
- box-shadow: 0 2px 4px #0000001a;
- background-color: #fff;
+ border-radius: 0 0 var(--radius-lg) var(--radius-lg);
+ box-shadow: var(--shadow-md);
+ background-color: var(--theme-surface);
+ border: 1px solid var(--theme-border);
display: flex;
flex-direction: column;
- overflow-y: scroll;
+ overflow-y: auto;
flex: 1;
min-height: 86px;
justify-content: flex-start;
}
.files-container::-webkit-scrollbar {
- width: 12px;
- background-color: #f5f5f5;
- border-radius: 0 0 15px 0px;
+ width: 8px;
}
-.files-container::-webkit-scrollbar-thumb {
- background-color: lightgray;
- border-radius: 15px;
-}
-
-.files-container::-webkit-scrollbar-thumb:hover {
- background-color: gray;
+.files-container::-webkit-scrollbar-track {
+ background: var(--theme-bg-tertiary);
+ border-radius: var(--radius-md);
}
-.files-container::-webkit-scrollbar-track {
- border-radius: 0 0 15px 0px;
+.files-container::-webkit-scrollbar-thumb {
+ background: var(--theme-border);
+ border-radius: var(--radius-md);
}
-.search-container button:hover {
- background: #ccc;
- border-radius: 6px;
+.files-container::-webkit-scrollbar-thumb:hover {
+ background: var(--theme-text-tertiary);
}
-.search-container {
+/* SBOM Row Items */
+.sbom-row {
display: flex;
align-items: center;
- float: right;
- border: var(--primary);
- border-width: 2px;
- border-style: solid;
- background-color: white;
- border-radius: 6px;
+ color: var(--theme-text-primary);
+ padding: var(--space-sm) var(--space-lg);
+ transition: all var(--transition-fast);
+ border-bottom: 1px solid var(--theme-border-light);
}
-.search-container input {
- border: 0;
- color: var(--primary);
- background-color: transparent;
- flex: auto;
+.sbom-row:hover {
+ background-color: var(--theme-bg-tertiary);
+ cursor: pointer;
}
-.search-container ::placeholder {
- color: var(--primary);
+.sbom-row:last-child {
+ border-bottom: none;
}
-.search-parent-container {
+.sbom {
display: flex;
- gap: 15px;
- justify-content: space-between;
+ align-items: center;
+ gap: var(--space-md);
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ width: 30%;
+ min-width: 200px;
+ flex: 1;
}
-.search-container button {
- background: transparent;
- border: none;
+.sbom-checkbox {
cursor: pointer;
- line-height: 0;
- padding: 0;
-}
-
-.wrapper {
- border: 1px solid #000;
- display: inline-block;
+ width: 18px;
+ height: 18px;
}
-.topnav {
- overflow: hidden;
- background-color: var(--primary);
- width: 100%;
+.sbom-view {
+ min-width: 120px;
+ text-align: right;
+ font-size: 0.875rem;
+ font-weight: 600;
+ color: var(--theme-text-secondary);
}
-.topnav a {
- float: right;
- color: white;
- text-align: center;
- padding: 14px 16px;
- text-decoration: none;
- justify-content: space-between;
+/* Invalid/Error SBOM Styling */
+.sbom-error {
+ color: var(--color-error) !important;
+ background-color: var(--color-error-bg);
+ border-left: 4px solid var(--color-error);
}
-.topnav a:hover {
- background-color: #ddd;
- color: var(--primary);
+.sbom-error:hover {
+ background-color: var(--color-error-bg);
}
-.topnav a.active {
- background-color: white;
- color: var(--primary);
- border-color: var(--primary);
- border-width: 2px;
- border-color: black;
+/* Loading State */
+.spinner {
+ margin-right: var(--space-sm);
+ align-self: center;
}
-.sbom > div {
- width: 300px;
- color: var(--primary);
+.spinner-text {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ color: var(--brand-primary);
+ font-weight: 500;
}
-.buttons {
- gap: 15px;
- flex-wrap: wrap;
+/* Alternating Row Colors */
+.altColors:nth-of-type(odd) .sbom-row {
+ background-color: var(--theme-bg-primary);
}
-.btn-modal {
- padding: 5px;
- gap: 10px;
- width: fit-content;
- height: 50px;
- border-radius: 15px;
- background-color: white;
- border: 2px solid rgba(255, 255, 255, 0.752);
- box-shadow: 0px 5px 5px #00000025;
- display: flex;
- transition-duration: 0.35s;
+/* Dropzones */
+.file-dropzone,
+.generate-dropzone {
+ border-radius: var(--radius-xl);
+ box-shadow: var(--shadow-md);
+ border: 2px dashed var(--brand-primary);
+ color: var(--theme-text-secondary);
+ background-color: var(--theme-surface);
+ padding: var(--space-2xl);
cursor: pointer;
- text-align: center;
- align-items: center;
- border-color: black;
- color: black;
-}
-
-.sbom {
display: flex;
+ flex-direction: column;
align-items: center;
- gap: 10px;
- text-overflow: ellipsis;
- white-space: nowrap;
- width: 30%;
- min-width: 200px;
- margin-right: 10px;
- padding: 4.5px;
+ gap: var(--space-lg);
+ transition: all var(--transition-base);
+ min-height: 200px;
+ justify-content: center;
}
-.sbom-row {
- color: var(--primary);
- align-items: center;
+.file-dropzone:hover,
+.generate-dropzone:hover {
+ border-color: var(--brand-primary-hover);
+ background-color: var(--brand-primary-light);
+ transform: scale(1.01);
}
-.sbom-row:hover {
- background-color: lightgray;
- cursor: default;
+.file-dropzone span {
+ font-size: 64px;
+ color: var(--brand-primary);
}
-.spinner {
- margin-right: 10px; /* Add some space between spinner and text */
- align-self: center; /* Center the spinner vertically */
+.file-dropzone p,
+.generate-dropzone p {
+ margin: 0;
+ font-size: 1rem;
+ color: var(--theme-text-secondary);
}
-.spinner-text {
- flex: 1; /* Expand to take remaining space */
- display: flex;
- align-items: center; /* Vertically center the text */
+.text-center {
+ text-align: center;
}
-
-.altColors:nth-of-type(odd) {
- background-color: var(--highlight);
+hr {
+ width: 15%;
+ border-top: 3px solid var(--brand-primary);
+ border-bottom: none;
+ border-left: none;
+ border-right: none;
+ margin: 0;
}
-.center {
+/* Action Buttons */
+.buttons {
display: flex;
- align-items: center;
-}
-
-.hide {
- opacity: 0;
- cursor: default !important;
+ gap: var(--space-md);
+ flex-wrap: wrap;
+ margin-top: var(--space-md);
+ justify-content: flex-start;
}
+/* Collapse Toggle */
.toggle-files {
position: absolute;
- width: 20px;
- border-radius: 0px 16px 16px 0px;
+ width: 24px;
+ border-radius: 0px var(--radius-lg) var(--radius-lg) 0px;
height: 50%;
top: 25%;
- background-color: var(--primary);
+ background-color: var(--brand-primary);
right: 0;
margin: auto;
display: none;
align-items: center;
justify-content: center;
cursor: pointer;
- transform: translateX(20px);
+ transform: translateX(24px);
+ box-shadow: var(--shadow-md);
+ transition: all var(--transition-fast);
+}
+
+.toggle-files:hover {
+ background-color: var(--brand-primary-hover);
+ transform: translateX(24px) scale(1.05);
}
.toggle-files > .text {
transform: rotate(90deg);
+ color: white;
+ font-size: 0.75rem;
+ font-weight: 600;
+ text-transform: uppercase;
}
+/* Responsive Design */
@media screen and (max-width: 1000px) {
.upload-container {
position: absolute;
z-index: 2;
- background-color: var(--gray);
+ background-color: var(--theme-bg-secondary);
width: 90%;
+ box-shadow: var(--shadow-xl);
+ border-radius: var(--radius-xl);
}
.toggle-files {
display: flex;
}
}
+
+/* Hide utility */
+.hide {
+ opacity: 0;
+ cursor: default !important;
+ pointer-events: none;
+}
\ No newline at end of file
diff --git a/src/app/features/upload/upload.component.html b/src/app/features/upload/upload.component.html
index bb37870a..16039037 100644
--- a/src/app/features/upload/upload.component.html
+++ b/src/app/features/upload/upload.component.html
@@ -1,58 +1,61 @@
-
+
SBOM Files
-
0" class="search-parent-container">
-
-
+
0">
+
+
+ class="search-btn material-symbols-outlined">clear
-
-
0" [style]="collapsed ? 'display: none' : ''" class="file-name flex">
+
-
0"
- [style]="collapsed ? 'display: none' : ''" class="files-container">
+
0" (drop)="onFileDrop($event)" [style]="collapsed ? 'display: none' : ''"
+ (dragover)="onDragOver($event)" (dragleave)="onDragLeave($event)">
-
+
-
-
-
+
- {{ GetSBOMInfo(item).format }}
+ {{GetSBOMInfo(item).format}}
-
+
-
-
+
{{ getAlias(item) }}
@@ -60,59 +63,53 @@
Format {{ sortingOptions['FORMAT'] ? 'â–´' :
-
0" [style]="collapsed ? 'display: none' : ''" class="buttons flex">
-
-
-
= 2 ? compareModal = true : sbomsRequiredMessage(2, true)"
- text="Compare"/>
-
-
-
- = 2 ? merge() : sbomsRequiredMessage(2, true)" text="Merge"/>
+
-
+
publish
Drag and drop SBOMS
-
+
-
0"
- [style]="collapsed ? 'display: none' : ''" class="generate-dropzone">
+
0" (drop)="onFileDrop($event)" [style]="collapsed ? 'display: none' : ''"
+ (dragover)="onDragOver($event)" (dragleave)="onDragLeave($event)">
-
+
-
+
or drag project directory in here
-
-
-
-
-
-
+
+
+
+
+
diff --git a/src/app/features/upload/upload.component.ts b/src/app/features/upload/upload.component.ts
index c4779e39..da572335 100644
--- a/src/app/features/upload/upload.component.ts
+++ b/src/app/features/upload/upload.component.ts
@@ -1,20 +1,20 @@
-import {Component, HostListener, OnInit} from '@angular/core';
-import {SbomService} from 'src/app/shared/services/sbom.service';
-import {PAGES, RoutingService} from 'src/app/shared/services/routing.service';
-import {FileStatus} from 'src/app/shared/models/file';
-import {SVIPService} from 'src/app/shared/services/SVIP.service';
-import {EventTypes} from 'src/app/shared/models/event-types';
-import {ToastService} from 'src/app/shared/services/toast.service';
-import {DownloadService} from 'src/app/shared/services/download.service';
+import { Component, HostListener, OnInit } from '@angular/core';
+import { SbomService } from 'src/app/shared/services/sbom.service';
+import { PAGES, RoutingService } from 'src/app/shared/services/routing.service';
+import { FileStatus } from 'src/app/shared/models/file';
+import { SVIPService } from 'src/app/shared/services/SVIP.service';
+import { EventTypes } from 'src/app/shared/models/event-types';
+import { ToastService } from 'src/app/shared/services/toast.service';
+import { DownloadService } from 'src/app/shared/services/download.service';
@Component({
selector: 'app-upload',
templateUrl: './upload.component.html',
styleUrls: ['./upload.component.css'],
+ standalone: false,
host: {
'(window:resize)': 'onResize($event)'
- },
- standalone: false
+ }
})
export class UploadComponent implements OnInit {
public filterSearch: string = '';
@@ -40,7 +40,7 @@ export class UploadComponent implements OnInit {
overwrite: true,
};
- public convertChoices: { [key: string]: string[] } = {
+ public convertChoices: {[key: string]: string[]} = {
'CDX14': ['JSON', 'XML'],
'SPDX23': ['TAGVALUE', 'JSON'],
}
@@ -59,8 +59,7 @@ export class UploadComponent implements OnInit {
private toastService: ToastService,
private svipService: SVIPService,
private downloadService: DownloadService
- ) {
- }
+ ) {}
ngOnInit() {
this.sbomService.getAllSBOMs();
@@ -88,7 +87,7 @@ export class UploadComponent implements OnInit {
*/
ContainsFiles() {
this.sbomService.GetSBOMsOfStatus(FileStatus.VALID).length > 0 ||
- this.sbomService.GetSBOMsOfStatus(FileStatus.LOADING).length > 0;
+ this.sbomService.GetSBOMsOfStatus(FileStatus.LOADING).length > 0;
}
GetSelected() {
@@ -151,7 +150,7 @@ export class UploadComponent implements OnInit {
return this.sbomService.getSBOMschemas();
}
- GetSBOMFormat() {
+ GetSBOMFormat(){
return this.sbomService.getSBOMformat();
}
@@ -221,6 +220,15 @@ export class UploadComponent implements OnInit {
return false;
}
+ private downloadFile(file: string) {
+ const fileInfo = this.sbomService.GetSBOMInfo(file);
+ const content = this.sbomService.downloadSBOM(file);
+
+ if (fileInfo && content) {
+ this.downloadService.Download(fileInfo.fileName, content);
+ }
+ }
+
DownloadSelected() {
if (this.CheckForErroredFiles()) {
return;
@@ -247,7 +255,7 @@ export class UploadComponent implements OnInit {
let path = this.getAlias(name);
- if (!path)
+ if(!path)
path = '';
const file = this.GetSBOMInfo(name);
@@ -306,13 +314,13 @@ export class UploadComponent implements OnInit {
const files = event.dataTransfer?.files;
if (files && files.length > 0) {
- const filePaths = Array.from(files).map((file) => (file as any).path);
+ const filePaths = Array.from(files).map((file: any) => (file.path as string));
this.sbomService.AddFiles(filePaths);
}
}
- onResize(event: any) {
- if (event.target.innerWidth > 1000)
+ onResize(event: any){
+ if(event.target.innerWidth > 1000)
this.collapsed = false;
}
@@ -324,6 +332,9 @@ export class UploadComponent implements OnInit {
if (searchInput) {
searchInput.value = '';
}
+ // Re-enable all formats and schemas so nothing stays hidden
+ Object.keys(this.GetSBOMFormat()).forEach((key: string) => this.sbomService.SetSBOMFormat(key, true));
+ Object.keys(this.GetSBOMSchemas()).forEach((key: string) => this.sbomService.SetSBOMSchema(key, true));
}
UpdateSearch(event: any) {
@@ -381,13 +392,10 @@ export class UploadComponent implements OnInit {
this.routing.data = this.sbomService.GetSBOMInfo(selected[0]);
}
- private downloadFile(file: string) {
- const fileInfo = this.sbomService.GetSBOMInfo(file);
- const content = this.sbomService.downloadSBOM(file);
-
- if (fileInfo && content) {
- this.downloadService.Download(fileInfo.fileName, content);
- }
+ openSecurityDashboard() {
+ // Navigate to vulnerability dashboard (no SBOM selection required)
+ this.routing.SetPage(PAGES.VULNERABILITIES);
+ this.routing.data = null;
}
diff --git a/src/app/features/vex/vex.component.css b/src/app/features/vex/vex.component.css
index 72726436..9081b038 100644
--- a/src/app/features/vex/vex.component.css
+++ b/src/app/features/vex/vex.component.css
@@ -1,12 +1,635 @@
-.btn-download {
- padding: 5px;
- flex-direction: row;
- float: right;
+/* VEX Settings Panel */
+.vex-settings {
display: flex;
- margin-top: 5px;
- margin-right: 5px;
+ flex-direction: column;
+ gap: var(--space-lg);
+ width: 100%;
+ max-width: 600px;
+ margin: 0 auto;
}
-.buttons {
- gap: 15px;
+.settings-card {
+ padding: var(--space-xl);
+}
+
+.settings-title {
+ font-size: 1.25rem;
+ font-weight: 600;
+ color: var(--theme-text-primary);
+ margin: 0 0 var(--space-lg) 0;
+}
+
+.form-group {
+ margin-bottom: var(--space-lg);
+}
+
+.form-label {
+ display: flex;
+ align-items: center;
+ gap: var(--space-sm);
+ font-weight: 600;
+ font-size: 0.875rem;
+ color: var(--theme-text-primary);
+ margin-bottom: var(--space-sm);
+}
+
+.form-select,
+.form-input {
+ width: 100%;
+ padding: var(--space-sm) var(--space-md);
+ font-size: 0.9375rem;
+ border: 1px solid var(--theme-border);
+ border-radius: var(--radius-md);
+ background-color: var(--theme-surface);
+ color: var(--theme-text-primary);
+ transition: all var(--transition-fast);
+}
+
+.form-select:focus,
+.form-input:focus {
+ outline: none;
+ border-color: var(--brand-primary);
+ box-shadow: 0 0 0 3px var(--brand-primary-light);
+}
+
+.form-select:disabled,
+.form-input:disabled {
+ background-color: var(--theme-bg-tertiary);
+ cursor: not-allowed;
+ opacity: 0.6;
+}
+
+.form-help {
+ display: block;
+ font-size: 0.75rem;
+ color: var(--theme-text-tertiary);
+ margin-top: var(--space-xs);
+}
+
+.form-actions {
+ margin-top: var(--space-xl);
+ display: flex;
+ justify-content: flex-end;
+}
+
+/* VEX Report Panel */
+.vex-report {
+ display: flex;
+ flex-direction: column;
+ gap: var(--space-xl);
+ width: 100%;
+}
+
+/* Report Header Bar */
+.report-header-bar {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: var(--space-xl);
+ background: linear-gradient(135deg, var(--brand-primary), var(--brand-accent));
+ border-radius: var(--radius-lg);
+ color: white;
+ box-shadow: var(--shadow-lg);
+}
+
+.report-header-content {
+ flex: 1;
+}
+
+.report-main-title {
+ font-size: 1.75rem;
+ font-weight: 700;
+ color: white;
+ margin: 0 0 var(--space-md) 0;
+}
+
+.report-meta-row {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--space-lg);
+}
+
+.meta-badge {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--space-xs);
+ font-size: 0.875rem;
+ color: rgba(255, 255, 255, 0.95);
+ font-weight: 500;
+}
+
+.meta-badge svg {
+ opacity: 0.8;
+}
+
+/* Dashboard Summary Cards */
+.dashboard-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ gap: var(--space-lg);
+ margin-bottom: var(--space-md);
+}
+
+.stat-card {
+ padding: var(--space-xl);
+ display: flex;
+ align-items: center;
+ gap: var(--space-lg);
+ transition: all var(--transition-fast);
+}
+
+.stat-card:hover {
+ transform: translateY(-2px);
+ box-shadow: var(--shadow-xl);
+}
+
+.stat-icon {
+ width: 56px;
+ height: 56px;
+ border-radius: var(--radius-lg);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-shrink: 0;
+}
+
+.critical-icon {
+ background: linear-gradient(135deg, var(--severity-critical), var(--severity-high));
+ color: white;
+}
+
+.info-icon {
+ background: linear-gradient(135deg, var(--brand-primary), var(--brand-accent));
+ color: white;
+}
+
+.success-icon {
+ background: linear-gradient(135deg, var(--color-success), #059669);
+ color: white;
+}
+
+.stat-content {
+ display: flex;
+ flex-direction: column;
+ gap: var(--space-xs);
+}
+
+.stat-value {
+ font-size: 1.875rem;
+ font-weight: 700;
+ color: var(--theme-text-primary);
+ line-height: 1;
+}
+
+.stat-label {
+ font-size: 0.875rem;
+ font-weight: 500;
+ color: var(--theme-text-secondary);
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+/* VEX Sections */
+.vex-section {
+ padding: var(--space-xl);
+}
+
+.section-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: var(--space-lg);
+ padding-bottom: var(--space-md);
+ border-bottom: 1px solid var(--theme-divider);
+}
+
+.section-title {
+ font-size: 1.125rem;
+ font-weight: 600;
+ color: var(--theme-text-primary);
+ margin: 0;
+}
+
+.section-content {
+ color: var(--theme-text-primary);
+}
+
+/* Document Information Grid */
+.info-grid {
+ display: grid;
+ gap: var(--space-md);
+}
+
+.info-row {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ gap: var(--space-md);
+}
+
+.info-cell {
+ display: flex;
+ flex-direction: column;
+ gap: var(--space-xs);
+}
+
+.info-label {
+ font-size: 0.75rem;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ color: var(--theme-text-tertiary);
+}
+
+.info-value {
+ font-size: 0.9375rem;
+ color: var(--theme-text-primary);
+ word-break: break-word;
+}
+
+/* Professional Vulnerability Table */
+.vex-table-section {
+ padding: 0;
+ overflow: visible;
+ min-height: 400px;
+}
+
+.table-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: var(--space-xl);
+ border-bottom: 1px solid var(--theme-divider);
+ background-color: var(--theme-bg-tertiary);
+}
+
+.table-title {
+ font-size: 1.25rem;
+ font-weight: 600;
+ color: var(--theme-text-primary);
+ margin: 0;
+}
+
+.table-count {
+ font-size: 0.875rem;
+ font-weight: 600;
+ color: var(--theme-text-secondary);
+}
+
+.vulnerability-table {
+ display: flex;
+ flex-direction: column;
+}
+
+.table-row {
+ display: grid;
+ grid-template-columns: 1.5fr 0.8fr 1fr 3.5fr 0.8fr;
+ gap: var(--space-md);
+ align-items: center;
+ transition: all var(--transition-fast);
+}
+
+.table-header-row {
+ background-color: var(--theme-bg-tertiary);
+ border-bottom: 2px solid var(--theme-border);
+ font-weight: 700;
+ font-size: 0.75rem;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ color: var(--theme-text-secondary);
+}
+
+.table-header-row .table-cell {
+ padding: var(--space-md) var(--space-lg);
+}
+
+.table-data-row {
+ border-bottom: 1px solid var(--theme-border-light);
+ background-color: var(--theme-surface);
+ cursor: pointer;
+}
+
+.table-data-row:hover {
+ background-color: var(--theme-bg-tertiary);
+}
+
+.table-data-row.expanded {
+ background-color: var(--theme-bg-tertiary);
+}
+
+.table-data-row:last-of-type {
+ border-bottom: none;
+}
+
+.table-cell {
+ padding: var(--space-lg);
+ color: var(--theme-text-primary);
+}
+
+.vuln-id-cell {
+ font-weight: 600;
+}
+
+.vuln-id-container {
+ display: flex;
+ align-items: center;
+ gap: var(--space-sm);
+}
+
+.vuln-icon {
+ display: flex;
+ align-items: center;
+ color: var(--severity-critical);
+}
+
+.vuln-id-text {
+ display: flex;
+ flex-direction: column;
+ gap: 2px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.vuln-primary {
+ font-size: 0.9375rem;
+ font-weight: 700;
+ color: var(--theme-text-primary);
+}
+
+.vuln-secondary {
+ font-size: 0.75rem;
+ color: var(--theme-text-tertiary);
+ font-family: var(--font-family-mono);
+}
+
+.status-cell {
+ text-align: left;
+}
+
+.description-cell {
+ font-size: 0.875rem;
+ color: var(--theme-text-secondary);
+ line-height: 1.5;
+ overflow: hidden;
+}
+
+.description-text {
+ line-height: 1.5;
+ overflow-wrap: anywhere;
+ word-break: normal;
+}
+
+.actions-cell {
+ text-align: center;
+}
+
+.actions-header {
+ text-align: center;
+}
+
+.severity-cell {
+ text-align: left;
+}
+
+.action-btn {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ gap: var(--space-xs);
+ padding: var(--space-sm) var(--space-md);
+ background-color: transparent;
+ border: 1px solid var(--theme-border);
+ border-radius: var(--radius-md);
+ color: var(--theme-text-primary);
+ cursor: pointer;
+ font-size: 0.875rem;
+ font-weight: 600;
+ transition: all var(--transition-fast);
+ min-width: 90px;
+ white-space: nowrap;
+}
+
+.action-btn:hover {
+ background-color: var(--brand-primary);
+ border-color: var(--brand-primary);
+ color: white;
+}
+
+.action-btn svg {
+ transition: transform var(--transition-fast);
+ flex-shrink: 0;
+}
+
+.action-btn svg.rotated {
+ transform: rotate(180deg);
+}
+
+/* Expanded Details Row */
+.table-details-row {
+ grid-column: 1 / -1;
+ background-color: var(--theme-bg-primary);
+ border-bottom: 1px solid var(--theme-border);
+ animation: slideDown 0.3s ease-out;
+}
+
+@keyframes slideDown {
+ from {
+ opacity: 0;
+ transform: translateY(-10px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+
+.details-full-width {
+ padding: var(--space-xl) !important;
+}
+
+.details-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ gap: var(--space-xl);
+}
+
+.details-column {
+ display: flex;
+ flex-direction: column;
+ gap: var(--space-md);
+}
+
+.details-heading {
+ font-size: 0.875rem;
+ font-weight: 700;
+ color: var(--theme-text-primary);
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ margin: 0 0 var(--space-sm) 0;
+ padding-bottom: var(--space-sm);
+ border-bottom: 2px solid var(--brand-primary);
+}
+
+.details-item {
+ display: flex;
+ flex-direction: column;
+ gap: var(--space-xs);
+}
+
+.details-label {
+ font-size: 0.75rem;
+ font-weight: 600;
+ color: var(--theme-text-tertiary);
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+.details-text {
+ font-size: 0.875rem;
+ color: var(--theme-text-primary);
+ font-weight: 500;
+}
+
+.details-text-block {
+ font-size: 0.875rem;
+ color: var(--theme-text-secondary);
+ line-height: 1.6;
+ padding: var(--space-md);
+ background-color: var(--theme-surface);
+ border-radius: var(--radius-md);
+ border-left: 3px solid var(--brand-primary);
+ white-space: pre-wrap;
+ word-break: break-word;
+}
+
+.products-list {
+ display: flex;
+ flex-direction: column;
+ gap: var(--space-sm);
+}
+
+.product-item {
+ display: flex;
+ align-items: center;
+ gap: var(--space-sm);
+ padding: var(--space-sm) var(--space-md);
+ background-color: var(--theme-surface);
+ border-radius: var(--radius-md);
+ font-size: 0.875rem;
+ color: var(--theme-text-primary);
+ border: 1px solid var(--theme-border);
+}
+
+.product-item svg {
+ color: var(--brand-primary);
+ flex-shrink: 0;
+}
+
+/* Error Section */
+.error-section {
+ border-left: 4px solid var(--color-error);
+}
+
+.error-content {
+ padding: var(--space-md);
+ background-color: var(--color-error-bg);
+ border-radius: var(--radius-md);
+ color: var(--color-error);
+ font-family: var(--font-family-mono);
+ font-size: 0.875rem;
+ line-height: 1.6;
+}
+
+/* Empty States */
+.empty-state-container {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-height: 400px;
+ width: 100%;
+}
+
+.empty-state {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: var(--space-md);
+ text-align: center;
+ max-width: 400px;
+ padding: var(--space-2xl);
+}
+
+.empty-state svg {
+ color: var(--theme-text-tertiary);
+ opacity: 0.5;
+}
+
+.empty-state h3 {
+ font-size: 1.25rem;
+ font-weight: 600;
+ color: var(--theme-text-primary);
+ margin: 0;
+}
+
+.empty-state p {
+ font-size: 0.9375rem;
+ color: var(--theme-text-secondary);
+ margin: 0;
+ line-height: 1.6;
+}
+
+/* Loading State */
+.loading-container {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ gap: var(--space-lg);
+ min-height: 400px;
+ width: 100%;
+ padding: var(--space-2xl);
+}
+
+.loading-text {
+ font-size: 1.125rem;
+ font-weight: 600;
+ color: var(--theme-text-primary);
+ text-align: center;
+ margin-top: var(--space-md);
+}
+
+.loading-subtext {
+ font-size: 0.875rem;
+ color: var(--theme-text-secondary);
+ text-align: center;
+}
+
+.progress-bar-container {
+ width: 300px;
+ height: 6px;
+ background-color: var(--theme-bg-tertiary);
+ border-radius: var(--radius-full);
+ overflow: hidden;
+}
+
+.progress-bar {
+ height: 100%;
+ background: linear-gradient(90deg, var(--brand-primary), var(--brand-accent));
+ border-radius: var(--radius-full);
+ width: 100%;
+}
+
+.progress-bar.pulse {
+ animation: pulse 1.5s ease-in-out infinite;
+}
+
+@keyframes pulse {
+ 0%, 100% {
+ opacity: 0.6;
+ transform: translateX(-100%);
+ }
+ 50% {
+ opacity: 1;
+ transform: translateX(100%);
+ }
}
diff --git a/src/app/features/vex/vex.component.html b/src/app/features/vex/vex.component.html
index 6becf40a..e88bf095 100644
--- a/src/app/features/vex/vex.component.html
+++ b/src/app/features/vex/vex.component.html
@@ -1,66 +1,275 @@
-
-
-
-
Database:
-
+
+
+
+
+
Vulnerability Database Configuration
+
+
+
+
+ Select the vulnerability database to scan against
+
+
+
+
+
+ Choose the VEX document output format
+
+
+
+
+
+ API key required for {{vexOptions.selectedDatabase}}
+
+
+
-
-
Format:
-
+
+
+
+
+
+
+
-
-
API Key:
-
+
+
+
+
+
+
+
+
+
{{getStatementsCount()}}
+
Total Findings
+
+
+
+
+
+
+
{{vexOptions.selectedDatabase}}
+
Vulnerability DB
+
+
+
+
+
+
+
{{vexOptions.selectedFormat}}
+
Report Format
+
+
-
-
-
-
-
-
+
+
0">
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
{{castAsAny(item).vulnerability?.statementID || castAsAny(item).statementID || 'N/A'}}
+
{{castAsAny(item).statementID}}
-
+
+
+
+
+
+ {{getSeverity(castAsAny(item))}}
+
+
+
+
+
+ {{getStatusText(castAsAny(item).status)}}
+
+
+
+
+ {{castAsAny(item).vulnerability?.description || 'No description available'}}
-
+
+
+
+
+
+
+
+
+
+
+
+
Status Information
+
+ Vulnerability Status:
+ {{castAsAny(item).status.vulnStatus}}
+
+
+ Justification:
+ {{castAsAny(item).status.justification}}
+
+
+ First Issued:
+ {{castAsAny(item).statementFirstIssued}}
+
+
+ Last Updated:
+ {{castAsAny(item).statementLastUpdated}}
+
+
+
+
+
Impact & Actions
+
+
Impact Statement:
+
{{castAsAny(item).status.impactStatement}}
+
+
+
Action Statement:
+
{{castAsAny(item).status.actionStatement}}
+
+
+
+
0">
+
Affected Products
+
+
+
+ {{formatProductName(product)}}
+
+
+
+
+
+
+
+
+
+
+
No VEX statements found
+
+
-
- None
-
+
+
+
-
-
-
-
- Press 'Generate Data' in settings to view data
+
+
+
+
+
No VEX Report Generated
+
Configure settings and click "Generate VEX Report" to begin vulnerability analysis
+
-
-
+
+
+
Generating VEX Report...
+
+
Analyzing vulnerabilities and creating report
diff --git a/src/app/features/vex/vex.component.ts b/src/app/features/vex/vex.component.ts
index 79fb8e51..8482c017 100644
--- a/src/app/features/vex/vex.component.ts
+++ b/src/app/features/vex/vex.component.ts
@@ -1,9 +1,9 @@
-import {Component} from '@angular/core';
-import {VexResponse} from 'src/app/shared/models/vex';
-import {SVIPService} from 'src/app/shared/services/SVIP.service';
-import {DownloadService} from 'src/app/shared/services/download.service';
-import {RoutingService} from 'src/app/shared/services/routing.service';
-import {SbomService} from 'src/app/shared/services/sbom.service';
+import { Component, ElementRef, ViewChild } from '@angular/core';
+import { VexResponse } from 'src/app/shared/models/vex';
+import { SVIPService } from 'src/app/shared/services/SVIP.service';
+import { DownloadService } from 'src/app/shared/services/download.service';
+import { RoutingService } from 'src/app/shared/services/routing.service';
+import { SbomService } from 'src/app/shared/services/sbom.service';
@Component({
selector: 'app-vex',
@@ -14,6 +14,17 @@ import {SbomService} from 'src/app/shared/services/sbom.service';
export class VexComponent {
protected vex: VexResponse | undefined;
protected loading: boolean = false;
+ protected selectedTab: string = 'SETTINGS';
+ protected expandedStatements: Set
= new Set();
+ protected generatedTime: string = '';
+ @ViewChild('findingsSection') findingsSection!: ElementRef;
+
+ constructor(
+ private client: SVIPService,
+ private routing: RoutingService,
+ private sbomService: SbomService,
+ private downloadService: DownloadService
+ ) {}
protected vexOptions = {
databases: ['OSV', 'NVD'],
formats: ['CycloneDX', 'CSAF'],
@@ -22,70 +33,205 @@ export class VexComponent {
selectedFormat: '',
apiKey: '',
}
- protected vexObjectList = ['status', 'products', 'vulnerability'];
- constructor(
- private client: SVIPService,
- private routing: RoutingService,
- private sbomService: SbomService,
- private downloadService: DownloadService
- ) {
+ protected vexObjectList = ['status', 'products', 'vulnerability', 'vexstatements'];
+
+ protected castAsAny(value: unknown): any {
+ return value as any;
+ }
+
+ protected formatValue(input: any): string {
+ if (Array.isArray(input)) {
+ const formattedString = input.map(obj =>
+ Object.entries(obj)
+ .map(([key, value]) => (value ? `${key}: ${value}` : ''))
+ .filter(str => str !== '')
+ .join('
')
+ ).join('
');
+ return formattedString;
+ } else if (typeof input === 'object' && input !== null) {
+ const formattedString = Object.entries(input)
+ .map(([key, value]) => (value ? `${key}: ${value}` : ''))
+ .filter(str => str !== '')
+ .join('
');
+ return formattedString;
+ } else {
+ return input.toString();
+ }
+ }
+
+ protected removeStatements(value: any) {
+ const copy = { ...value };
+ delete copy.vexstatements;
+ return [copy];
}
GenerateData() {
this.vex = undefined;
this.loading = true;
+ this.selectedTab = 'REPORT';
+ this.expandedStatements.clear();
- if (this.vexOptions.selectedDatabase === '' || this.vexOptions.selectedFormat === '')
+ if(this.vexOptions.selectedDatabase === '' || this.vexOptions.selectedFormat === '')
return;
- if (this.vexOptions.requiresAPIKey.includes(this.vexOptions.selectedDatabase) && this.vexOptions.apiKey === '')
+ if(this.vexOptions.requiresAPIKey.includes(this.vexOptions.selectedDatabase) && this.vexOptions.apiKey === '')
return;
this.client.getVex(this.routing.data.id, this.vexOptions.selectedFormat, this.vexOptions.selectedDatabase).subscribe((result) => {
- if (result) {
+ if(result) {
this.vex = result;
+ this.generatedTime = new Date().toLocaleString();
+ console.log('VEX Data:', result);
+ console.log('VEX Statements:', result.vex?.vexstatements);
+ console.log('Is Array?', Array.isArray(result.vex?.vexstatements));
+ console.log('Statements Count:', this.getStatementsCount());
}
this.loading = false;
+ // After rendering, scroll to findings
+ setTimeout(() => this.scrollToFindings(), 50);
})
}
+
downloadVex() {
const fileName = 'vex.json';
const vexData = this.vex;
const vexJson = JSON.stringify(vexData, null, 2);
- this.downloadService.Download(fileName, new Blob([vexJson], {type: 'application/json'}));
+ this.downloadService.Download(fileName, new Blob([vexJson], { type: 'application/json' }));
}
- protected castAsAny(value: unknown): any {
- return value as any;
+ getCurrentTime(): string {
+ return this.generatedTime;
}
- protected formatValue(input: any): string {
- if (Array.isArray(input)) {
- const formattedString = input.map(obj =>
- Object.entries(obj)
- .map(([key, value]) => (value ? `${key}: ${value}` : ''))
- .filter(str => str !== '')
- .join('
')
- ).join('
');
- return formattedString;
- } else if (typeof input === 'object' && input !== null) {
- const formattedString = Object.entries(input)
- .map(([key, value]) => (value ? `${key}: ${value}` : ''))
- .filter(str => str !== '')
- .join('
');
- return formattedString;
+ getStatementsCount(): number {
+ if (!this.vex?.vex?.vexstatements) return 0;
+ if (Array.isArray(this.vex.vex.vexstatements)) {
+ return this.vex.vex.vexstatements.length;
+ }
+ return Object.keys(this.vex.vex.vexstatements).length;
+ }
+
+ getStatusBadgeClass(status: any): string {
+ if (!status) return 'badge-info';
+
+ // Handle if status is an object with vulnStatus property
+ let statusStr = '';
+ if (typeof status === 'object' && status.vulnStatus) {
+ statusStr = status.vulnStatus;
+ } else if (typeof status === 'string') {
+ statusStr = status;
} else {
- return input.toString();
+ return 'badge-info';
+ }
+
+ const statusLower = statusStr.toLowerCase();
+ if (statusLower.includes('affected') || statusLower.includes('vulnerable')) {
+ return 'badge-critical';
+ }
+ if (statusLower.includes('fixed') || statusLower.includes('not_affected')) {
+ return 'badge-success';
+ }
+ if (statusLower.includes('under_investigation')) {
+ return 'badge-warning';
}
+ return 'badge-info';
}
- protected removeStatements(value: any) {
- const copy = {...value};
- delete copy.vexstatements;
- return [copy];
+ getStatusText(status: any): string {
+ if (!status) return 'Unknown';
+ if (typeof status === 'object' && status.vulnStatus) {
+ return status.vulnStatus;
+ }
+ return String(status);
+ }
+
+ asString(value: any): string {
+ return String(value);
+ }
+
+ toggleStatement(index: number): void {
+ if (this.expandedStatements.has(index)) {
+ this.expandedStatements.delete(index);
+ } else {
+ this.expandedStatements.add(index);
+ console.log('Expanded statement', index, ':', this.vex?.vex?.vexstatements);
+ }
+ }
+
+ isStatementExpanded(index: number): boolean {
+ return this.expandedStatements.has(index);
+ }
+
+ scrollToFindings(): void {
+ // Smooth scroll to the findings/table section
+ try {
+ this.findingsSection?.nativeElement?.scrollIntoView({ behavior: 'smooth', block: 'start' });
+ } catch {}
+ }
+
+ getSeverity(item: any): string {
+ // Try to extract severity from vulnerability data
+ const vuln = item.vulnerability;
+ if (vuln?.severity) return vuln.severity;
+ if (vuln?.cvssScore) {
+ const score = parseFloat(vuln.cvssScore);
+ if (score >= 9.0) return 'Critical';
+ if (score >= 7.0) return 'High';
+ if (score >= 4.0) return 'Medium';
+ return 'Low';
+ }
+ // Default to Critical for affected vulnerabilities
+ return 'Critical';
+ }
+
+ getSeverityBadgeClass(item: any): string {
+ const severity = this.getSeverity(item).toLowerCase();
+ if (severity.includes('critical')) return 'badge-critical';
+ if (severity.includes('high')) return 'badge-high';
+ if (severity.includes('medium')) return 'badge-medium';
+ if (severity.includes('low')) return 'badge-low';
+ return 'badge-critical';
+ }
+
+ formatProductName(product: any): string {
+ if (!product) return 'Unknown';
+ if (typeof product === 'string') return product;
+ if (typeof product === 'object') {
+ // Parse CycloneDX product object structure
+ const parts = [];
+
+ if (product.productID) {
+ parts.push(product.productID);
+ }
+
+ if (product.supplier) {
+ parts.push(`(${product.supplier})`);
+ }
+
+ // If we have parts, join them
+ if (parts.length > 0) {
+ return parts.join(' ');
+ }
+
+ // Try other common properties
+ if (product.name && product.version) {
+ return `${product.name} v${product.version}`;
+ }
+ if (product.name) return product.name;
+ if (product.id) return product.id;
+
+ // Last resort: show key properties
+ const keys = Object.keys(product);
+ if (keys.length > 0) {
+ return keys.map(k => `${k}: ${product[k]}`).join(', ');
+ }
+
+ return 'Unknown Product';
+ }
+ return String(product);
}
}
diff --git a/src/app/features/view/view.component.css b/src/app/features/view/view.component.css
index 5d5f5198..7fb72488 100644
--- a/src/app/features/view/view.component.css
+++ b/src/app/features/view/view.component.css
@@ -1,4 +1,41 @@
+/* View Component Styles */
+
pre {
white-space: pre-wrap;
word-break: break-all;
+ background-color: var(--theme-bg-tertiary);
+ color: var(--theme-text-primary);
+ padding: var(--space-lg);
+ border-radius: var(--radius-md);
+ border: 1px solid var(--theme-border);
+ font-family: var(--font-family-mono);
+ font-size: 0.875rem;
+ line-height: 1.6;
+ overflow-x: auto;
+ margin: 0;
}
+
+pre::-webkit-scrollbar {
+ height: 8px;
+}
+
+pre::-webkit-scrollbar-track {
+ background: var(--theme-bg-tertiary);
+ border-radius: var(--radius-md);
+}
+
+pre::-webkit-scrollbar-thumb {
+ background: var(--theme-border);
+ border-radius: var(--radius-md);
+}
+
+.component-container {
+ display: flex;
+ flex-direction: column;
+ gap: var(--space-sm);
+}
+
+.content {
+ max-height: 600px;
+ overflow-y: auto;
+}
\ No newline at end of file
diff --git a/src/app/features/vulnerabilities/vulnerabilities.component.css b/src/app/features/vulnerabilities/vulnerabilities.component.css
new file mode 100644
index 00000000..c7225287
--- /dev/null
+++ b/src/app/features/vulnerabilities/vulnerabilities.component.css
@@ -0,0 +1,408 @@
+/* Vulnerability Dashboard Styles */
+/* @author Ibrahim Matar */
+
+.vulnerability-dashboard {
+ padding: 20px;
+ max-width: 1400px;
+ margin: 0 auto;
+}
+
+/* Header */
+.dashboard-header {
+ margin-bottom: 30px;
+}
+
+.dashboard-header h1 {
+ font-size: 2em;
+ color: #333;
+ margin-bottom: 5px;
+}
+
+.dashboard-header p {
+ color: #666;
+ font-size: 1.1em;
+}
+
+/* Global Controls */
+.dashboard-controls {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 20px;
+ align-items: flex-end;
+ margin-bottom: 25px;
+}
+
+.dashboard-controls .control-group {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+}
+
+.dashboard-controls .control-group label {
+ font-weight: 600;
+ color: #4b5563;
+}
+
+.dashboard-controls .control-group select {
+ padding: 10px 14px;
+ border: 1px solid #d1d5db;
+ border-radius: 8px;
+ font-size: 0.95em;
+ cursor: pointer;
+ min-width: 200px;
+}
+
+.clear-btn {
+ padding: 10px 18px;
+ border: none;
+ border-radius: 8px;
+ background: #f3f4f6;
+ color: #374151;
+ font-weight: 600;
+ cursor: pointer;
+ transition: background 0.2s;
+}
+
+.clear-btn:disabled {
+ cursor: not-allowed;
+ opacity: 0.6;
+}
+
+.clear-btn:not(:disabled):hover {
+ background: #e5e7eb;
+}
+
+/* Stats Cards */
+.stats-cards {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ gap: 20px;
+ margin-bottom: 40px;
+}
+
+.stat-card {
+ display: flex;
+ align-items: center;
+ padding: 25px;
+ border-radius: 12px;
+ box-shadow: 0 2px 8px rgba(0,0,0,0.1);
+ transition: all 0.3s ease;
+}
+
+.stat-card.clickable {
+ cursor: pointer;
+}
+
+.stat-card.clickable:not(.disabled):hover {
+ transform: translateY(-4px) scale(1.02);
+ box-shadow: 0 6px 16px rgba(0,0,0,0.2);
+}
+
+.stat-card.clickable:not(.disabled):active {
+ transform: translateY(-2px) scale(1.01);
+}
+
+.stat-card.disabled {
+ opacity: 0.6;
+ cursor: not-allowed;
+}
+
+.stat-card.total {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ color: white;
+}
+
+.stat-card.critical {
+ background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
+ color: white;
+}
+
+.stat-card.high {
+ background: linear-gradient(135deg, #fa709a 0%, #fee140 100%);
+ color: white;
+}
+
+.stat-card.medium {
+ background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
+ color: white;
+}
+
+.stat-card.low {
+ background: linear-gradient(135deg, #a8a8a8 0%, #7f7fd5 100%);
+ color: white;
+}
+
+.stats-placeholder {
+ padding: 30px;
+ border-radius: 12px;
+ background: #f9fafb;
+ text-align: center;
+ color: #4b5563;
+ border: 1px dashed #cbd5f5;
+ margin-bottom: 40px;
+}
+
+.stat-content h3 {
+ font-size: 2.5em;
+ margin: 0;
+ font-weight: bold;
+}
+
+.stat-content p {
+ margin: 5px 0 0 0;
+ opacity: 0.9;
+ font-size: 0.95em;
+}
+
+/* Alerts Section */
+.alerts-section {
+ margin-bottom: 40px;
+}
+
+.alerts-section h2 {
+ font-size: 1.5em;
+ margin-bottom: 20px;
+ color: #333;
+}
+
+.no-alerts {
+ padding: 40px;
+ text-align: center;
+ background: #f0f9ff;
+ border-radius: 8px;
+ border: 2px dashed #3b82f6;
+}
+
+.no-alerts p {
+ font-size: 1.1em;
+ color: #3b82f6;
+ margin: 0;
+}
+
+.alert-card {
+ background: white;
+ border-left: 5px solid #ef4444;
+ border-radius: 8px;
+ padding: 20px;
+ margin-bottom: 15px;
+ box-shadow: 0 2px 6px rgba(0,0,0,0.1);
+ transition: box-shadow 0.2s;
+}
+
+.alert-card:hover {
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
+}
+
+.alert-card.severity-critical {
+ border-left-color: #dc2626;
+}
+
+.alert-card.severity-high {
+ border-left-color: #f59e0b;
+}
+
+.alert-card.severity-medium {
+ border-left-color: #3b82f6;
+}
+
+.alert-card.severity-low {
+ border-left-color: #6b7280;
+}
+
+.alert-header {
+ display: flex;
+ align-items: center;
+ margin-bottom: 15px;
+}
+
+.alert-info {
+ flex: 1;
+}
+
+.alert-info h3 {
+ margin: 0 0 5px 0;
+ font-size: 1.2em;
+ color: #1f2937;
+}
+
+.alert-sbom-name {
+ margin: 0;
+ color: #6b7280;
+ font-size: 0.9em;
+ font-family: 'Courier New', monospace;
+}
+
+.alert-badge {
+ padding: 6px 12px;
+ border-radius: 20px;
+ font-size: 0.85em;
+ font-weight: bold;
+ background: #dc2626;
+ color: white;
+}
+
+.alert-body {
+ margin-bottom: 15px;
+}
+
+.alert-message {
+ color: #374151;
+ margin: 0 0 10px 0;
+}
+
+.alert-meta {
+ display: flex;
+ gap: 20px;
+ font-size: 0.9em;
+ color: #6b7280;
+}
+
+.alert-actions {
+ display: flex;
+ gap: 10px;
+}
+
+.btn-view, .btn-acknowledge {
+ padding: 8px 16px;
+ border: none;
+ border-radius: 6px;
+ cursor: pointer;
+ font-size: 0.9em;
+ transition: all 0.2s;
+}
+
+.btn-view {
+ background: #3b82f6;
+ color: white;
+}
+
+.btn-view:hover {
+ background: #2563eb;
+}
+
+.btn-acknowledge {
+ background: #10b981;
+ color: white;
+}
+
+.btn-acknowledge:hover {
+ background: #059669;
+}
+
+/* Trend Section */
+.trend-section {
+ background: white;
+ padding: 30px;
+ border-radius: 12px;
+ box-shadow: 0 2px 8px rgba(0,0,0,0.1);
+}
+
+.trend-section h2 {
+ font-size: 1.5em;
+ margin-bottom: 20px;
+ color: #333;
+}
+
+.no-data {
+ padding: 40px;
+ text-align: center;
+ color: #9ca3af;
+}
+
+/* Trend Table */
+.trend-table {
+ width: 100%;
+ border-collapse: collapse;
+ font-size: 0.95em;
+}
+
+.trend-table thead {
+ background: #f3f4f6;
+}
+
+.trend-table th {
+ padding: 12px;
+ text-align: left;
+ font-weight: 600;
+ color: #374151;
+ border-bottom: 2px solid #e5e7eb;
+}
+
+.trend-table td {
+ padding: 12px;
+ border-bottom: 1px solid #f3f4f6;
+ color: #1f2937;
+}
+
+.trend-table tbody tr:hover {
+ background: #f9fafb;
+}
+
+.total-col {
+ font-weight: bold;
+ color: #6366f1;
+}
+
+.critical-col {
+ color: #dc2626;
+ font-weight: 600;
+}
+
+.high-col {
+ color: #f59e0b;
+ font-weight: 600;
+}
+
+.medium-col {
+ color: #3b82f6;
+}
+
+.low-col {
+ color: #6b7280;
+}
+
+.trend-indicator {
+ display: inline-block;
+ padding: 4px 8px;
+ border-radius: 4px;
+ font-size: 0.9em;
+}
+
+.trend-down {
+ color: #10b981;
+ background: #d1fae5;
+}
+
+.trend-up {
+ color: #ef4444;
+ background: #fee2e2;
+}
+
+.trend-same {
+ color: #6b7280;
+}
+
+/* Responsive Design */
+@media (max-width: 768px) {
+ .stats-cards {
+ grid-template-columns: 1fr;
+ }
+
+ .dashboard-controls {
+ flex-direction: column;
+ align-items: stretch;
+ }
+
+ .trend-table {
+ font-size: 0.85em;
+ }
+
+ .alert-header {
+ flex-wrap: wrap;
+ }
+
+ .alert-actions {
+ flex-direction: column;
+ }
+}
+
diff --git a/src/app/features/vulnerabilities/vulnerabilities.component.html b/src/app/features/vulnerabilities/vulnerabilities.component.html
new file mode 100644
index 00000000..72362980
--- /dev/null
+++ b/src/app/features/vulnerabilities/vulnerabilities.component.html
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{stats.total}}
+
Total Vulnerabilities
+
+
+
+
+
+
{{stats.critical}}
+
Critical Vulnerabilities
+
+
+
+
+
+
{{stats.high}}
+
High Severity
+
+
+
+
+
+
{{stats.medium}}
+
Medium Severity
+
+
+
+
+
+
{{stats.low}}
+
Low Severity
+
+
+
+
+
+
+
Select a project to view vulnerability metrics.
+
+
+
+
+
+
Active Security Alerts
+
+
+
No unacknowledged alerts. Your project is looking good!
+
+
+
+
+
+
+
{{formatAlertMessage(alert)}}
+
+ {{alert.vulnCount}} vulnerabilities
+ {{alert.createdAt | date:'short'}}
+
+
+
+
+
+
+
+
+
+
+
+ Timestamp unavailable
+
+
+
+
+
Vulnerability Trends
+
+
+
No historical data available for this project.
+
+
+
0" class="trend-chart">
+
+
+
+
+ | Scan Date |
+ Total |
+ Critical |
+ High |
+ Medium |
+ Low |
+ Trend |
+
+
+
+
+ | {{record.scanDate | date:'short'}} |
+ {{record.totalVulnerabilities}} |
+ {{record.criticalCount}} |
+ {{record.highCount}} |
+ {{record.mediumCount}} |
+ {{record.lowCount}} |
+
+
+
+ -{{trendData[i+1].totalVulnerabilities - record.totalVulnerabilities}}
+
+ trendData[i+1].totalVulnerabilities" class="trend-up">
+ +{{record.totalVulnerabilities - trendData[i+1].totalVulnerabilities}}
+
+
+ --
+
+
+ |
+
+
+
+
+
+
+
+
diff --git a/src/app/features/vulnerabilities/vulnerabilities.component.ts b/src/app/features/vulnerabilities/vulnerabilities.component.ts
new file mode 100644
index 00000000..3c954a2e
--- /dev/null
+++ b/src/app/features/vulnerabilities/vulnerabilities.component.ts
@@ -0,0 +1,269 @@
+/**
+ * Vulnerability Dashboard Component
+ * @author Ibrahim Matar
+ */
+
+import { Component, OnInit, OnDestroy } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { FormsModule } from '@angular/forms';
+import { RouterModule } from '@angular/router';
+import { HttpClient } from '@angular/common/http';
+import { Subscription, interval } from 'rxjs';
+import { RoutingService, PAGES } from '../../shared/services/routing.service';
+
+interface VulnerabilityAlert {
+ id: number;
+ sbomId: number;
+ projectName: string;
+ sbomName: string;
+ severity: string;
+ vulnCount: number;
+ message: string;
+ acknowledged: boolean;
+ createdAt: string | null;
+}
+
+interface ProjectSummary {
+ total: number;
+ critical: number;
+ high: number;
+ medium: number;
+ low: number;
+}
+
+interface VulnerabilityHistory {
+ id: number;
+ projectName: string;
+ scanDate: string;
+ totalVulnerabilities: number;
+ criticalCount: number;
+ highCount: number;
+ mediumCount: number;
+ lowCount: number;
+}
+
+@Component({
+ selector: 'app-vulnerabilities',
+ standalone: true,
+ imports: [CommonModule, FormsModule, RouterModule],
+ templateUrl: './vulnerabilities.component.html',
+ styleUrls: ['./vulnerabilities.component.css']
+})
+export class VulnerabilitiesComponent implements OnInit, OnDestroy {
+
+ alerts: VulnerabilityAlert[] = [];
+ stats: ProjectSummary = { total: 0, critical: 0, high: 0, medium: 0, low: 0 };
+ projects: string[] = [];
+ selectedProject: string = '';
+ trendData: VulnerabilityHistory[] = [];
+ trendDays: number = 30;
+ private allAlerts: VulnerabilityAlert[] = [];
+ private refreshSubscription?: Subscription;
+
+ private readonly API_BASE = 'http://localhost:8080/svip/vulnerabilities';
+
+ constructor(
+ private http: HttpClient,
+ private routing: RoutingService
+ ) {}
+
+ ngOnInit(): void {
+ // Restore selected project from routing data if available
+ const data = this.routing.data;
+ if (data && data.selectedProject) {
+ this.selectedProject = data.selectedProject;
+ console.log('Restored selected project:', this.selectedProject);
+ }
+
+ this.loadAlerts();
+ this.loadProjects();
+
+ // Load trend for restored project
+ if (this.selectedProject) {
+ this.loadTrend();
+ }
+
+ this.refreshSubscription = interval(60000)
+ .subscribe(() => {
+ this.loadAlerts(false);
+ // keep project list synchronized with backend
+ this.loadProjects();
+ if (this.selectedProject) {
+ this.loadTrend();
+ }
+ });
+ }
+
+ ngOnDestroy(): void {
+ if (this.refreshSubscription) {
+ this.refreshSubscription.unsubscribe();
+ }
+ }
+
+ loadAlerts(resetSelection: boolean = false): void {
+ this.http.get(`${this.API_BASE}/alerts/unacknowledged`)
+ .subscribe({
+ next: (alerts) => {
+ console.log('Loaded alerts:', alerts);
+ this.allAlerts = alerts;
+ if (resetSelection) {
+ this.selectedProject = '';
+ this.trendData = [];
+ this.resetSummary();
+ }
+ this.updateVisibleAlerts();
+ },
+ error: (err) => {
+ console.error('Failed to load alerts:', err);
+ this.alerts = [];
+ this.allAlerts = [];
+ this.resetSummary();
+ }
+ });
+ }
+
+ loadProjects(): void {
+ // cache-bust to avoid any stale responses from electron/webview caches
+ const ts = Date.now();
+ this.http.get(`${this.API_BASE}/history/projects?_=${ts}`)
+ .subscribe(projects => {
+ this.projects = projects;
+ });
+ }
+
+ loadTrend(): void {
+ if (!this.selectedProject) {
+ this.trendData = [];
+ this.resetSummary();
+ return;
+ }
+
+ this.http.get(
+ `${this.API_BASE}/history/${this.selectedProject}?days=${this.trendDays}`
+ ).subscribe({
+ next: (history) => {
+ this.trendData = history;
+ this.updateSummaryFromHistory(history);
+ },
+ error: (err) => {
+ console.error('Failed to load trend data:', err);
+ this.trendData = [];
+ this.resetSummary();
+ }
+ });
+ }
+
+ onProjectChange(project: string): void {
+ this.selectedProject = project;
+ if (!this.selectedProject) {
+ this.trendData = [];
+ this.resetSummary();
+ }
+ this.updateVisibleAlerts();
+ this.loadTrend();
+ }
+
+ onDaysChange(days: number | string): void {
+ this.trendDays = typeof days === 'string' ? parseInt(days, 10) : days;
+ this.loadTrend();
+ }
+
+ acknowledgeAlert(alertId: number): void {
+ console.log('Acknowledging alert:', alertId);
+ this.http.post(`${this.API_BASE}/alerts/${alertId}/acknowledge?acknowledgedBy=user`, {})
+ .subscribe(() => {
+ console.log('Alert acknowledged successfully');
+ this.loadAlerts();
+ if (this.selectedProject) {
+ this.loadTrend();
+ }
+ });
+ }
+
+ viewAlertDetails(alertData: VulnerabilityAlert): void {
+ console.log('Viewing alert details for SBOM ID:', alertData.sbomId);
+ // Navigate to vulnerability details page with severity filter from alert
+ this.routing.SetPage(PAGES.VULNERABILITY_DETAILS);
+ this.routing.data = {
+ sbomId: alertData.sbomId,
+ projectName: alertData.projectName,
+ severityFilter: alertData.severity // Filter by alert's severity
+ };
+ }
+
+ viewBySeverity(severity: string | null): void {
+ if (!this.selectedProject) return;
+
+ console.log('Viewing vulnerabilities by severity:', severity || 'ALL', 'for project:', this.selectedProject);
+ this.routing.SetPage(PAGES.VULNERABILITY_DETAILS);
+ this.routing.data = {
+ projectName: this.selectedProject,
+ severityFilter: severity // null = show all, 'CRITICAL'/'HIGH'/etc = filter
+ };
+ }
+
+ getSeverityClass(severity: string): string {
+ const sev = severity.toUpperCase();
+ switch (sev) {
+ case 'CRITICAL': return 'severity-critical';
+ case 'HIGH': return 'severity-high';
+ case 'MEDIUM': return 'severity-medium';
+ case 'LOW': return 'severity-low';
+ default: return 'severity-high';
+ }
+ }
+
+ getPrettySbomName(sbomName: string | null | undefined, projectName: string): string {
+ if (!sbomName) return '';
+ const base = sbomName.replace(/.*[\\\/]/g, '');
+ // Hide auto-generated names like 1818859295.CDX14
+ if (/^\d+\.(CDX14|SPDX23|JSON|XML|spdx|json|xml)$/i.test(base)) return '';
+ return base;
+ }
+
+ formatAlertMessage(alert: VulnerabilityAlert): string {
+ const count = alert.vulnCount ?? 0;
+ const sev = (alert.severity || '').toUpperCase();
+ const sevText = sev === 'CRITICAL' ? 'critical' : sev === 'HIGH' ? 'high severity' : sev.toLowerCase();
+ const target = alert.projectName || 'this project';
+ const plural = count === 1 ? '' : 's';
+ return `${count} ${sevText} vulnerability${plural} found in ${target}`;
+ }
+
+ private updateVisibleAlerts(): void {
+ if (this.selectedProject) {
+ this.alerts = this.allAlerts.filter(alert => alert.projectName === this.selectedProject);
+ console.log(`Filtered alerts for project "${this.selectedProject}":`, this.alerts);
+ } else {
+ this.alerts = [];
+ }
+ }
+
+ clearProjectSelection(): void {
+ this.selectedProject = '';
+ this.trendData = [];
+ this.resetSummary();
+ this.updateVisibleAlerts();
+ }
+
+ private resetSummary(): void {
+ this.stats = { total: 0, critical: 0, high: 0, medium: 0, low: 0 };
+ }
+
+ private updateSummaryFromHistory(history: VulnerabilityHistory[]): void {
+ if (!history || history.length === 0) {
+ this.resetSummary();
+ return;
+ }
+
+ const latest = history[0];
+ this.stats = {
+ total: latest.totalVulnerabilities,
+ critical: latest.criticalCount,
+ high: latest.highCount,
+ medium: latest.mediumCount,
+ low: latest.lowCount
+ };
+ }
+}
+
diff --git a/src/app/features/vulnerability-details/vulnerability-details.component.css b/src/app/features/vulnerability-details/vulnerability-details.component.css
new file mode 100644
index 00000000..8aaee335
--- /dev/null
+++ b/src/app/features/vulnerability-details/vulnerability-details.component.css
@@ -0,0 +1,425 @@
+/* Vulnerability Details Styles */
+/* @author Ibrahim Matar */
+
+.vulnerability-details-container {
+ padding: 20px;
+ max-width: 1400px;
+ margin: 0 auto;
+}
+
+/* Header */
+.details-header {
+ margin-bottom: 30px;
+}
+
+.back-btn {
+ padding: 8px 16px;
+ margin-bottom: 15px;
+ background: #6366f1;
+ color: white;
+ border: none;
+ border-radius: 6px;
+ cursor: pointer;
+ transition: background 0.2s;
+}
+
+.back-btn:hover {
+ background: #4f46e5;
+}
+
+.details-header h1 {
+ font-size: 2em;
+ margin-bottom: 5px;
+ color: #1f2937;
+}
+
+.details-header p {
+ color: #6b7280;
+ font-size: 1.1em;
+}
+
+/* Summary Stats */
+.summary-stats {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
+ gap: 15px;
+ margin-bottom: 30px;
+}
+
+.stat-item {
+ padding: 20px;
+ border-radius: 8px;
+ text-align: center;
+ color: white;
+}
+
+.stat-item.critical {
+ background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
+}
+
+.stat-item.high {
+ background: linear-gradient(135deg, #fa709a 0%, #fee140 100%);
+}
+
+.stat-item.medium {
+ background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
+}
+
+.stat-item.low {
+ background: linear-gradient(135deg, #a8a8a8 0%, #7f7fd5 100%);
+}
+
+.stat-item h3 {
+ font-size: 2.5em;
+ margin: 0 0 5px 0;
+}
+
+.stat-item p {
+ margin: 0;
+ opacity: 0.9;
+}
+
+/* Controls Bar */
+.controls-bar {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-end;
+ margin-bottom: 25px;
+ padding: 20px;
+ background: white;
+ border-radius: 8px;
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
+}
+
+.filters {
+ display: flex;
+ gap: 20px;
+ flex-wrap: wrap;
+}
+
+.filter-group {
+ display: flex;
+ flex-direction: column;
+ gap: 5px;
+}
+
+.filter-group label {
+ font-weight: 600;
+ color: #374151;
+ font-size: 0.9em;
+}
+
+.filter-group select,
+.filter-group input {
+ padding: 8px 12px;
+ border: 1px solid #d1d5db;
+ border-radius: 6px;
+ font-size: 0.95em;
+}
+
+.filter-group input {
+ min-width: 300px;
+}
+
+.actions {
+ display: flex;
+ align-items: center;
+ gap: 15px;
+}
+
+.export-btn {
+ padding: 10px 18px;
+ background: #10b981;
+ color: white;
+ border: none;
+ border-radius: 6px;
+ cursor: pointer;
+ font-weight: 600;
+ transition: background 0.2s;
+}
+
+.export-btn:hover {
+ background: #059669;
+}
+
+.result-count {
+ color: #6b7280;
+ font-size: 0.9em;
+}
+
+/* Vulnerability Cards */
+.vulnerabilities-list {
+ display: flex;
+ flex-direction: column;
+ gap: 15px;
+}
+
+.vuln-card {
+ background: white;
+ border-radius: 8px;
+ padding: 20px;
+ box-shadow: 0 2px 6px rgba(0,0,0,0.1);
+ border-left: 5px solid #6b7280;
+ transition: box-shadow 0.2s;
+}
+
+.vuln-card:hover {
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
+}
+
+.vuln-card.severity-critical {
+ border-left-color: #dc2626;
+}
+
+.vuln-card.severity-high {
+ border-left-color: #f59e0b;
+}
+
+.vuln-card.severity-medium {
+ border-left-color: #3b82f6;
+}
+
+.vuln-card.severity-low {
+ border-left-color: #6b7280;
+}
+
+/* CVE Header */
+.vuln-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-start;
+ margin-bottom: 15px;
+ padding-bottom: 15px;
+ border-bottom: 1px solid #e5e7eb;
+}
+
+.vuln-id-section {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+}
+
+.cve-id {
+ font-size: 1.3em;
+ margin: 0;
+ color: #1f2937;
+ font-family: 'Courier New', monospace;
+}
+
+.severity-badge {
+ padding: 4px 12px;
+ border-radius: 4px;
+ font-size: 0.8em;
+ font-weight: bold;
+ color: white;
+}
+
+.severity-badge.severity-critical {
+ background: #dc2626;
+}
+
+.severity-badge.severity-high {
+ background: #f59e0b;
+}
+
+.severity-badge.severity-medium {
+ background: #3b82f6;
+}
+
+.severity-badge.severity-low {
+ background: #6b7280;
+}
+
+.cvss-score {
+ padding: 4px 10px;
+ background: #f3f4f6;
+ border-radius: 4px;
+ font-size: 0.9em;
+ font-weight: 600;
+ color: #374151;
+}
+
+.vuln-source a {
+ color: #6366f1;
+ text-decoration: none;
+ font-size: 0.9em;
+}
+
+.vuln-source a:hover {
+ text-decoration: underline;
+}
+
+/* Description */
+.vuln-description {
+ margin-bottom: 15px;
+}
+
+.vuln-description p {
+ color: #374151;
+ line-height: 1.6;
+}
+
+/* Affected Packages */
+.affected-packages {
+ margin-bottom: 15px;
+}
+
+.affected-packages h4 {
+ font-size: 0.95em;
+ color: #6b7280;
+ margin-bottom: 8px;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+.affected-packages ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.affected-packages li {
+ padding: 8px 12px;
+ background: #f9fafb;
+ border-radius: 4px;
+ margin-bottom: 5px;
+ font-family: 'Courier New', monospace;
+ font-size: 0.9em;
+}
+
+/* Suggested Fix */
+.suggested-fix {
+ padding: 15px;
+ background: #ecfdf5;
+ border-left: 4px solid #10b981;
+ border-radius: 6px;
+ margin-bottom: 15px;
+}
+
+.suggested-fix h4 {
+ font-size: 0.95em;
+ color: #059669;
+ margin: 0 0 8px 0;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+.suggested-fix p {
+ margin: 0;
+ color: #065f46;
+ font-weight: 500;
+}
+
+/* Additional Details */
+.additional-details {
+ margin-top: 15px;
+}
+
+.additional-details summary {
+ cursor: pointer;
+ padding: 10px;
+ background: #f9fafb;
+ border-radius: 4px;
+ font-weight: 600;
+ color: #374151;
+ user-select: none;
+}
+
+.additional-details summary:hover {
+ background: #f3f4f6;
+}
+
+.details-grid {
+ padding: 15px;
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ gap: 15px;
+ margin-top: 10px;
+}
+
+.details-grid > div {
+ padding: 12px;
+ background: #f9fafb;
+ border-radius: 4px;
+}
+
+.details-grid span {
+ color: #1f2937;
+ font-weight: 500;
+}
+
+.details-grid strong {
+ display: block;
+ color: #374151;
+ font-size: 0.85em;
+ margin-bottom: 5px;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ font-weight: 600;
+}
+
+.details-grid code {
+ display: block;
+ padding: 8px;
+ background: #1f2937;
+ color: #10b981;
+ border-radius: 4px;
+ font-size: 0.85em;
+ overflow-x: auto;
+}
+
+.details-grid ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.details-grid li {
+ margin-bottom: 5px;
+}
+
+.details-grid a {
+ color: #6366f1;
+ text-decoration: none;
+ word-break: break-all;
+ font-size: 0.9em;
+}
+
+.details-grid a:hover {
+ text-decoration: underline;
+}
+
+/* Loading and Empty States */
+.loading,
+.no-results {
+ padding: 60px;
+ text-align: center;
+ color: #6b7280;
+ font-size: 1.1em;
+}
+
+/* Responsive */
+@media (max-width: 768px) {
+ .controls-bar {
+ flex-direction: column;
+ align-items: stretch;
+ gap: 15px;
+ }
+
+ .filters {
+ flex-direction: column;
+ }
+
+ .filter-group input {
+ min-width: 100%;
+ }
+
+ .summary-stats {
+ grid-template-columns: repeat(2, 1fr);
+ }
+
+ .details-grid {
+ grid-template-columns: 1fr;
+ }
+}
+
diff --git a/src/app/features/vulnerability-details/vulnerability-details.component.html b/src/app/features/vulnerability-details/vulnerability-details.component.html
new file mode 100644
index 00000000..4be018bc
--- /dev/null
+++ b/src/app/features/vulnerability-details/vulnerability-details.component.html
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
+
+
+
+
{{criticalCount}}
+
Critical
+
+
+
+
{{mediumCount}}
+
Medium
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Showing {{filteredVulnerabilities.length}} of {{totalCount}}
+
+
+
+
+
+
Loading vulnerability details...
+
+
+
+
+
+
+
No vulnerabilities match your filters.
+
+
+
+
+
+
+
+
+
+
{{vuln.description || 'No description available'}}
+
+
+
+
+
+
+
+
Suggested Fix:
+
{{getSuggestedFix(vuln)}}
+
+
+
+
+ Additional Information
+
+
+
0">
+ CWE IDs:
+ {{vuln.cwes.join(', ')}}
+
+
+
+ CVSS Vector:
+ {{vuln.ratings[0].vector}}
+
+
+
+ Published:
+ {{vuln.published | date:'medium'}}
+
+
+
+ Last Updated:
+ {{vuln.updated | date:'medium'}}
+
+
+
+
Official Advisories:
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/features/vulnerability-details/vulnerability-details.component.ts b/src/app/features/vulnerability-details/vulnerability-details.component.ts
new file mode 100644
index 00000000..ec174b14
--- /dev/null
+++ b/src/app/features/vulnerability-details/vulnerability-details.component.ts
@@ -0,0 +1,407 @@
+/**
+ * Vulnerability Details Component
+ * Shows detailed CVE information with suggested fixes
+ * @author Ibrahim Matar
+ */
+
+import { Component, OnInit } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { FormsModule } from '@angular/forms';
+import { HttpClient } from '@angular/common/http';
+import { RoutingService } from '../../shared/services/routing.service';
+
+interface VulnerabilityDetail {
+ id: string;
+ source: { name: string; url: string };
+ ratings: Array<{ severity: string; score: number; method: string; vector: string }>;
+ cwes: number[];
+ description: string;
+ recommendation: string;
+ advisories: Array<{ url: string }>;
+ created: string;
+ published: string;
+ updated: string;
+ affects: Array<{
+ ref: string;
+ versions: Array<{ version: string; status: string }>;
+ }>;
+}
+
+interface ComponentInfo {
+ name: string;
+ version: string;
+ purl: string;
+}
+
+// DTO returned by /svip/sboms/content
+interface SbomFileDto {
+ id: number;
+ fileName: string;
+ contents: string; // raw SBOM JSON string
+ schema: string;
+ fileType: string;
+}
+
+@Component({
+ selector: 'app-vulnerability-details',
+ standalone: true,
+ imports: [CommonModule, FormsModule],
+ templateUrl: './vulnerability-details.component.html',
+ styleUrls: ['./vulnerability-details.component.css']
+})
+export class VulnerabilityDetailsComponent implements OnInit {
+
+ vulnerabilities: VulnerabilityDetail[] = [];
+ components: Map = new Map();
+ filteredVulnerabilities: VulnerabilityDetail[] = [];
+
+ // Filters
+ selectedSeverity: string = 'all';
+ searchQuery: string = '';
+
+ // Stats
+ totalCount: number = 0;
+ criticalCount: number = 0;
+ highCount: number = 0;
+ mediumCount: number = 0;
+ lowCount: number = 0;
+
+ sbomId: number = 0;
+ projectName: string = '';
+ loading: boolean = true;
+
+ constructor(
+ private http: HttpClient,
+ private routing: RoutingService
+ ) {}
+
+ ngOnInit(): void {
+ // Get SBOM ID and optional severity filter from routing data
+ const data = this.routing.data;
+ if (data) {
+ this.sbomId = data.sbomId || 0;
+ this.projectName = data.projectName || '';
+
+ // Apply severity filter if specified
+ if (data.severityFilter) {
+ this.selectedSeverity = data.severityFilter.toLowerCase();
+ console.log('Applying severity filter:', this.selectedSeverity);
+ }
+
+ // Load by sbomId if available, otherwise try to load latest for project
+ if (this.sbomId) {
+ this.loadVulnerabilities();
+ } else if (this.projectName) {
+ this.loadLatestSbomForProject();
+ }
+ }
+ }
+
+ loadLatestSbomForProject(): void {
+ this.loading = true;
+ console.log('Loading latest SBOM for project:', this.projectName);
+
+ // Get latest scan history to find SBOM ID
+ this.http.get(`http://localhost:8080/svip/vulnerabilities/history/${this.projectName}?days=1`)
+ .subscribe({
+ next: (history) => {
+ console.log('History response:', history);
+ if (history && history.length > 0) {
+ const latest = history[0];
+ console.log('Latest history entry:', latest);
+ this.sbomId = latest.sbomId;
+ console.log('Found latest SBOM ID:', this.sbomId);
+ if (this.sbomId) {
+ this.loadVulnerabilities();
+ } else {
+ console.error('No sbomId field in history entry');
+ this.loading = false;
+ }
+ } else {
+ console.error('No scan history found for project');
+ this.loading = false;
+ }
+ },
+ error: (err) => {
+ console.error('Failed to load scan history:', err);
+ this.loading = false;
+ }
+ });
+ }
+
+ loadVulnerabilities(): void {
+ this.loading = true;
+ console.log('Loading vulnerabilities for SBOM ID:', this.sbomId);
+
+ this.http.get(`http://localhost:8080/svip/sboms/content?id=${this.sbomId}`)
+ .subscribe({
+ next: (dto: SbomFileDto | null) => {
+ if (!dto || !dto.contents) {
+ console.error('SBOM content is null or empty');
+ this.loading = false;
+ return;
+ }
+
+ console.log('SBOM content received, length:', dto.contents.length);
+
+ try {
+ const sbom = JSON.parse(dto.contents);
+ console.log('Parsed SBOM, has vulnerabilities:', Array.isArray(sbom.vulnerabilities) && sbom.vulnerabilities.length > 0);
+
+ // Prefer name from routing (selected project), then fallback to SBOM metadata or file name
+ this.projectName = (this.routing.data && this.routing.data.projectName)
+ ? this.routing.data.projectName
+ : this.extractProjectName(sbom, dto.fileName);
+ console.log('Project name:', this.projectName);
+
+ this.vulnerabilities = sbom.vulnerabilities || [];
+ console.log('Vulnerabilities found:', this.vulnerabilities.length);
+
+ // Build component map for quick lookups
+ if (sbom.components) {
+ sbom.components.forEach((comp: any) => {
+ if (comp['bom-ref']) {
+ this.components.set(comp['bom-ref'], {
+ name: comp.name || 'Unknown',
+ version: comp.version || 'Unknown',
+ purl: comp.purl || ''
+ });
+ }
+ });
+ }
+ console.log('Components mapped:', this.components.size);
+
+ this.calculateStats();
+ this.applyFilters();
+ this.loading = false;
+
+ console.log('Stats calculated:', {
+ total: this.totalCount,
+ critical: this.criticalCount,
+ high: this.highCount,
+ medium: this.mediumCount,
+ low: this.lowCount
+ });
+ } catch (e) {
+ console.error('Failed to parse SBOM:', e);
+ this.loading = false;
+ }
+ },
+ error: (err) => {
+ console.error('Failed to load SBOM content:', err);
+ this.loading = false;
+ }
+ });
+ }
+
+ calculateStats(): void {
+ this.totalCount = this.vulnerabilities.length;
+ this.criticalCount = this.countBySeverity('CRITICAL');
+ this.highCount = this.countBySeverity('HIGH');
+ this.mediumCount = this.countBySeverity('MEDIUM');
+ this.lowCount = this.countBySeverity('LOW');
+ }
+
+ countBySeverity(severity: string): number {
+ return this.vulnerabilities.filter(v =>
+ v.ratings && v.ratings.length > 0 &&
+ v.ratings[0].severity.toUpperCase() === severity
+ ).length;
+ }
+
+ applyFilters(): void {
+ this.filteredVulnerabilities = this.vulnerabilities.filter(vuln => {
+ // Severity filter
+ if (this.selectedSeverity !== 'all') {
+ const vulnSeverity = vuln.ratings?.[0]?.severity?.toUpperCase();
+ if (vulnSeverity !== this.selectedSeverity.toUpperCase()) {
+ return false;
+ }
+ }
+
+ // Search filter
+ if (this.searchQuery) {
+ const query = this.searchQuery.toLowerCase();
+ const cveId = vuln.id?.toLowerCase() || '';
+ const desc = vuln.description?.toLowerCase() || '';
+ const affectedPackages = this.getAffectedPackages(vuln).join(' ').toLowerCase();
+
+ if (!cveId.includes(query) && !desc.includes(query) && !affectedPackages.includes(query)) {
+ return false;
+ }
+ }
+
+ return true;
+ });
+ }
+
+ onFilterChange(): void {
+ this.applyFilters();
+ }
+
+ getAffectedPackages(vuln: VulnerabilityDetail): string[] {
+ if (!vuln.affects) return [];
+
+ return vuln.affects.map(affect => {
+ const comp = this.components.get(affect.ref);
+ return comp ? `${comp.name}@${comp.version}` : affect.ref;
+ });
+ }
+
+ getSuggestedFix(vuln: VulnerabilityDetail): string {
+ // Try to extract fix version from recommendation or advisory
+ if (vuln.recommendation) {
+ const match = vuln.recommendation.match(/upgrade to (\d+\.\d+\.\d+)/i);
+ if (match) return `Upgrade to ${match[1]}`;
+
+ if (vuln.recommendation.toLowerCase().includes('upgrade')) {
+ return vuln.recommendation;
+ }
+ }
+
+ return 'Review advisory for fix recommendations';
+ }
+
+ getSeverityClass(severity: string | undefined): string {
+ if (!severity) return '';
+ const sev = severity.toUpperCase();
+ switch (sev) {
+ case 'CRITICAL': return 'severity-critical';
+ case 'HIGH': return 'severity-high';
+ case 'MEDIUM': return 'severity-medium';
+ case 'LOW': return 'severity-low';
+ default: return '';
+ }
+ }
+
+ exportToCSV(): void {
+ const headers = ['CVE ID', 'Severity', 'CVSS Score', 'Package', 'Version', 'Description', 'Suggested Fix'];
+ const rows = this.filteredVulnerabilities.map(vuln => {
+ const packages = this.getAffectedPackages(vuln);
+ const severity = vuln.ratings?.[0]?.severity || 'UNKNOWN';
+ const score = vuln.ratings?.[0]?.score || 'N/A';
+
+ return [
+ vuln.id,
+ severity,
+ score,
+ packages.join('; '),
+ '',
+ vuln.description?.replace(/"/g, '""') || '',
+ this.getSuggestedFix(vuln).replace(/"/g, '""')
+ ];
+ });
+
+ const csv = [
+ headers.join(','),
+ ...rows.map(row => row.map(cell => `"${cell}"`).join(','))
+ ].join('\n');
+
+ const blob = new Blob([csv], { type: 'text/csv' });
+ const url = URL.createObjectURL(blob);
+ const link = document.createElement('a');
+ link.href = url;
+ link.download = `${this.projectName}-vulnerabilities.csv`;
+ link.click();
+ URL.revokeObjectURL(url);
+ }
+
+ private isTrustedAdvisorySource(url: string): boolean {
+ try {
+ const u = new URL(url.toLowerCase());
+ const host = u.hostname;
+ // Only allow official CVE/vulnerability databases
+ const trusted = [
+ 'nvd.nist.gov',
+ 'cve.mitre.org',
+ 'osv.dev',
+ 'github.com/advisories', // GitHub Security Advisories
+ 'security.snyk.io', // Snyk advisories
+ ];
+ return trusted.some(domain => host.includes(domain));
+ } catch {
+ return false;
+ }
+ }
+
+ getCanonicalCveLink(vulnId: string): string {
+ // Always provide official NVD link for CVEs
+ if (/^CVE-\d{4}-\d{4,}$/i.test(vulnId)) {
+ return `https://nvd.nist.gov/vuln/detail/${vulnId.toUpperCase()}`;
+ }
+ // For non-CVE IDs (GHSA, etc), search NVD
+ return `https://nvd.nist.gov/vuln/search/results?query=${encodeURIComponent(vulnId)}`;
+ }
+
+ getUniqueAdvisories(vuln: VulnerabilityDetail): Array<{url: string; source: string}> {
+ const links: Array<{url: string; source: string}> = [];
+ const seen = new Set();
+
+ // Always add canonical NVD link first
+ const nvdLink = this.getCanonicalCveLink(vuln.id);
+ links.push({ url: nvdLink, source: 'NIST NVD' });
+ seen.add(nvdLink.toLowerCase());
+
+ // Add OSV link if available
+ const osvLink = `https://osv.dev/vulnerability/${encodeURIComponent(vuln.id)}`;
+ links.push({ url: osvLink, source: 'OSV' });
+ seen.add(osvLink.toLowerCase());
+
+ // Filter and add trusted advisories
+ if (vuln.advisories && vuln.advisories.length > 0) {
+ for (const adv of vuln.advisories) {
+ const rawUrl = (adv as any).url;
+ if (!rawUrl || typeof rawUrl !== 'string') continue;
+
+ // Upgrade to https
+ let cleanUrl = rawUrl.trim().replace(/^http:\/\//i, 'https://');
+
+ // Only include trusted sources
+ if (!this.isTrustedAdvisorySource(cleanUrl)) continue;
+
+ // Deduplicate
+ const normalized = cleanUrl.toLowerCase();
+ if (seen.has(normalized)) continue;
+
+ seen.add(normalized);
+
+ // Extract source name from URL
+ try {
+ const u = new URL(cleanUrl);
+ let sourceName = u.hostname.replace('www.', '');
+ if (sourceName.includes('github.com')) sourceName = 'GitHub Advisory';
+ else if (sourceName.includes('snyk.io')) sourceName = 'Snyk';
+ else sourceName = sourceName.charAt(0).toUpperCase() + sourceName.slice(1);
+
+ links.push({ url: cleanUrl, source: sourceName });
+ } catch {
+ // skip malformed URLs
+ }
+ }
+ }
+
+ return links;
+ }
+
+ private extractProjectName(sbom: any, fileName?: string): string {
+ // Prefer metadata name, else derive from filename
+ const fromMetadata = sbom?.metadata?.component?.name;
+ if (fromMetadata && typeof fromMetadata === 'string') return fromMetadata;
+ if (fileName) {
+ const base = fileName.replace(/.*[\\\/]/g, '');
+ const nameNoExt = base.replace(/\.(json|xml|spdx)$/i, '');
+ if (nameNoExt.includes('-OSI-')) return nameNoExt.split('-OSI-')[0];
+ return nameNoExt.replace(/-\d{8}-\d{6}$/,'');
+ }
+ return 'Unknown Project';
+ }
+
+ goBack(): void {
+ // Navigate back to security dashboard and preserve project selection
+ this.routing.SetPage(5); // PAGES.VULNERABILITIES
+ this.routing.data = {
+ selectedProject: this.projectName // Preserve the selected project
+ };
+ }
+}
+
diff --git a/src/app/shared/components/button/button.component.css b/src/app/shared/components/button/button.component.css
index 4cf753c7..f0f862c8 100644
--- a/src/app/shared/components/button/button.component.css
+++ b/src/app/shared/components/button/button.component.css
@@ -1,17 +1,31 @@
.button {
- padding: 5px;
- gap: 10px;
+ padding: var(--space-sm) var(--space-lg);
+ gap: var(--space-sm);
width: fit-content;
- height: 50px;
- border-radius: 15px;
- background-color: white;
- border: 2px solid rgba(255, 255, 255, 0.752);
- box-shadow: 0px 5px 5px #00000025;
+ min-height: 44px;
+ border-radius: var(--radius-md);
+ background-color: var(--brand-primary);
+ border: 1px solid var(--brand-primary);
+ box-shadow: var(--shadow-sm);
display: flex;
- transition-duration: 0.35s;
+ transition: all var(--transition-fast);
cursor: pointer;
text-align: center;
align-items: center;
- border-color: var(--primary);
- color: var(--primary);
+ justify-content: center;
+ color: var(--theme-text-inverse);
+ font-weight: 600;
+ font-size: 0.9375rem;
+}
+
+.button:hover {
+ background-color: var(--brand-primary-hover);
+ border-color: var(--brand-primary-hover);
+ box-shadow: var(--shadow-md);
+ transform: translateY(-1px);
+}
+
+.button:active {
+ transform: translateY(0);
+ box-shadow: var(--shadow-sm);
}
diff --git a/src/app/shared/components/components.css b/src/app/shared/components/components.css
index 096a6127..3001983b 100644
--- a/src/app/shared/components/components.css
+++ b/src/app/shared/components/components.css
@@ -1,53 +1,73 @@
+/* Shared Component Styles */
.button {
- padding: 0px 15px;
- background-color: var(--secondary);
- gap: 10px;
+ padding: var(--space-sm) var(--space-lg);
+ background-color: var(--brand-primary);
+ gap: var(--space-sm);
width: fit-content;
- height: 50px;
- border-radius: 12px;
- color: white;
- transition-duration: 0.35s;
+ min-height: 44px;
+ border-radius: var(--radius-md);
+ color: var(--theme-text-inverse);
+ transition: all var(--transition-fast);
cursor: pointer;
+ font-weight: 600;
+}
+
+.button:hover {
+ background-color: var(--brand-primary-hover);
+ transform: translateY(-1px);
+ box-shadow: var(--shadow-md);
}
.color-bar {
height: 100%;
- width: 5px;
+ width: 4px;
position: absolute;
right: 0;
top: 0;
+ border-radius: 0 var(--radius-md) var(--radius-md) 0;
}
.dropdown {
- background: var(--secondary);
- color: white;
+ background: var(--theme-surface);
+ color: var(--theme-text-primary);
+ border: 1px solid var(--theme-border);
width: 100%;
margin: auto;
- height: 50px;
+ min-height: 44px;
align-items: center;
cursor: pointer;
+ border-radius: var(--radius-md);
+ transition: all var(--transition-fast);
+}
+
+.dropdown:hover {
+ border-color: var(--brand-primary);
+ background-color: var(--theme-bg-tertiary);
}
.dropdown > .selected {
- margin-left: 25px;
+ margin-left: var(--space-lg);
}
.dropdown > .mat-expansion-indicator {
margin-left: auto;
- margin-right: 25px;
+ margin-right: var(--space-lg);
width: 100%;
height: 100%;
}
-
+/* Accordion Styles */
.accordion-bar {
- background-color: var(--primary);
- color: white;
+ background-color: var(--theme-surface-elevated);
+ color: var(--theme-text-primary);
+ border: 1px solid var(--theme-border);
+ border-radius: var(--radius-md);
}
.accordion-title:hover {
cursor: pointer;
+ background-color: var(--theme-bg-tertiary);
}
.ngb-accordion {
@@ -56,7 +76,10 @@
}
.ngb-accordion-item {
- margin-bottom: 10px;
+ margin-bottom: var(--space-md);
+ border: 1px solid var(--theme-border) !important;
+ border-radius: var(--radius-md) !important;
+ overflow: hidden;
}
.accordion-header {
@@ -66,53 +89,62 @@
cursor: pointer;
width: 100%;
height: 100%;
- padding: 10px;
+ padding: var(--space-md) var(--space-lg);
+ background-color: var(--theme-surface-elevated);
+ color: var(--theme-text-primary);
+ font-weight: 600;
+ transition: all var(--transition-fast);
}
+.accordion-header:hover {
+ background-color: var(--theme-bg-tertiary);
+}
.ngb-accordion-toggle {
flex: 1;
border: none;
background: none;
- color: white;
+ color: var(--theme-text-primary);
+ text-align: left;
+ font-weight: 600;
}
.ngb-accordion-desc {
display: flex;
flex-direction: column;
- color: white;
-}
-
-.color-bar {
- height: 100%;
- width: 5px;
- position: absolute;
- right: 0;
- top: 0;
+ color: var(--theme-text-secondary);
+ font-size: 0.875rem;
}
.ngb-accordion-body {
- background-color: white;
- padding: 10px;
+ background-color: var(--theme-surface);
+ padding: var(--space-lg);
+ color: var(--theme-text-primary);
+ border-top: 1px solid var(--theme-border);
}
.content {
display: block;
}
+/* Circle Toggle */
.circle-toggle {
display: flex;
- margin-top: 5px;
+ margin-top: var(--space-xs);
white-space: nowrap;
+ align-items: center;
}
.circle-toggle > .toggle {
- width: 25px;
- height: 25px;
+ width: 24px;
+ height: 24px;
border-radius: 50%;
- transition: background-color .1s ease-in-out
+ transition: background-color var(--transition-fast);
+ border: 2px solid var(--theme-border);
}
.circle-text {
- margin-left: 10px;
-}
+ margin-left: var(--space-sm);
+ color: var(--theme-text-primary);
+ font-size: 0.875rem;
+}
\ No newline at end of file
diff --git a/src/app/shared/components/modal/modal.component.css b/src/app/shared/components/modal/modal.component.css
index 711578da..c801da1e 100644
--- a/src/app/shared/components/modal/modal.component.css
+++ b/src/app/shared/components/modal/modal.component.css
@@ -7,62 +7,123 @@
display: flex;
align-items: center;
justify-content: center;
- z-index: 100;
- color: black;
+ z-index: 1000;
+ color: var(--theme-text-primary);
}
.click-off {
width: 100%;
height: 100%;
- background: #0000008e;
+ background: rgba(0, 0, 0, 0.6);
+ backdrop-filter: blur(4px);
position: absolute;
z-index: -1;
+ animation: fadeIn var(--transition-base);
+}
+
+@keyframes fadeIn {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
+ }
}
.content {
- width: 40%;
- min-width: 250px;
+ width: 90%;
+ max-width: 600px;
+ min-width: 300px;
min-height: 250px;
display: flex;
flex-direction: column;
- gap: 25px;
- background: white;
+ gap: var(--space-xl);
+ background: var(--theme-surface);
position: relative;
- padding: 50px;
- border-radius: 15px;
- border-color: black;
- border-style: solid;
- border-width: 2px;
- overflow: hidden;
+ padding: var(--space-2xl);
+ border-radius: var(--radius-xl);
+ border: 1px solid var(--theme-border);
+ box-shadow: var(--shadow-xl);
z-index: 1;
overflow-y: auto;
+ max-height: 90vh;
+ animation: modalSlideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);
+}
+
+@keyframes modalSlideUp {
+ from {
+ opacity: 0;
+ transform: translateY(20px) scale(0.95);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0) scale(1);
+ }
+}
+
+.content::-webkit-scrollbar {
+ width: 8px;
+}
+
+.content::-webkit-scrollbar-track {
+ background: var(--theme-bg-tertiary);
+ border-radius: var(--radius-md);
+}
+
+.content::-webkit-scrollbar-thumb {
+ background: var(--theme-border);
+ border-radius: var(--radius-md);
+}
+
+.content::-webkit-scrollbar-thumb:hover {
+ background: var(--theme-text-tertiary);
}
.actions {
margin-top: auto;
display: flex;
- float: right;
- color: black;
+ gap: var(--space-md);
+ color: var(--theme-text-primary);
justify-content: flex-end;
+ padding-top: var(--space-lg);
+ border-top: 1px solid var(--theme-divider);
}
.title {
width: 100%;
- font-weight: bold;
+ font-weight: 700;
+ font-size: 1.5rem;
display: flex;
justify-content: center;
+ color: var(--theme-text-primary);
+ padding-bottom: var(--space-md);
+ border-bottom: 1px solid var(--theme-divider);
}
.close {
position: absolute;
- font-size: 30px;
- right: 35px;
- top: 15px;
+ font-size: 28px;
+ right: var(--space-lg);
+ top: var(--space-lg);
cursor: pointer;
background-color: transparent;
- color: black;
+ color: var(--theme-text-secondary);
+ border: none;
+ width: 32px;
+ height: 32px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: var(--radius-md);
+ transition: all var(--transition-fast);
+}
+
+.close:hover {
+ background-color: var(--color-error-bg);
+ color: var(--color-error);
}
.body {
white-space: initial;
-}
+ color: var(--theme-text-primary);
+}
\ No newline at end of file
diff --git a/src/app/shared/components/multiselect-dropdown/multiselect-dropdown.component.css b/src/app/shared/components/multiselect-dropdown/multiselect-dropdown.component.css
index ee203bfe..a496872d 100644
--- a/src/app/shared/components/multiselect-dropdown/multiselect-dropdown.component.css
+++ b/src/app/shared/components/multiselect-dropdown/multiselect-dropdown.component.css
@@ -1,56 +1,94 @@
.dropdown-check-list {
display: inline-block;
position: relative;
+ width: 100%;
}
.dropdown-check-list .anchor {
position: relative;
cursor: pointer;
- display: inline-block;
- padding: 5px 50px 5px 10px;
- background: white;
- border: var(--primary);
- border-width: 2px;
- border-style: solid;
- border-radius: 6px;
- color: var(--primary);
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: var(--space-sm) var(--space-md);
+ background: var(--theme-surface);
+ border: 1px solid var(--theme-border);
+ border-radius: var(--radius-md);
+ color: var(--theme-text-primary);
+ font-size: 0.9375rem;
+ transition: all var(--transition-fast);
+ min-height: 44px;
+}
+
+.dropdown-check-list .anchor:hover {
+ border-color: var(--brand-primary);
+ background-color: var(--theme-bg-tertiary);
}
.dropdown-check-list .anchor:after {
position: absolute;
content: "";
- border-left: 2px solid var(--primary);
- border-top: 2px solid var(--primary);
- padding: 5px;
- right: 10px;
- top: 20%;
- -moz-transform: rotate(-135deg);
- -ms-transform: rotate(-135deg);
- -o-transform: rotate(-135deg);
- -webkit-transform: rotate(-135deg);
+ border-left: 2px solid var(--theme-text-secondary);
+ border-top: 2px solid var(--theme-text-secondary);
+ padding: 4px;
+ right: 12px;
+ top: 50%;
+ margin-top: -6px;
transform: rotate(-135deg);
+ transition: transform var(--transition-fast);
}
-.dropdown-check-list .anchor:active:after {
- right: 8px;
- top: 21%;
+.dropdown-check-list .anchor.open:after {
+ transform: rotate(45deg);
+ margin-top: -2px;
}
.dropdown-check-list ul.items {
- padding: 2px;
+ padding: var(--space-xs);
display: none;
margin: 0;
- border: 1px solid var(--primary);
- border-radius: 0px 0px 3px 3px;
+ border: 1px solid var(--theme-border);
+ border-radius: var(--radius-md);
border-top: none;
width: 100%;
- background-color: #fff;
+ background-color: var(--theme-surface);
position: absolute;
z-index: 100;
+ box-shadow: var(--shadow-lg);
+ max-height: 300px;
+ overflow-y: auto;
+ margin-top: 2px;
+}
+
+.dropdown-check-list ul.items::-webkit-scrollbar {
+ width: 6px;
+}
+
+.dropdown-check-list ul.items::-webkit-scrollbar-track {
+ background: var(--theme-bg-tertiary);
+ border-radius: var(--radius-md);
+}
+
+.dropdown-check-list ul.items::-webkit-scrollbar-thumb {
+ background: var(--theme-border);
+ border-radius: var(--radius-md);
}
.dropdown-check-list ul.items li {
list-style: none;
+ padding: var(--space-sm) var(--space-md);
+ cursor: pointer;
+ border-radius: var(--radius-sm);
+ color: var(--theme-text-primary);
+ transition: all var(--transition-fast);
+ display: flex;
+ align-items: center;
+ gap: var(--space-sm);
+}
+
+.dropdown-check-list ul.items li:hover {
+ background-color: var(--theme-bg-tertiary);
+ color: var(--brand-primary);
}
.visible {
@@ -62,5 +100,6 @@
}
.schema {
- color: var(--primary);
-}
+ color: var(--brand-primary);
+ font-weight: 600;
+}
\ No newline at end of file
diff --git a/src/app/shared/components/navbar/navbar.component.css b/src/app/shared/components/navbar/navbar.component.css
index b67d1108..76ce6f53 100644
--- a/src/app/shared/components/navbar/navbar.component.css
+++ b/src/app/shared/components/navbar/navbar.component.css
@@ -1,39 +1,87 @@
-.topnav {
- overflow: hidden;
- background-color: var(--primary);
- /* check if its the primary accent */
+.navbar {
+ background-color: var(--theme-surface);
+ border-bottom: 1px solid var(--theme-border);
+ box-shadow: var(--shadow-sm);
width: 100%;
- justify-content: center;
+ z-index: 100;
+ transition: all var(--transition-base);
+}
+
+.navbar-container {
display: flex;
- height: 75px;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 var(--space-xl);
+ height: 72px;
+ max-width: 1920px;
+ margin: 0 auto;
}
-.topnav a {
- float: right;
- color: white;
- text-align: center;
- padding: 17px;
- text-decoration: none;
- justify-content: center;
+.navbar-brand {
+ display: flex;
+ align-items: center;
+ gap: var(--space-md);
+}
+
+.navbar-logo {
+ height: 48px;
+ width: auto;
+ object-fit: contain;
+}
+
+.navbar-title {
+ display: flex;
+ flex-direction: column;
+ gap: 2px;
+}
+
+.title-main {
+ font-size: 1.25rem;
+ font-weight: 700;
+ color: var(--theme-text-primary);
+ line-height: 1.2;
+}
+
+.title-sub {
+ font-size: 0.75rem;
+ font-weight: 500;
+ color: var(--theme-text-tertiary);
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+.navbar-actions {
display: flex;
- font-size: 25px;
- height: 100%;
+ align-items: center;
+ gap: var(--space-md);
+}
+
+.theme-toggle {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 40px;
+ height: 40px;
+ border-radius: var(--radius-md);
+ background-color: var(--theme-bg-tertiary);
+ border: 1px solid var(--theme-border);
+ color: var(--theme-text-primary);
+ cursor: pointer;
+ transition: all var(--transition-fast);
}
-.topnav a:hover {
- background-color: #ddd;
- color: var(--primary-accent);
- border-radius: 6px;
+.theme-toggle:hover {
+ background-color: var(--brand-primary-light);
+ border-color: var(--brand-primary);
+ color: var(--brand-primary);
+ transform: scale(1.05);
}
-.topnav a.active {
- background-color: white;
- color: var(--primary-accent);
- border-color: var(--primary-accent);
- border-width: 2px;
- border-color: black;
+.theme-toggle:active {
+ transform: scale(0.95);
}
-.topnav img {
- height: 100%;
+.theme-toggle svg {
+ width: 20px;
+ height: 20px;
}
diff --git a/src/app/shared/components/navbar/navbar.component.html b/src/app/shared/components/navbar/navbar.component.html
index 2abecfcf..ec7f62ec 100644
--- a/src/app/shared/components/navbar/navbar.component.html
+++ b/src/app/shared/components/navbar/navbar.component.html
@@ -1,3 +1,30 @@
-
-

-
+
diff --git a/src/app/shared/components/navbar/navbar.component.ts b/src/app/shared/components/navbar/navbar.component.ts
index 54f3a147..ce6e2b7a 100644
--- a/src/app/shared/components/navbar/navbar.component.ts
+++ b/src/app/shared/components/navbar/navbar.component.ts
@@ -1,4 +1,5 @@
-import {Component} from '@angular/core';
+import { Component } from '@angular/core';
+import { ThemeService } from '../../services/theme.service';
@Component({
selector: 'app-navbar',
@@ -7,5 +8,9 @@ import {Component} from '@angular/core';
standalone: false
})
export class NavbarComponent {
+ constructor(public themeService: ThemeService) {}
+ toggleTheme(): void {
+ this.themeService.toggleTheme();
+ }
}
diff --git a/src/app/shared/components/spinner/spinner.component.css b/src/app/shared/components/spinner/spinner.component.css
index c91ccbe2..c15374ae 100644
--- a/src/app/shared/components/spinner/spinner.component.css
+++ b/src/app/shared/components/spinner/spinner.component.css
@@ -6,10 +6,10 @@
.lds-ring div {
box-sizing: border-box;
position: absolute;
- border: 8px solid var(--accent);
+ border: 8px solid var(--brand-primary);
border-radius: 50%;
animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
- border-color: var(--accent) transparent transparent transparent;
+ border-color: var(--brand-primary) transparent transparent transparent;
}
.lds-ring div:nth-child(1) {
@@ -31,4 +31,4 @@
100% {
transform: rotate(360deg);
}
-}
+}
\ No newline at end of file
diff --git a/src/app/shared/components/toast/toast.component.html b/src/app/shared/components/toast/toast.component.html
index a8f65d96..d8e1e0a7 100644
--- a/src/app/shared/components/toast/toast.component.html
+++ b/src/app/shared/components/toast/toast.component.html
@@ -1,14 +1,14 @@
\ No newline at end of file
diff --git a/src/app/shared/components/toast/toast.component.scss b/src/app/shared/components/toast/toast.component.scss
index ee2122cb..f52b311b 100644
--- a/src/app/shared/components/toast/toast.component.scss
+++ b/src/app/shared/components/toast/toast.component.scss
@@ -1,15 +1,36 @@
-.warning {
- background-color: #F44336;
-}
+ .warning {
+ background-color: #FFC107;
+ }
-.error {
- background-color: #F44336;
-}
+ .info {
+ background-color: #4CAF50;
+ }
+
+ .error {
+ background-color: #F44336;
+ }
+
+ .toast-header.info {
+ background-color: #4CAF50;
+ }
-.toast-header {
+ .toast-header.warning {
+ background-color: #FFC107;
+ }
+
+ .toast-header.error {
background-color: #F44336;
-}
+ }
+
+ .toast-body.info {
+ background-color: #E8F5E9;
+ }
+
+ .toast-body.warning {
+ background-color: #FFF8E1;
+ }
-.toast-body {
+ .toast-body.error {
background-color: #FDE0DE;
-}
+ }
+
\ No newline at end of file
diff --git a/src/app/shared/components/toolbar/modals/generate-modal/generate-modal.component.css b/src/app/shared/components/toolbar/modals/generate-modal/generate-modal.component.css
index e69de29b..61f9e47d 100644
--- a/src/app/shared/components/toolbar/modals/generate-modal/generate-modal.component.css
+++ b/src/app/shared/components/toolbar/modals/generate-modal/generate-modal.component.css
@@ -0,0 +1,30 @@
+.progress-bar-container {
+ width: 300px;
+ height: 6px;
+ background-color: var(--theme-bg-tertiary);
+ border-radius: var(--radius-full);
+ overflow: hidden;
+}
+
+.progress-bar {
+ height: 100%;
+ background: linear-gradient(90deg, var(--brand-primary), var(--brand-accent));
+ border-radius: var(--radius-full);
+ width: 100%;
+}
+
+.progress-bar.pulse {
+ animation: pulse 1.5s ease-in-out infinite;
+}
+
+@keyframes pulse {
+ 0%, 100% {
+ opacity: 0.6;
+ transform: translateX(-100%);
+ }
+ 50% {
+ opacity: 1;
+ transform: translateX(100%);
+ }
+}
+
diff --git a/src/app/shared/components/toolbar/modals/generate-modal/generate-modal.component.html b/src/app/shared/components/toolbar/modals/generate-modal/generate-modal.component.html
index db7b5bf7..d4405de3 100644
--- a/src/app/shared/components/toolbar/modals/generate-modal/generate-modal.component.html
+++ b/src/app/shared/components/toolbar/modals/generate-modal/generate-modal.component.html
@@ -1,58 +1,89 @@
-
-
- Generate SBOM
-
-
-
-
Waiting for Project Selection...
-
-
-
-
Zipping Project Contents...
-
-
-
-
-
-
Schema:
-
-
-
-
Format:
-
-
-
-
Type:
-
-
-
-
-
-
- Generate
-
-
- Cancel
-
-
-
+
+
+ Generate SBOM
+
+
+
+
Waiting for Project Selection...
+
Select a folder containing your project
+
+
+
+
+
Compressing Project...
+
+
Creating archive of your project files
+
+
+
+
Uploading to Analysis Engine...
+
+
Preparing project for SBOM generation
+
+
+
+
Generating SBOM...
+
+
Analyzing project and creating bill of materials
+
+
+
+
+
Schema:
+
+
+
+
Format:
+
+
+
+
Type:
+
+
+
+
+
+
+ Generate
+
+
+ Cancel
+
+
+
\ No newline at end of file
diff --git a/src/app/shared/components/toolbar/modals/generate-modal/generate-modal.component.ts b/src/app/shared/components/toolbar/modals/generate-modal/generate-modal.component.ts
index 1386b3ab..808b51e2 100644
--- a/src/app/shared/components/toolbar/modals/generate-modal/generate-modal.component.ts
+++ b/src/app/shared/components/toolbar/modals/generate-modal/generate-modal.component.ts
@@ -49,13 +49,17 @@ export class GenerateModalComponent implements OnInit {
this.zippedFileData = undefined;
this.status = GenerationStatus.GENERATING;
+ console.log('[SBOM Gen] Starting project directory selection...');
this.service.getProjectDirectory().then((result) => {
+ console.log('[SBOM Gen] Directory selected, starting zip...');
this.status = GenerationStatus.ZIPPING;
- this.service.zipFileDirectory(result).then((data) => {
+ this.service.zipFileDirectory(result).then((data: any) => {
+ console.log('[SBOM Gen] Zip complete, uploading to OSI...', data?.length || 0, 'bytes');
+ this.status = GenerationStatus.UPLOADING;
- //TODO: Prompt user beforehand on OSI or Parsers so don't need to upload project if don't have to OR the backend should be reworked for parsers
this.service.uploadProject(data, 'osi').then((tools: any) => {
+ console.log('[SBOM Gen] OSI upload complete, tools:', tools);
tools.forEach((tool: any) => {
this.osiTools[tool] = true;
@@ -65,12 +69,17 @@ export class GenerateModalComponent implements OnInit {
this.status = GenerationStatus.PROJECT_INFO;
}).catch((error) => {
+ console.error('[SBOM Gen] OSI upload failed:', error);
+ this.toast.showErrorToast("SBOM Generation", "Failed to upload project to OSI");
this.Close();
})
}).catch((error) => {
+ console.error('[SBOM Gen] Zip failed:', error);
+ this.toast.showErrorToast("SBOM Generation", "Failed to zip project");
this.Close();
})
}).catch((error) => {
+ console.error('[SBOM Gen] Directory selection cancelled or failed:', error);
this.Close();
})
});
@@ -113,6 +122,38 @@ export class GenerateModalComponent implements OnInit {
this.osiTools[event.name] = event.value;
}
+ // --- Begin: Pre-zipped flow (commented out) ---
+ // SelectFolderAndZip() {
+ // this.status = GenerationStatus.ZIPPING;
+ // this.service.getProjectDirectory().then((result) => {
+ // this.service.zipFileDirectory(result).then((data) => {
+ // this.service.uploadProject(data, 'osi').then((tools: any) => {
+ // tools.forEach((tool: any) => {
+ // this.osiTools[tool] = true;
+ // })
+ // this.zippedFileData = data;
+ // this.status = GenerationStatus.PROJECT_INFO;
+ // }).catch(() => { this.Close(); })
+ // }).catch(() => { this.Close(); })
+ // }).catch(() => { this.Close(); })
+ // }
+ //
+ // OnZipFileSelected(event: any) {
+ // const files: FileList = event.target.files;
+ // if (!files || files.length === 0)
+ // return;
+ // const zip = files[0];
+ // this.status = GenerationStatus.GENERATING;
+ // this.service.uploadProject(zip, 'osi').then((tools: any) => {
+ // tools.forEach((tool: any) => {
+ // this.osiTools[tool] = true;
+ // })
+ // this.zippedFileData = zip;
+ // this.status = GenerationStatus.PROJECT_INFO;
+ // }).catch(() => { this.Close(); })
+ // }
+ // --- End: Pre-zipped flow (commented out) ---
+
Close() {
this.status = GenerationStatus.NULL;
@@ -127,4 +168,6 @@ enum GenerationStatus {
ZIPPING,
PROJECT_INFO,
GENERATING,
+ UPLOADING,
+ // SELECTING_SOURCE, // disabled
}
diff --git a/src/app/shared/components/viewer/viewer.component.css b/src/app/shared/components/viewer/viewer.component.css
index b0e226a6..073d163c 100644
--- a/src/app/shared/components/viewer/viewer.component.css
+++ b/src/app/shared/components/viewer/viewer.component.css
@@ -4,72 +4,127 @@
flex-direction: column;
width: 100%;
height: 100%;
- padding: 25px 50px;
- margin-left: auto;
- margin-right: auto;
- max-width: 1000px;
+ padding: var(--space-lg) var(--space-xl);
+ margin-left: 0;
+ margin-right: 0;
+ flex: 1;
+}
+
+.viewer-container h3 {
+ font-size: 1.875rem;
+ font-weight: 700;
+ color: var(--theme-text-primary);
+ margin: 0 0 var(--space-lg) 0;
}
.body {
width: 100%;
height: 100%;
- background-color: #fff;
- border-radius: 16px;
+ background-color: var(--theme-surface);
+ border-radius: var(--radius-xl);
+ box-shadow: var(--shadow-lg);
+ border: 1px solid var(--theme-border);
}
.header {
position: relative;
width: 100%;
- height: 75px;
- background-color: var(--primary);
- color: #ffffff7a;
+ height: 64px;
+ background-color: var(--theme-surface-elevated);
+ color: var(--theme-text-tertiary);
align-items: center;
justify-content: center;
- gap: 10%;
- border-radius: 16px 16px 0 0;
- margin-top: 10px;
+ gap: var(--space-xl);
+ border-radius: var(--radius-xl) var(--radius-xl) 0 0;
+ margin-top: var(--space-md);
+ border-bottom: 1px solid var(--theme-border);
+ font-weight: 600;
+ font-size: 0.9375rem;
}
.option {
cursor: pointer;
+ padding: var(--space-sm) var(--space-md);
+ border-radius: var(--radius-md);
+ transition: all var(--transition-fast);
+}
+
+.option:hover {
+ color: var(--theme-text-primary);
+ background-color: var(--theme-bg-tertiary);
}
#selected {
- color: white;
+ color: var(--brand-primary);
+ background-color: var(--brand-primary-light);
}
.content {
height: 90%;
width: 100%;
- padding: 10px;
+ padding: var(--space-xl);
word-break: break-word;
- background-color: #fff;
- border-radius: 0px 0px 12px 12px;
+ background-color: var(--theme-surface);
+ border-radius: 0px 0px var(--radius-xl) var(--radius-xl);
overflow: hidden;
}
.title {
- font-size: 20px;
- padding: 10px;
+ font-size: 1.25rem;
+ font-weight: 600;
+ padding: var(--space-md) 0;
align-self: center;
width: 100%;
align-items: center;
justify-content: center;
text-align: center;
+ color: var(--theme-text-primary);
}
.body-container {
height: calc(100% - 80px);
width: 100%;
- overflow-y: scroll;
+ overflow-y: auto;
+ overflow-x: hidden;
+ position: relative;
}
+.body-container::-webkit-scrollbar {
+ width: 8px;
+}
+
+.body-container::-webkit-scrollbar-track {
+ background: var(--theme-bg-tertiary);
+ border-radius: var(--radius-md);
+}
+
+.body-container::-webkit-scrollbar-thumb {
+ background: var(--theme-border);
+ border-radius: var(--radius-md);
+}
+
+.body-container::-webkit-scrollbar-thumb:hover {
+ background: var(--theme-text-tertiary);
+}
.close-button {
position: absolute;
- top: 7px;
- right: 20px;
+ top: 50%;
+ transform: translateY(-50%);
+ right: var(--space-lg);
cursor: pointer;
- color: white;
- font-size: 30px;
+ color: var(--theme-text-secondary);
+ font-size: 28px;
+ width: 32px;
+ height: 32px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: var(--radius-md);
+ transition: all var(--transition-fast);
+}
+
+.close-button:hover {
+ background-color: var(--color-error-bg);
+ color: var(--color-error);
}
diff --git a/src/app/shared/components/viewer/viewer.component.ts b/src/app/shared/components/viewer/viewer.component.ts
index cc754afd..6c78ab64 100644
--- a/src/app/shared/components/viewer/viewer.component.ts
+++ b/src/app/shared/components/viewer/viewer.component.ts
@@ -1,4 +1,4 @@
-import {Component, Input} from '@angular/core';
+import {Component, Input, Output, EventEmitter} from '@angular/core';
import {RoutingService} from '../../services/routing.service';
@Component({
@@ -11,7 +11,18 @@ export class ViewerComponent {
@Input() title: string = '';
@Input() subTitle: string = '';
@Input() options: string[] = [];
- @Input() selectedOption: string = '';
+
+ private _selectedOption: string = '';
+ @Input()
+ get selectedOption(): string {
+ return this._selectedOption;
+ }
+ set selectedOption(value: string) {
+ this._selectedOption = value;
+ this.selectedOptionChange.emit(value);
+ }
+
+ @Output() selectedOptionChange = new EventEmitter();
constructor(private routingService: RoutingService) {
}
diff --git a/src/app/shared/services/SVIP.service.ts b/src/app/shared/services/SVIP.service.ts
index e4b92e97..f2c1f2ec 100644
--- a/src/app/shared/services/SVIP.service.ts
+++ b/src/app/shared/services/SVIP.service.ts
@@ -222,6 +222,10 @@ export class SVIPService {
async uploadProject(file: any, type: string) {
return new Promise(async (resolve, reject) => {
let formData = new FormData();
+ // Disabled pre-zipped passthrough (kept for future use):
+ // const fileToSend = (file instanceof File) ? file : new File([file], 'temp.zip');
+ // formData.append('project', fileToSend);
+ // Reverted to original behavior: always wrap provided bytes into a new File
formData.append('project', new File([file], 'temp.zip'));
let params = new HttpParams();
diff --git a/src/app/shared/services/routing.service.ts b/src/app/shared/services/routing.service.ts
index 3e834f43..17133fa0 100644
--- a/src/app/shared/services/routing.service.ts
+++ b/src/app/shared/services/routing.service.ts
@@ -37,4 +37,6 @@ export enum PAGES {
COMPARE = 2,
VEX = 3,
METRICS = 4,
+ VULNERABILITIES = 5,
+ VULNERABILITY_DETAILS = 6,
}
diff --git a/src/app/shared/services/sbom.service.ts b/src/app/shared/services/sbom.service.ts
index 77c4d781..bdfd6859 100644
--- a/src/app/shared/services/sbom.service.ts
+++ b/src/app/shared/services/sbom.service.ts
@@ -2,6 +2,7 @@ import {Injectable} from '@angular/core';
import {SVIPService} from './SVIP.service';
import {PAGES, RoutingService} from './routing.service';
import File, {FileStatus} from '../models/file';
+import {SBOM} from '../models/sbom';
@Injectable({
providedIn: 'root',
@@ -25,14 +26,17 @@ export class SbomService {
* @param getSBOM by ID
*/
addSBOMbyID(id: number) {
- this.SVIPService.getSBOM(id as number).subscribe((sbom) => {
+ this.SVIPService.getSBOM(id as number).subscribe((sbom: SBOM) => {
this.SVIPService.getSBOMContents(id as number).subscribe((data: any) => {
- let path = data.fileName;
- let contents = data.contents;
+ let path = (data as any).fileName;
+ let contents = (data as any).contents as string;
const file = new File(path).setValid(id, contents, sbom);
this.files[id] = file;
this.SetSBOMFormat(sbom.format, true);
+ if ((sbom as any)['schema']) {
+ this.SetSBOMSchema((sbom as any)['schema'], true);
+ }
});
});
}
@@ -41,9 +45,9 @@ export class SbomService {
* Gets all SBOMS in database and sets up SBOM service
*/
getAllSBOMs() {
- this.SVIPService.getSBOMS().subscribe((ids) => {
+ this.SVIPService.getSBOMS().subscribe((ids: number[]) => {
if (ids) {
- ids.forEach((id) => this.addSBOMbyID(id));
+ ids.forEach((id: number) => this.addSBOMbyID(id));
}
});
}
@@ -57,13 +61,13 @@ export class SbomService {
let randomID = -Math.random().toString() + "-loading";
// File is loading
this.files[randomID] = new File(path);
- this.SVIPService.getFileData(path).then((contents) => {
+ this.SVIPService.getFileData(path).then((contents: string) => {
if (contents) {
this.SVIPService.uploadSBOM(path, contents).subscribe(
- (id) => {
+ (id: number) => {
if (id) {
// Successful upload
- this.SVIPService.getSBOM(id).subscribe((sbom) => {
+ this.SVIPService.getSBOM(id).subscribe((sbom: SBOM) => {
delete this.files[randomID];
let file = new File(path).setValid(id, contents, sbom);
this.files[id] = file;
@@ -88,7 +92,7 @@ export class SbomService {
downloadSBOM(id: string): Blob {
const file = this.files[id]?.contents;
if (file !== null) {
- return new Blob([file]);
+ return new Blob([file as any]);
}
throw new Error('File does not exist!');
}
@@ -108,7 +112,7 @@ export class SbomService {
idList.unshift(Number(targetID));
- this.SVIPService.compareSBOMs(idList).subscribe((result) => {
+ this.SVIPService.compareSBOMs(idList).subscribe((result: any) => {
this.comparison = result;
});
}
@@ -120,7 +124,7 @@ export class SbomService {
deleteFile(id: string) {
if (id && !isNaN(Number(id))) {
// TODO: Add error handling for when file cannot be deleted
- this.SVIPService.deleteSBOM(Number(id)).subscribe((deleted) => {
+ this.SVIPService.deleteSBOM(Number(id)).subscribe((deleted: any) => {
if (deleted) {
const data = this.routingService.data;
if (data === id) {
@@ -149,7 +153,7 @@ export class SbomService {
overwrite: boolean
) {
this.SVIPService.convertSBOM(Number(id), schema, format, overwrite).subscribe(
- (result) => {
+ (result: string) => {
if (result) {
this.addSBOMbyID(Number(result));
@@ -184,7 +188,7 @@ export class SbomService {
* @param id sbom to check for
*/
GetSBOMSchema(id: string) {
- return this.files[id].schema;
+ return (this.files[id] as any).schema;
}
//#region SBOM format
@@ -209,7 +213,7 @@ export class SbomService {
* @param id sbom to check for
*/
GetSBOMFormat(id: string) {
- return this.files[id].format;
+ return (this.files[id] as any).format;
}
//#endregion
diff --git a/src/app/shared/services/theme.service.ts b/src/app/shared/services/theme.service.ts
new file mode 100644
index 00000000..1fdf5d26
--- /dev/null
+++ b/src/app/shared/services/theme.service.ts
@@ -0,0 +1,69 @@
+import { Injectable } from '@angular/core';
+import { BehaviorSubject, Observable } from 'rxjs';
+
+export type Theme = 'light' | 'dark';
+
+@Injectable({
+ providedIn: 'root'
+})
+export class ThemeService {
+ private readonly THEME_KEY = 'sbom-ui-theme';
+ private themeSubject: BehaviorSubject;
+ public theme$: Observable;
+
+ constructor() {
+ // Load theme from localStorage or default to 'light'
+ const savedTheme = this.getSavedTheme();
+ this.themeSubject = new BehaviorSubject(savedTheme);
+ this.theme$ = this.themeSubject.asObservable();
+
+ // Apply initial theme
+ this.applyTheme(savedTheme);
+ }
+
+ private getSavedTheme(): Theme {
+ if (typeof window !== 'undefined' && window.localStorage) {
+ const saved = localStorage.getItem(this.THEME_KEY);
+ if (saved === 'dark' || saved === 'light') {
+ return saved;
+ }
+ }
+ // Default to light theme
+ return 'light';
+ }
+
+ private applyTheme(theme: Theme): void {
+ if (typeof document !== 'undefined') {
+ const root = document.documentElement;
+ if (theme === 'dark') {
+ root.setAttribute('data-theme', 'dark');
+ } else {
+ root.removeAttribute('data-theme');
+ }
+ }
+ }
+
+ public getCurrentTheme(): Theme {
+ return this.themeSubject.value;
+ }
+
+ public toggleTheme(): void {
+ const newTheme: Theme = this.themeSubject.value === 'light' ? 'dark' : 'light';
+ this.setTheme(newTheme);
+ }
+
+ public setTheme(theme: Theme): void {
+ this.themeSubject.next(theme);
+ this.applyTheme(theme);
+
+ // Save to localStorage
+ if (typeof window !== 'undefined' && window.localStorage) {
+ localStorage.setItem(this.THEME_KEY, theme);
+ }
+ }
+
+ public isDark(): boolean {
+ return this.themeSubject.value === 'dark';
+ }
+}
+
diff --git a/src/app/shared/services/toast.service.ts b/src/app/shared/services/toast.service.ts
index 23867bfa..3b06b6b8 100644
--- a/src/app/shared/services/toast.service.ts
+++ b/src/app/shared/services/toast.service.ts
@@ -14,6 +14,14 @@ export class ToastService {
this.toastEvents = this._toastEvents.asObservable();
}
+ showInfoToast(title: string, message: string) {
+ this._toastEvents.next({
+ message,
+ title,
+ type: EventTypes.Info,
+ });
+ }
+
showWarningToast(title: string, message: string) {
this._toastEvents.next({
message,
diff --git a/src/styles.css b/src/styles.css
index b0f8736b..56c6170f 100644
--- a/src/styles.css
+++ b/src/styles.css
@@ -1,26 +1,136 @@
-/* You can add global styles to this file, and also import other style files */
+/* Professional Design System with Light/Dark Theme Support */
+
:root {
- --accent: #58a5ff;
- --green: #58ff82;
- --red: #ff5858;
- --primary: #6889AF;
- --gray: gray;
- --bg: #c7c7c7;
- --warn: #f44336;
- --success: #54AD78;
- --highlight: #b3d5eb3f;
+ /* Light Theme (Default) */
+ --theme-bg-primary: #f5f7fa;
+ --theme-bg-secondary: #ffffff;
+ --theme-bg-tertiary: #e8ecf1;
+ --theme-surface: #ffffff;
+ --theme-surface-elevated: #ffffff;
+
+ --theme-text-primary: #1a2332;
+ --theme-text-secondary: #556B7F;
+ --theme-text-tertiary: #8394a5;
+ --theme-text-inverse: #ffffff;
+
+ --theme-border: #d4dce6;
+ --theme-border-light: #e8ecf1;
+ --theme-divider: #e8ecf1;
+
+ /* Brand Colors */
+ --brand-primary: #2563eb;
+ --brand-primary-hover: #1d4ed8;
+ --brand-primary-light: #dbeafe;
+ --brand-accent: #3b82f6;
+
+ /* Semantic Colors */
+ --color-success: #10b981;
+ --color-success-bg: #d1fae5;
+ --color-success-border: #6ee7b7;
+
+ --color-warning: #f59e0b;
+ --color-warning-bg: #fef3c7;
+ --color-warning-border: #fcd34d;
+
+ --color-error: #ef4444;
+ --color-error-bg: #fee2e2;
+ --color-error-border: #fca5a5;
+
+ --color-info: #3b82f6;
+ --color-info-bg: #dbeafe;
+ --color-info-border: #93c5fd;
+
+ /* Severity Colors (for VEX/vulnerabilities) */
+ --severity-critical: #dc2626;
+ --severity-critical-bg: #fef2f2;
+ --severity-high: #ea580c;
+ --severity-high-bg: #fff7ed;
+ --severity-medium: #f59e0b;
+ --severity-medium-bg: #fefce8;
+ --severity-low: #3b82f6;
+ --severity-low-bg: #eff6ff;
+ --severity-none: #6b7280;
+ --severity-none-bg: #f9fafb;
+
+ /* Shadows */
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
+
+ /* Transitions */
+ --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
+ --transition-base: 250ms cubic-bezier(0.4, 0, 0.2, 1);
+ --transition-slow: 350ms cubic-bezier(0.4, 0, 0.2, 1);
+
+ /* Spacing */
+ --space-xs: 0.25rem;
+ --space-sm: 0.5rem;
+ --space-md: 1rem;
+ --space-lg: 1.5rem;
+ --space-xl: 2rem;
+ --space-2xl: 3rem;
+
+ /* Border Radius */
+ --radius-sm: 0.375rem;
+ --radius-md: 0.5rem;
+ --radius-lg: 0.75rem;
+ --radius-xl: 1rem;
+ --radius-full: 9999px;
+
+ /* Typography */
+ --font-family-base: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif;
+ --font-family-mono: 'Roboto Mono', 'Courier New', monospace;
+}
+/* Dark Theme */
+[data-theme="dark"] {
+ --theme-bg-primary: #0f172a;
+ --theme-bg-secondary: #1e293b;
+ --theme-bg-tertiary: #334155;
+ --theme-surface: #1e293b;
+ --theme-surface-elevated: #334155;
+
+ --theme-text-primary: #f1f5f9;
+ --theme-text-secondary: #cbd5e1;
+ --theme-text-tertiary: #94a3b8;
+ --theme-text-inverse: #0f172a;
+
+ --theme-border: #475569;
+ --theme-border-light: #334155;
+ --theme-divider: #334155;
+
+ --brand-primary: #3b82f6;
+ --brand-primary-hover: #60a5fa;
+ --brand-primary-light: #1e3a8a;
+ --brand-accent: #60a5fa;
+
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.5), 0 4px 6px -2px rgba(0, 0, 0, 0.4);
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.6), 0 10px 10px -5px rgba(0, 0, 0, 0.5);
+
+ /* Dark mode severity backgrounds are more subtle */
+ --severity-critical-bg: #450a0a;
+ --severity-high-bg: #431407;
+ --severity-medium-bg: #422006;
+ --severity-low-bg: #172554;
+ --severity-none-bg: #1f2937;
}
html,
body {
- background-color: white;
+ background-color: var(--theme-bg-primary);
+ color: var(--theme-text-primary);
overflow: hidden;
+ transition: background-color var(--transition-base), color var(--transition-base);
}
body {
margin: 0;
- font-family: 'Noto Sans',
+ font-family: var(--font-family-base);
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
}
.flex {
@@ -112,6 +222,7 @@ body {
}
+
@keyframes slide-left {
0% {
transform: translate(100vw);
@@ -133,3 +244,187 @@ body {
opacity: 100%;
}
}
+
+/* Professional Utility Classes */
+
+/* Card Styles */
+.card {
+ background-color: var(--theme-surface);
+ border: 1px solid var(--theme-border);
+ border-radius: var(--radius-lg);
+ box-shadow: var(--shadow-sm);
+ transition: box-shadow var(--transition-base), transform var(--transition-base);
+}
+
+.card-hover:hover {
+ box-shadow: var(--shadow-md);
+ transform: translateY(-2px);
+}
+
+.card-elevated {
+ background-color: var(--theme-surface-elevated);
+ box-shadow: var(--shadow-md);
+}
+
+/* Status Badges */
+.badge {
+ display: inline-flex;
+ align-items: center;
+ padding: 0.25rem 0.75rem;
+ border-radius: var(--radius-full);
+ font-size: 0.75rem;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.025em;
+}
+
+.badge-critical {
+ background-color: var(--severity-critical-bg);
+ color: var(--severity-critical);
+ border: 1px solid var(--severity-critical);
+}
+
+.badge-high {
+ background-color: var(--severity-high-bg);
+ color: var(--severity-high);
+ border: 1px solid var(--severity-high);
+}
+
+.badge-medium {
+ background-color: var(--severity-medium-bg);
+ color: var(--severity-medium);
+ border: 1px solid var(--severity-medium);
+}
+
+.badge-low {
+ background-color: var(--severity-low-bg);
+ color: var(--severity-low);
+ border: 1px solid var(--severity-low);
+}
+
+.badge-success {
+ background-color: var(--color-success-bg);
+ color: var(--color-success);
+ border: 1px solid var(--color-success-border);
+}
+
+.badge-warning {
+ background-color: var(--color-warning-bg);
+ color: var(--color-warning);
+ border: 1px solid var(--color-warning-border);
+}
+
+.badge-error {
+ background-color: var(--color-error-bg);
+ color: var(--color-error);
+ border: 1px solid var(--color-error-border);
+}
+
+.badge-info {
+ background-color: var(--color-info-bg);
+ color: var(--color-info);
+ border: 1px solid var(--color-info-border);
+}
+
+/* Typography */
+.text-primary {
+ color: var(--theme-text-primary);
+}
+
+.text-secondary {
+ color: var(--theme-text-secondary);
+}
+
+.text-tertiary {
+ color: var(--theme-text-tertiary);
+}
+
+.text-sm {
+ font-size: 0.875rem;
+}
+
+.text-base {
+ font-size: 1rem;
+}
+
+.text-lg {
+ font-size: 1.125rem;
+}
+
+.text-xl {
+ font-size: 1.25rem;
+}
+
+.text-2xl {
+ font-size: 1.5rem;
+}
+
+.font-semibold {
+ font-weight: 600;
+}
+
+.font-bold {
+ font-weight: 700;
+}
+
+/* Spacing utilities */
+.p-xs { padding: var(--space-xs); }
+.p-sm { padding: var(--space-sm); }
+.p-md { padding: var(--space-md); }
+.p-lg { padding: var(--space-lg); }
+.p-xl { padding: var(--space-xl); }
+
+.m-xs { margin: var(--space-xs); }
+.m-sm { margin: var(--space-sm); }
+.m-md { margin: var(--space-md); }
+.m-lg { margin: var(--space-lg); }
+.m-xl { margin: var(--space-xl); }
+
+/* Grid layouts */
+.grid {
+ display: grid;
+}
+
+.grid-cols-2 {
+ grid-template-columns: repeat(2, 1fr);
+}
+
+.grid-cols-3 {
+ grid-template-columns: repeat(3, 1fr);
+}
+
+.grid-cols-4 {
+ grid-template-columns: repeat(4, 1fr);
+}
+
+.gap-sm {
+ gap: var(--space-sm);
+}
+
+.gap-md {
+ gap: var(--space-md);
+}
+
+.gap-lg {
+ gap: var(--space-lg);
+}
+
+/* Dividers */
+.divider {
+ border-top: 1px solid var(--theme-divider);
+ margin: var(--space-lg) 0;
+}
+
+/* Interactive elements */
+.interactive {
+ cursor: pointer;
+ transition: all var(--transition-fast);
+}
+
+.interactive:hover {
+ opacity: 0.8;
+}
+
+.interactive:active {
+ transform: scale(0.98);
+}
\ No newline at end of file