diff --git a/.github/ISSUE_TEMPLATE/fejl----bug-report.md b/.github/ISSUE_TEMPLATE/fejl----bug-report.md index 39d4b02ad..ac2ea81cc 100644 --- a/.github/ISSUE_TEMPLATE/fejl----bug-report.md +++ b/.github/ISSUE_TEMPLATE/fejl----bug-report.md @@ -11,32 +11,41 @@ assignees: '' [Indmeld kun 1 fejl pr. issue og tjek gerne om fejlen allerede er indmeldt //Only one bug per issue and make sure to check if the issue already exists.] ### Beskriv fejlen // Describe the bug + Vær klar og præcis i din beskrivelse af fejlen // A clear and concise description of what the bug is. ### Genskab fejlen // To Reproduce + Sådan genskabes fejlen // Steps to reproduce the behavior: + 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error ### Forventet funktion // Expected behavior + Beskriv klart og præcist hvordan du forventede, at det fungerede // A clear and concise description of what you expected to happen. ### Screenshots + Tilføj om muligt et eller flere billeder, der viser fejlen // If applicable, add screenshots to help explain your problem. ### URL + Angiv den URL, som fejlen opstår på - fx "../gateways/gateway-detail/60c5a8fffe7611a9" // Enter the URL at which the bug occurs - eg "../gateways/gateway-detail/60c5a8fffe7611a9". ### Desktop + Udfyld venligst følgende // Please complete the following information: - Styresystem/OS: [e.g. WIN10] - Browser: [e.g. Chrome, Safari] - Version: [e.g. 22] +Styresystem/OS: [e.g. WIN10] +Browser: [e.g. Chrome, Safari] +Version: [e.g. 22] ### Log + Tilføj om muligt relevant log med fejlbeskrivelser // If applicable, add relevant log with error descriptions. ### Supplerende oplysninger (Additional context) + Tilføj andre detaljer vedrørende fejlen // Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/ny-feature----feature-request.md b/.github/ISSUE_TEMPLATE/ny-feature----feature-request.md index 9ba395ed9..b207de209 100644 --- a/.github/ISSUE_TEMPLATE/ny-feature----feature-request.md +++ b/.github/ISSUE_TEMPLATE/ny-feature----feature-request.md @@ -11,13 +11,17 @@ assignees: '' [Brug dette issue til at ønske tilføjelse af ny funktionalitet eller andet, der ikke allerede findes i OS2iot. Opret et issue pr. nyt ønske // Use this issue to request new functionality or other that doesn't already exist in OS2iot. Please only submit one request per issue.] ### Skyldes dit forslag et særligt behov eller et problem? Beskriv venligst // Is your feature request related to a certain need or problem? Please describe + Beskriv problemet klart og præcist. Fx jeg har ofte brug for, at kunne... // A clear and concise description of what the need or problem is. Ex. I often need to be able to... ### Beskriv det du gerne ser tilføjet til OS2iot // Describe the solution you'd like to add to OS2iot + Giv en præcis beskrivelse af, hvad der skal tilføjes // A clear and concise description of what you want to add to the design system. ### Beskriv de alternativer du har overvejet // Describe alternatives you've considered + Giv en kort og præcis beskrivelse af alle de alternativer du har overvejet og hvorfor du foreslår den løsning du gør // A clear and concise description of any alternative solutions or features you've considered, and why you've settled on that solution. ### Supplerende bemærkninger // Additional context + Tilføj yderligere beskrivelser og billeder her, der forklarer dit forslag // Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/on-push-pr.action.yml b/.github/workflows/on-push-pr.action.yml index d8e43c1f0..d01d94799 100644 --- a/.github/workflows/on-push-pr.action.yml +++ b/.github/workflows/on-push-pr.action.yml @@ -29,7 +29,7 @@ jobs: - uses: actions/setup-node@v3 name: Set NodeJS version with: - node-version: 18 + node-version: 20 - name: Install packages run: "npm ci" - name: Build source diff --git a/.vscode/launch.json b/.vscode/launch.json index 5eb02650a..8230e0de4 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,6 +1,7 @@ { "version": "0.2.0", - "configurations": [{ + "configurations": [ + { "type": "firefox", "request": "launch", "reAttach": true, @@ -14,6 +15,6 @@ "request": "launch", "url": "http://localhost:4200", "webRoot": "${workspaceFolder}" - }, + } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 910a2a5f2..44aeb4060 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,3 @@ { - "typescript.tsdk": "node_modules\\typescript\\lib" + "typescript.tsdk": "node_modules\\typescript\\lib" } diff --git a/Dockerfile b/Dockerfile index 7f9f824bc..8b2dfbdda 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # Based on https://mherman.org/blog/dockerizing-an-angular-app/ # base image -FROM node:18-alpine as DEV +FROM node:20-alpine as DEV # removed this for now # install chrome for protractor tests @@ -17,7 +17,7 @@ ENV PATH /app/node_modules/.bin:$PATH # install and cache app dependencies COPY package.json /app/package.json RUN npm install -RUN npm install -g @angular/cli@17.3.8 +RUN npm install -g @angular/cli@20.3.7 # add app COPY . /app diff --git a/Dockerfile-prod b/Dockerfile-prod index 5d67b0a93..688a3e6e1 100644 --- a/Dockerfile-prod +++ b/Dockerfile-prod @@ -1,6 +1,6 @@ # Based on https://mherman.org/blog/dockerizing-an-angular-app/ # base image -FROM node:18-alpine as builder +FROM node:20-alpine as builder # removed this for now # install chrome for protractor tests @@ -17,7 +17,7 @@ ENV PATH /app/node_modules/.bin:$PATH # install and cache app dependencies COPY package.json /app/package.json RUN npm install -RUN npm install -g @angular/cli@17.3.8 +RUN npm install -g @angular/cli@20.3.7 # add app COPY . /app diff --git a/angular.json b/angular.json index 0782e5e2a..38a92b982 100644 --- a/angular.json +++ b/angular.json @@ -15,17 +15,24 @@ "prefix": "app", "architect": { "build": { - "builder": "@angular-devkit/build-angular:browser", + "builder": "@angular-devkit/build-angular:application", "options": { - "outputPath": "dist/OS2IoT-frontend", + "outputPath": { + "base": "dist/OS2IoT-frontend" + }, "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", + "polyfills": [ + "src/polyfills.ts" + ], "tsConfig": "tsconfig.app.json", "assets": [ "src/favicon.ico", "src/assets", - { "glob": "**/*", "input": "node_modules/monaco-editor", "output": "/assets/monaco/" } + { + "glob": "**/*", + "input": "node_modules/monaco-editor", + "output": "/assets/monaco/" + } ], "styles": [ "./node_modules/animate.css/animate.min.css", @@ -33,15 +40,19 @@ "src/styles.scss" ], "scripts": [ - "node_modules/popper.js/dist/umd/popper.min.js", + "node_modules/@popperjs/core/dist/umd/popper.min.js", "node_modules/bootstrap/dist/js/bootstrap.min.js" ], - "vendorChunk": true, "extractLicenses": false, - "buildOptimizer": false, "sourceMap": true, "optimization": false, - "namedChunks": true + "namedChunks": true, + "browser": "src/main.ts", + "stylePreprocessorOptions": { + "includePaths": [ + "." + ] + } }, "configurations": { "production": { @@ -50,8 +61,6 @@ "sourceMap": false, "namedChunks": false, "extractLicenses": true, - "vendorChunk": false, - "buildOptimizer": true, "budgets": [ { "type": "initial", @@ -92,8 +101,13 @@ "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.spec.json", "karmaConfig": "karma.conf.js", - "assets": ["src/favicon.ico", "src/assets"], - "styles": ["src/styles.scss"], + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss" + ], "scripts": [] } }, @@ -114,5 +128,31 @@ }, "cli": { "analytics": "5e34252a-5088-421b-bb34-6ef89cd9f167" + }, + "schematics": { + "@schematics/angular:component": { + "type": "component" + }, + "@schematics/angular:directive": { + "type": "directive" + }, + "@schematics/angular:service": { + "type": "service" + }, + "@schematics/angular:guard": { + "typeSeparator": "." + }, + "@schematics/angular:interceptor": { + "typeSeparator": "." + }, + "@schematics/angular:module": { + "typeSeparator": "." + }, + "@schematics/angular:pipe": { + "typeSeparator": "." + }, + "@schematics/angular:resolver": { + "typeSeparator": "." + } } } diff --git a/e2e/protractor.conf.js b/e2e/protractor.conf.js index 11ceea6e3..6342493d2 100644 --- a/e2e/protractor.conf.js +++ b/e2e/protractor.conf.js @@ -2,33 +2,29 @@ // Protractor configuration file, see link for more information // https://github.com/angular/protractor/blob/master/lib/config.ts -const { SpecReporter } = require('jasmine-spec-reporter'); +const { SpecReporter } = require("jasmine-spec-reporter"); /** * @type { import("protractor").Config } */ exports.config = { - allScriptsTimeout: 11000, - specs: ['./src/**/*.e2e-spec.ts'], - capabilities: { - browserName: 'chrome', - }, - directConnect: true, - baseUrl: 'http://localhost:4200/', - framework: 'jasmine', - jasmineNodeOpts: { - showColors: true, - defaultTimeoutInterval: 30000, - print: function () {}, - }, - onPrepare() { - require('ts-node').register({ - project: require('path').join(__dirname, './tsconfig.json'), - }); - jasmine - .getEnv() - .addReporter( - new SpecReporter({ spec: { displayStacktrace: true } }) - ); - }, + allScriptsTimeout: 11000, + specs: ["./src/**/*.e2e-spec.ts"], + capabilities: { + browserName: "chrome", + }, + directConnect: true, + baseUrl: "http://localhost:4200/", + framework: "jasmine", + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function () {}, + }, + onPrepare() { + require("ts-node").register({ + project: require("path").join(__dirname, "./tsconfig.json"), + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + }, }; diff --git a/e2e/src/app.e2e-spec.ts b/e2e/src/app.e2e-spec.ts index 6d8ab9a2f..e4b345eed 100644 --- a/e2e/src/app.e2e-spec.ts +++ b/e2e/src/app.e2e-spec.ts @@ -1,25 +1,25 @@ -import { AppPage } from './app.po'; -import { browser, logging } from 'protractor'; +import { AppPage } from "./app.po"; +import { browser, logging } from "protractor"; -describe('workspace-project App', () => { - let page: AppPage; +describe("workspace-project App", () => { + let page: AppPage; - beforeEach(() => { - page = new AppPage(); - }); + beforeEach(() => { + page = new AppPage(); + }); - it('should display welcome message', () => { - page.navigateTo(); - expect(page.getTitleText()).toEqual('OS2IoT-frontend app is running!'); - }); + it("should display welcome message", () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual("OS2IoT-frontend app is running!"); + }); - afterEach(async () => { - // Assert that there are no errors emitted from the browser - const logs = await browser.manage().logs().get(logging.Type.BROWSER); - expect(logs).not.toContain( - jasmine.objectContaining({ - level: logging.Level.SEVERE, - } as logging.Entry) - ); - }); + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain( + jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry) + ); + }); }); diff --git a/e2e/src/app.po.ts b/e2e/src/app.po.ts index f6176f96b..e88be81cc 100644 --- a/e2e/src/app.po.ts +++ b/e2e/src/app.po.ts @@ -1,13 +1,11 @@ -import { browser, by, element } from 'protractor'; +import { browser, by, element } from "protractor"; export class AppPage { - navigateTo(): Promise { - return browser.get(browser.baseUrl) as Promise; - } + navigateTo(): Promise { + return browser.get(browser.baseUrl) as Promise; + } - getTitleText(): Promise { - return element(by.css('app-root .content span')).getText() as Promise< - string - >; - } + getTitleText(): Promise { + return element(by.css("app-root .content span")).getText() as Promise; + } } diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json index e38380def..c92199cfd 100644 --- a/e2e/tsconfig.json +++ b/e2e/tsconfig.json @@ -1,9 +1,13 @@ { - "extends": "../tsconfig.json", - "compilerOptions": { - "outDir": "../out-tsc/e2e", - "module": "commonjs", - "target": "es2018", - "types": ["jasmine", "jasminewd2", "node"] - } + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es2018", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } } diff --git a/karma.conf.js b/karma.conf.js index 9d287ce74..670addf64 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -2,31 +2,31 @@ // https://karma-runner.github.io/1.0/config/configuration-file.html module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma'), - ], - client: { - clearContext: false, // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, './coverage/OS2IoT-frontend'), - reports: ['html', 'lcovonly', 'text-summary'], - fixWebpackSourcePaths: true, - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true, - }); + config.set({ + basePath: "", + frameworks: ["jasmine", "@angular-devkit/build-angular"], + plugins: [ + require("karma-jasmine"), + require("karma-chrome-launcher"), + require("karma-jasmine-html-reporter"), + require("karma-coverage-istanbul-reporter"), + require("@angular-devkit/build-angular/plugins/karma"), + ], + client: { + clearContext: false, // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require("path").join(__dirname, "./coverage/OS2IoT-frontend"), + reports: ["html", "lcovonly", "text-summary"], + fixWebpackSourcePaths: true, + }, + reporters: ["progress", "kjhtml"], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ["Chrome"], + singleRun: false, + restartOnFileChange: true, + }); }; diff --git a/package-lock.json b/package-lock.json index 655105168..fce4ffec0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,88 +8,289 @@ "name": "os2iot-frontend", "version": "1.0.0", "dependencies": { - "@angular/animations": "^17.3.12", - "@angular/cdk": "^17.3.10", - "@angular/common": "^17.3.12", - "@angular/compiler": "^17.3.12", - "@angular/core": "^17.3.12", - "@angular/forms": "^17.3.12", - "@angular/localize": "^17.3.12", - "@angular/material": "^17.3.10", - "@angular/material-moment-adapter": "^17.3.10", - "@angular/platform-browser": "^17.3.12", - "@angular/platform-browser-dynamic": "^17.3.12", - "@angular/router": "^17.3.12", - "@auth0/angular-jwt": "^5.0.1", - "@fortawesome/angular-fontawesome": "^0.14.1", - "@fortawesome/fontawesome-free": "^5.15.4", - "@fortawesome/fontawesome-svg-core": "^1.2.28", - "@fortawesome/free-solid-svg-icons": "^5.13.0", - "@ng-bootstrap/ng-bootstrap": "^16.0.0", - "@ngx-translate/core": "^15.0.0", - "@ngx-translate/http-loader": "^6.0.0", - "@popperjs/core": "^2.11.6", - "all": "0.0.0", + "@angular/animations": "^20.3.7", + "@angular/cdk": "^20.2.10", + "@angular/common": "^20.3.7", + "@angular/compiler": "^20.3.7", + "@angular/core": "^20.3.7", + "@angular/forms": "^20.3.7", + "@angular/localize": "^20.3.7", + "@angular/material": "^20.2.10", + "@angular/material-moment-adapter": "^20.2.10", + "@angular/platform-browser": "^20.3.7", + "@angular/platform-browser-dynamic": "^20.3.7", + "@angular/router": "^20.3.7", + "@auth0/angular-jwt": "^5.2.0", + "@fortawesome/angular-fontawesome": "^3.0.0", + "@fortawesome/fontawesome-free": "^7.1.0", + "@fortawesome/free-solid-svg-icons": "^7.1.0", + "@ng-bootstrap/ng-bootstrap": "^19.0.1", + "@ngx-translate/core": "^17.0.0", + "@ngx-translate/http-loader": "^17.0.0", + "@popperjs/core": "^2.11.8", "animate.css": "^4.1.1", - "bootstrap": "5.0.0-alpha2", - "chart.js": "^3.7.1", - "file-saver": "^2.0.2", - "guid-typescript": "^1.0.9", - "jwt-decode": "^3.1.2", + "bootstrap": "5.3.8", + "chart.js": "^4.5.1", + "file-saver": "^2.0.5", + "jwt-decode": "^4.0.0", "leaflet": "^1.9.4", "leaflet-geosearch": "3.6.1", "leaflet.fullscreen": "3.0.1", - "moment": "^2.29.4", - "monaco-editor": "^0.44.0", - "ng": "0.0.0", - "ng-inline-svg-2": "^15.0.1", - "ngx-cookie-service": "^17.1.0", - "ngx-monaco-editor-v2": "^17.0.1", - "ngx-papaparse": "^5.0.0", - "popper.js": "^1.16.1", + "moment": "^2.30.1", + "monaco-editor": "^0.52.2", + "ng-inline-svg-2": "^20.0.1", + "ngx-cookie-service": "^20.1.0", + "ngx-monaco-editor-v2": "^20.3.0", + "ngx-papaparse": "^8.0.0", "proj4": "2.12.1", "proj4leaflet": "1.0.2", - "rxjs": "~6.6.7", - "tslib": "^2.0.0", - "tslint": "~6.1.0", - "ua-parser-js": "^1.0.33", - "zone.js": "~0.14.10" + "rxjs": "^7.8.2", + "tslib": "^2.8.1", + "zone.js": "~0.15.1" }, "devDependencies": { - "@angular-devkit/build-angular": "^17.3.8", - "@angular/cli": "^17.3.8", - "@angular/compiler-cli": "^17.3.12", - "@ngrx/store-devtools": "^17.2.0", - "@types/jasmine": "~3.6.0", - "@types/jasminewd2": "~2.0.3", - "@types/jwt-decode": "^3.1.0", + "@angular-devkit/build-angular": "^20.3.7", + "@angular/cli": "^20.3.7", + "@angular/compiler-cli": "^20.3.7", + "@ngrx/store-devtools": "^20.1.0", + "@types/jasmine": "~5.1.12", + "@types/jasminewd2": "~2.0.13", + "@types/jest": "^30.0.0", "@types/leaflet": "1.9.17", - "@types/leaflet.fullscreen": "^3.0.2", + "@types/leaflet.fullscreen": "^3.0.3", "@types/leaflet.markercluster": "1.5.3", - "@types/node": "^18.11.1", + "@types/node": "^24.9.1", "@types/proj4": "2.5.5", "@types/proj4leaflet": "1.0.10", - "codelyzer": "^6.0.2", - "eslint": "^7.3.1", - "jasmine-core": "^3.8.0", - "jasmine-spec-reporter": "~5.0.0", - "karma": "~6.4.1", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage-istanbul-reporter": "~3.0.2", - "karma-jasmine": "~4.0.0", - "karma-jasmine-html-reporter": "^1.5.0", + "eslint": "^9.38.0", + "jasmine-core": "^5.12.0", + "jasmine-spec-reporter": "~7.0.0", + "karma": "~6.4.4", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage-istanbul-reporter": "~3.0.3", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "^2.1.0", "leaflet.markercluster": "1.5.3", - "ngrx-store-freeze": "^0.2.4", - "prettier": "^2.0.5", - "protractor": "~7.0.0", - "ts-node": "~8.3.0", + "prettier": "^3.6.2", + "ts-node": "~10.9.2", "tslint-angular": "^3.0.3", "tslint-config-prettier": "^1.18.0", - "typescript": "~5.4.5" + "typescript": "~5.8.3" + } + }, + "node_modules/@algolia/abtesting": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.1.0.tgz", + "integrity": "sha512-sEyWjw28a/9iluA37KLGu8vjxEIlb60uxznfTUmXImy7H5NvbpSO6yYgmgH5KiD7j+zTUUihiST0jEP12IoXow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.35.0.tgz", + "integrity": "sha512-uUdHxbfHdoppDVflCHMxRlj49/IllPwwQ2cQ8DLC4LXr3kY96AHBpW0dMyi6ygkn2MtFCc6BxXCzr668ZRhLBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.35.0.tgz", + "integrity": "sha512-SunAgwa9CamLcRCPnPHx1V2uxdQwJGqb1crYrRWktWUdld0+B2KyakNEeVn5lln4VyeNtW17Ia7V7qBWyM/Skw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.35.0.tgz", + "integrity": "sha512-ipE0IuvHu/bg7TjT2s+187kz/E3h5ssfTtjpg1LbWMgxlgiaZIgTTbyynM7NfpSJSKsgQvCQxWjGUO51WSCu7w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.35.0.tgz", + "integrity": "sha512-UNbCXcBpqtzUucxExwTSfAe8gknAJ485NfPN6o1ziHm6nnxx97piIbcBQ3edw823Tej2Wxu1C0xBY06KgeZ7gA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.35.0.tgz", + "integrity": "sha512-/KWjttZ6UCStt4QnWoDAJ12cKlQ+fkpMtyPmBgSS2WThJQdSV/4UWcqCUqGH7YLbwlj3JjNirCu3Y7uRTClxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.35.0.tgz", + "integrity": "sha512-8oCuJCFf/71IYyvQQC+iu4kgViTODbXDk3m7yMctEncRSRV+u2RtDVlpGGfPlJQOrAY7OONwJlSHkmbbm2Kp/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.35.0.tgz", + "integrity": "sha512-FfmdHTrXhIduWyyuko1YTcGLuicVbhUyRjO3HbXE4aP655yKZgdTIfMhZ/V5VY9bHuxv/fGEh3Od1Lvv2ODNTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.35.0.tgz", + "integrity": "sha512-gPzACem9IL1Co8mM1LKMhzn1aSJmp+Vp434An4C0OBY4uEJRcqsLN3uLBlY+bYvFg8C8ImwM9YRiKczJXRk0XA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.35.0.tgz", + "integrity": "sha512-w9MGFLB6ashI8BGcQoVt7iLgDIJNCn4OIu0Q0giE3M2ItNrssvb8C0xuwJQyTy1OFZnemG0EB1OvXhIHOvQwWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.35.0.tgz", + "integrity": "sha512-AhrVgaaXAb8Ue0u2nuRWwugt0dL5UmRgS9LXe0Hhz493a8KFeZVUE56RGIV3hAa6tHzmAV7eIoqcWTQvxzlJeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.35.0.tgz", + "integrity": "sha512-diY415KLJZ6x1Kbwl9u96Jsz0OstE3asjXtJ9pmk1d+5gPuQ5jQyEsgC+WmEXzlec3iuVszm8AzNYYaqw6B+Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.35.0.tgz", + "integrity": "sha512-uydqnSmpAjrgo8bqhE9N1wgcB98psTRRQXcjc4izwMB7yRl9C8uuAQ/5YqRj04U0mMQ+fdu2fcNF6m9+Z1BzDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.35.0.tgz", + "integrity": "sha512-RgLX78ojYOrThJHrIiPzT4HW3yfQa0D7K+MQ81rhxqaNyNBu4F1r+72LNHYH/Z+y9I1Mrjrd/c/Ue5zfDgAEjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" } }, "node_modules/@ampproject/remapping": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -100,128 +301,128 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1703.17", + "version": "0.2003.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2003.7.tgz", + "integrity": "sha512-NGHLfrNQNjwWwvyQomMM1AqRaqH3UU0TwySJh9XlSc9dC/roB5zD2NjLf98K4LfAIfHvDBwkQ+dMo3F556/Xuw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.17", - "rxjs": "7.8.1" + "@angular-devkit/core": "20.3.7", + "rxjs": "7.8.2" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/architect/node_modules/rxjs": { - "version": "7.8.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/build-angular": { - "version": "17.3.17", + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-20.3.7.tgz", + "integrity": "sha512-KVA6ztqrZz/DKSCk/iV9fz9Af+54YyZs25KwClBi+7/RJIBNml8CZQLW51VxIkbjD9aZdVZdUMkkbQJp5MgY5w==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1703.17", - "@angular-devkit/build-webpack": "0.1703.17", - "@angular-devkit/core": "17.3.17", - "@babel/core": "7.26.10", - "@babel/generator": "7.26.10", - "@babel/helper-annotate-as-pure": "7.25.9", + "@angular-devkit/architect": "0.2003.7", + "@angular-devkit/build-webpack": "0.2003.7", + "@angular-devkit/core": "20.3.7", + "@angular/build": "20.3.7", + "@babel/core": "7.28.3", + "@babel/generator": "7.28.3", + "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", - "@babel/plugin-transform-async-generator-functions": "7.26.8", - "@babel/plugin-transform-async-to-generator": "7.25.9", - "@babel/plugin-transform-runtime": "7.26.10", - "@babel/preset-env": "7.26.9", - "@babel/runtime": "7.26.10", - "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "17.3.17", - "@vitejs/plugin-basic-ssl": "1.1.0", + "@babel/plugin-transform-async-generator-functions": "7.28.0", + "@babel/plugin-transform-async-to-generator": "7.27.1", + "@babel/plugin-transform-runtime": "7.28.3", + "@babel/preset-env": "7.28.3", + "@babel/runtime": "7.28.3", + "@discoveryjs/json-ext": "0.6.3", + "@ngtools/webpack": "20.3.7", "ansi-colors": "4.1.3", - "autoprefixer": "10.4.18", - "babel-loader": "9.1.3", - "babel-plugin-istanbul": "6.1.1", + "autoprefixer": "10.4.21", + "babel-loader": "10.0.0", "browserslist": "^4.21.5", - "copy-webpack-plugin": "11.0.0", - "critters": "0.0.22", - "css-loader": "6.10.0", - "esbuild-wasm": "0.20.1", - "fast-glob": "3.3.2", - "http-proxy-middleware": "2.0.8", - "https-proxy-agent": "7.0.4", - "inquirer": "9.2.15", - "jsonc-parser": "3.2.1", + "copy-webpack-plugin": "13.0.1", + "css-loader": "7.1.2", + "esbuild-wasm": "0.25.9", + "fast-glob": "3.3.3", + "http-proxy-middleware": "3.0.5", + "istanbul-lib-instrument": "6.0.3", + "jsonc-parser": "3.3.1", "karma-source-map-support": "1.4.0", - "less": "4.2.0", - "less-loader": "11.1.0", + "less": "4.4.0", + "less-loader": "12.3.0", "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.1", - "magic-string": "0.30.8", - "mini-css-extract-plugin": "2.8.1", - "mrmime": "2.0.0", - "open": "8.4.2", - "ora": "5.4.1", - "parse5-html-rewriting-stream": "7.0.0", - "picomatch": "4.0.1", - "piscina": "4.4.0", - "postcss": "8.4.35", + "loader-utils": "3.3.1", + "mini-css-extract-plugin": "2.9.4", + "open": "10.2.0", + "ora": "8.2.0", + "picomatch": "4.0.3", + "piscina": "5.1.3", + "postcss": "8.5.6", "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", - "rxjs": "7.8.1", - "sass": "1.71.1", - "sass-loader": "14.1.1", - "semver": "7.6.0", + "rxjs": "7.8.2", + "sass": "1.90.0", + "sass-loader": "16.0.5", + "semver": "7.7.2", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.29.1", + "terser": "5.43.1", "tree-kill": "1.2.2", - "tslib": "2.6.2", - "vite": "~5.4.17", - "watchpack": "2.4.0", - "webpack": "5.94.0", - "webpack-dev-middleware": "6.1.2", - "webpack-dev-server": "4.15.1", - "webpack-merge": "5.10.0", + "tslib": "2.8.1", + "webpack": "5.101.2", + "webpack-dev-middleware": "7.4.2", + "webpack-dev-server": "5.2.2", + "webpack-merge": "6.0.1", "webpack-subresource-integrity": "5.1.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.20.1" + "esbuild": "0.25.9" }, "peerDependencies": { - "@angular/compiler-cli": "^17.0.0", - "@angular/localize": "^17.0.0", - "@angular/platform-server": "^17.0.0", - "@angular/service-worker": "^17.0.0", - "@web/test-runner": "^0.18.0", + "@angular/compiler-cli": "^20.0.0", + "@angular/core": "^20.0.0", + "@angular/localize": "^20.0.0", + "@angular/platform-browser": "^20.0.0", + "@angular/platform-server": "^20.0.0", + "@angular/service-worker": "^20.0.0", + "@angular/ssr": "^20.3.7", + "@web/test-runner": "^0.20.0", "browser-sync": "^3.0.2", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "karma": "^6.3.0", - "ng-packagr": "^17.0.0", + "ng-packagr": "^20.0.0", "protractor": "^7.0.0", - "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=5.2 <5.5" + "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "typescript": ">=5.8 <6.0" }, "peerDependenciesMeta": { + "@angular/core": { + "optional": true + }, "@angular/localize": { "optional": true }, + "@angular/platform-browser": { + "optional": true + }, "@angular/platform-server": { "optional": true }, "@angular/service-worker": { "optional": true }, + "@angular/ssr": { + "optional": true + }, "@web/test-runner": { "optional": true }, @@ -248,420 +449,221 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], + "node_modules/@angular-devkit/build-webpack": { + "version": "0.2003.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2003.7.tgz", + "integrity": "sha512-9CVEUWOzf7sk6eudFEG3pfDT1AScUJ4+ekRFKyD5Q5sZivMjjVFqwQp7YUpHpZusZX6sgpT+Crj5Ydva+I/dvw==", "dev": true, - "optional": true, - "os": [ - "aix" - ], + "license": "MIT", + "dependencies": { + "@angular-devkit/architect": "0.2003.7", + "rxjs": "7.8.2" + }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^5.0.2" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], + "node_modules/@angular-devkit/core": { + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.7.tgz", + "integrity": "sha512-psmcjwYcXve4sLrcdnARc15/Wfd3RpydbtLo9+mViNzk5HQ6L2eEztKl/2QVYMgzZVIa1GfhjwUllVCyLAv3sg==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.3", + "rxjs": "7.8.2", + "source-map": "0.7.6" + }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], + "node_modules/@angular-devkit/schematics": { + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-20.3.7.tgz", + "integrity": "sha512-DUxcQBPKO69p56ZgIdVfxWyLiSjdcUoD6BH9/nWHp0QiqRAR6GcXP4SFax76JPl2WsiCp4hHZ233Hf69AP1xew==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "20.3.7", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "8.2.0", + "rxjs": "7.8.2" + }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], + "node_modules/@angular/animations": { + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.3.7.tgz", + "integrity": "sha512-i655RaL0zmLE3OESUlDnRNBDRIMW/67nTQvMqP6V1cQ42l2+SMJtREsxmX6cWt55/qvvgeytAA6aBN4aerBl5A==", + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/core": "20.3.7" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], + "node_modules/@angular/build": { + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-20.3.7.tgz", + "integrity": "sha512-NHN5JNDqUc0Ux4IZPCe/fpFAnuRHujkxVfRHSqDFW5+jtj2JuW1XO6qlX+kDheFRlj/NvFgTpidKsE9IjpfMWQ==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.2003.7", + "@babel/core": "7.28.3", + "@babel/helper-annotate-as-pure": "7.27.3", + "@babel/helper-split-export-declaration": "7.24.7", + "@inquirer/confirm": "5.1.14", + "@vitejs/plugin-basic-ssl": "2.1.0", + "beasties": "0.3.5", + "browserslist": "^4.23.0", + "esbuild": "0.25.9", + "https-proxy-agent": "7.0.6", + "istanbul-lib-instrument": "6.0.3", + "jsonc-parser": "3.3.1", + "listr2": "9.0.1", + "magic-string": "0.30.17", + "mrmime": "2.0.1", + "parse5-html-rewriting-stream": "8.0.0", + "picomatch": "4.0.3", + "piscina": "5.1.3", + "rollup": "4.52.3", + "sass": "1.90.0", + "semver": "7.7.2", + "source-map-support": "0.5.21", + "tinyglobby": "0.2.14", + "vite": "7.1.11", + "watchpack": "2.4.4" + }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "lmdb": "3.4.2" + }, + "peerDependencies": { + "@angular/compiler": "^20.0.0", + "@angular/compiler-cli": "^20.0.0", + "@angular/core": "^20.0.0", + "@angular/localize": "^20.0.0", + "@angular/platform-browser": "^20.0.0", + "@angular/platform-server": "^20.0.0", + "@angular/service-worker": "^20.0.0", + "@angular/ssr": "^20.3.7", + "karma": "^6.4.0", + "less": "^4.2.0", + "ng-packagr": "^20.0.0", + "postcss": "^8.4.0", + "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "tslib": "^2.3.0", + "typescript": ">=5.8 <6.0", + "vitest": "^3.1.1" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + }, + "@angular/localize": { + "optional": true + }, + "@angular/platform-browser": { + "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 + }, + "vitest": { + "optional": true + } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], + "node_modules/@angular/build/node_modules/@vitejs/plugin-basic-ssl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.1.0.tgz", + "integrity": "sha512-dOxxrhgyDIEUADhb/8OlV9JIqYLgos03YorAueTIeOUskLJSEsfwCByjbu98ctXitUN3znXKp0bYD/WHSudCeA==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "peerDependencies": { + "vite": "^6.0.0 || ^7.0.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@types/node": { - "version": "24.0.4", + "node_modules/@angular/build/node_modules/vite": { + "version": "7.1.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.11.tgz", + "integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==", "dev": true, "license": "MIT", - "optional": true, "peer": true, "dependencies": { - "undici-types": "~7.8.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@vitejs/plugin-basic-ssl": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.6.0" - }, - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" - } - }, - "node_modules/@angular-devkit/build-angular/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, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { - "version": "7.8.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, - "node_modules/@angular-devkit/build-angular/node_modules/vite": { - "version": "5.4.19", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -670,19 +672,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -703,327 +711,202 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, - "node_modules/@angular-devkit/build-angular/node_modules/vite/node_modules/esbuild": { - "version": "0.21.5", + "node_modules/@angular/build/node_modules/vite/node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { - "node": ">=12" + "node": ">=12.0.0" }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/@angular-devkit/build-webpack": { - "version": "0.1703.17", - "dev": true, + "node_modules/@angular/cdk": { + "version": "20.2.10", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-20.2.10.tgz", + "integrity": "sha512-d95C2r3JP11KCahouWmPaxswz/EE7Zn1k8ocoGt70jl33x42Sg96vAHeOpnQ4yfrdA4W7Q+eWB/NqqvAGCzOPQ==", "license": "MIT", + "peer": true, "dependencies": { - "@angular-devkit/architect": "0.1703.17", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "parse5": "^8.0.0", + "tslib": "^2.3.0" }, "peerDependencies": { - "webpack": "^5.30.0", - "webpack-dev-server": "^4.0.0" - } - }, - "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { - "version": "7.8.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" + "@angular/common": "^20.0.0 || ^21.0.0", + "@angular/core": "^20.0.0 || ^21.0.0", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@angular-devkit/core": { - "version": "17.3.17", + "node_modules/@angular/cli": { + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-20.3.7.tgz", + "integrity": "sha512-hNurF7g/e9cDHFBRCKLPSmQJs0n28jZsC3sTl/XuWE8PYtv5egh2EuqrxdruYB5GdANpIqSQNgDGQJrKrk/XnQ==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.1", - "picomatch": "4.0.1", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "7.8.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@angular-devkit/schematics": { - "version": "17.3.17", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "17.3.17", - "jsonc-parser": "3.2.1", - "magic-string": "0.30.8", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/rxjs": { - "version": "7.8.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@angular/animations": { - "version": "17.3.12", - "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0" - }, - "peerDependencies": { - "@angular/core": "17.3.12" - } - }, - "node_modules/@angular/cdk": { - "version": "17.3.10", - "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, - "optionalDependencies": { - "parse5": "^7.1.2" - }, - "peerDependencies": { - "@angular/common": "^17.0.0 || ^18.0.0", - "@angular/core": "^17.0.0 || ^18.0.0", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/cli": { - "version": "17.3.17", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/architect": "0.1703.17", - "@angular-devkit/core": "17.3.17", - "@angular-devkit/schematics": "17.3.17", - "@schematics/angular": "17.3.17", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.3", - "ini": "4.1.2", - "inquirer": "9.2.15", - "jsonc-parser": "3.2.1", - "npm-package-arg": "11.0.1", - "npm-pick-manifest": "9.0.0", - "open": "8.4.2", - "ora": "5.4.1", - "pacote": "17.0.6", - "resolve": "1.22.8", - "semver": "7.6.0", - "symbol-observable": "4.0.0", - "yargs": "17.7.2" + "@angular-devkit/architect": "0.2003.7", + "@angular-devkit/core": "20.3.7", + "@angular-devkit/schematics": "20.3.7", + "@inquirer/prompts": "7.8.2", + "@listr2/prompt-adapter-inquirer": "3.0.1", + "@modelcontextprotocol/sdk": "1.17.3", + "@schematics/angular": "20.3.7", + "@yarnpkg/lockfile": "1.1.0", + "algoliasearch": "5.35.0", + "ini": "5.0.0", + "jsonc-parser": "3.3.1", + "listr2": "9.0.1", + "npm-package-arg": "13.0.0", + "pacote": "21.0.0", + "resolve": "1.22.10", + "semver": "7.7.2", + "yargs": "18.0.0", + "zod": "3.25.76" }, "bin": { "ng": "bin/ng.js" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" } }, "node_modules/@angular/common": { - "version": "17.3.12", + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.7.tgz", + "integrity": "sha512-uf8dXYTJbedk/wudkt2MfbtvN/T97aEZBtOTq8/IFQQZ3722rag6D+Cg76e5hBccROOn+ueGJX2gpxz02phTwA==", "license": "MIT", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "17.3.12", + "@angular/core": "20.3.7", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "17.3.12", + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.7.tgz", + "integrity": "sha512-EouHO15dUsgnFArj0M25R8cOPVoUfiFYSt6iXnMO8+S4dY1fDEmbFqkW5smlP66HL5Gys59Nwb5inejfIWHrLw==", "license": "MIT", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" - }, - "peerDependencies": { - "@angular/core": "17.3.12" - }, - "peerDependenciesMeta": { - "@angular/core": { - "optional": true - } + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, "node_modules/@angular/compiler-cli": { - "version": "17.3.12", + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.3.7.tgz", + "integrity": "sha512-viZwWlwc1BAqryRJE0Wq2WgAxDaW9fuwtYHYrOWnIn9sy9KemKmR6RmU9VRydrwUROOlqK49R9+RC1wQ6sYwqA==", "license": "MIT", + "peer": true, "dependencies": { - "@babel/core": "7.23.9", + "@babel/core": "7.28.3", "@jridgewell/sourcemap-codec": "^1.4.14", - "chokidar": "^3.0.0", + "chokidar": "^4.0.0", "convert-source-map": "^1.5.1", "reflect-metadata": "^0.2.0", "semver": "^7.0.0", "tslib": "^2.3.0", - "yargs": "^17.2.1" + "yargs": "^18.0.0" }, "bin": { "ng-xi18n": "bundles/src/bin/ng_xi18n.js", - "ngc": "bundles/src/bin/ngc.js", - "ngcc": "bundles/ngcc/index.js" + "ngc": "bundles/src/bin/ngc.js" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "17.3.12", - "typescript": ">=5.2 <5.5" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.23.9", - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.9", - "@babel/parser": "^7.23.9", - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.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" + "@angular/compiler": "20.3.7", + "typescript": ">=5.8 <6.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", - "license": "MIT" - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@angular/core": { - "version": "17.3.12", + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.7.tgz", + "integrity": "sha512-2UuYzC2A5SUtu33tYTN411Wk0WilA+2Uld/GP3O6mragw1O7v/M8pMFmbe9TR5Ah/abRJIocWGlNqeztZmQmrw==", "license": "MIT", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { + "@angular/compiler": "20.3.7", "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.14.0" + "zone.js": "~0.15.0" + }, + "peerDependenciesMeta": { + "@angular/compiler": { + "optional": true + }, + "zone.js": { + "optional": true + } } }, "node_modules/@angular/forms": { - "version": "17.3.12", + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.3.7.tgz", + "integrity": "sha512-uOCGCoqXeAWIlQMWiIeed/W8g8h2tk91YemMI+Ce1VQ/36Xfft40Bouz4eKcvJV6kLXGygdpWjzFGz32CE+3Og==", "license": "MIT", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "17.3.12", - "@angular/core": "17.3.12", - "@angular/platform-browser": "17.3.12", + "@angular/common": "20.3.7", + "@angular/core": "20.3.7", + "@angular/platform-browser": "20.3.7", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/localize": { - "version": "17.3.12", + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-20.3.7.tgz", + "integrity": "sha512-FYuuwU9ujiVT+0xjMIutaUT2PErV4AvxeAPWMlYRA1/yQxqn1VyNUd6kHPjAV+yrZg9Q0MDco2/c0Lh8rmAhSA==", "license": "MIT", + "peer": true, "dependencies": { - "@babel/core": "7.23.9", + "@babel/core": "7.28.3", "@types/babel__core": "7.20.5", - "fast-glob": "3.3.2", - "yargs": "^17.2.1" + "tinyglobby": "^0.2.12", + "yargs": "^18.0.0" }, "bin": { "localize-extract": "tools/bundles/src/extract/cli.js", @@ -1031,140 +914,61 @@ "localize-translate": "tools/bundles/src/translate/cli.js" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "17.3.12", - "@angular/compiler-cli": "17.3.12" + "@angular/compiler": "20.3.7", + "@angular/compiler-cli": "20.3.7" } }, - "node_modules/@angular/localize/node_modules/@babel/core": { - "version": "7.23.9", + "node_modules/@angular/material": { + "version": "20.2.10", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-20.2.10.tgz", + "integrity": "sha512-WkJfUu7KiQY2lqHjMZtEKBG653sPmky0nytTMASsfQ/xUs56W3CAAEOuKhSyCNKsNeFJZS/NgJnvlpRzcE5k6g==", "license": "MIT", + "peer": true, "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.9", - "@babel/parser": "^7.23.9", - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.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", - "license": "MIT" - }, - "node_modules/@angular/localize/node_modules/semver": { - "version": "6.3.1", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@angular/material": { - "version": "17.3.10", - "license": "MIT", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/auto-init": "15.0.0-canary.7f224ddd4.0", - "@material/banner": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/button": "15.0.0-canary.7f224ddd4.0", - "@material/card": "15.0.0-canary.7f224ddd4.0", - "@material/checkbox": "15.0.0-canary.7f224ddd4.0", - "@material/chips": "15.0.0-canary.7f224ddd4.0", - "@material/circular-progress": "15.0.0-canary.7f224ddd4.0", - "@material/data-table": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dialog": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/drawer": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/fab": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/floating-label": "15.0.0-canary.7f224ddd4.0", - "@material/form-field": "15.0.0-canary.7f224ddd4.0", - "@material/icon-button": "15.0.0-canary.7f224ddd4.0", - "@material/image-list": "15.0.0-canary.7f224ddd4.0", - "@material/layout-grid": "15.0.0-canary.7f224ddd4.0", - "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", - "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", - "@material/list": "15.0.0-canary.7f224ddd4.0", - "@material/menu": "15.0.0-canary.7f224ddd4.0", - "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", - "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", - "@material/radio": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/segmented-button": "15.0.0-canary.7f224ddd4.0", - "@material/select": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/slider": "15.0.0-canary.7f224ddd4.0", - "@material/snackbar": "15.0.0-canary.7f224ddd4.0", - "@material/switch": "15.0.0-canary.7f224ddd4.0", - "@material/tab": "15.0.0-canary.7f224ddd4.0", - "@material/tab-bar": "15.0.0-canary.7f224ddd4.0", - "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", - "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", - "@material/textfield": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tooltip": "15.0.0-canary.7f224ddd4.0", - "@material/top-app-bar": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/animations": "^17.0.0 || ^18.0.0", - "@angular/cdk": "17.3.10", - "@angular/common": "^17.0.0 || ^18.0.0", - "@angular/core": "^17.0.0 || ^18.0.0", - "@angular/forms": "^17.0.0 || ^18.0.0", - "@angular/platform-browser": "^17.0.0 || ^18.0.0", + "@angular/cdk": "20.2.10", + "@angular/common": "^20.0.0 || ^21.0.0", + "@angular/core": "^20.0.0 || ^21.0.0", + "@angular/forms": "^20.0.0 || ^21.0.0", + "@angular/platform-browser": "^20.0.0 || ^21.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/material-moment-adapter": { - "version": "17.3.10", + "version": "20.2.10", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-20.2.10.tgz", + "integrity": "sha512-KhCHtOfTA2gN1vvNt1tAi94g2gls8h7Z/UZCq8BHY+tkJa5+rGvc/v+xne5apFrme159GVYms73pGYvTxvkBhQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": "^17.0.0 || ^18.0.0", - "@angular/material": "17.3.10", + "@angular/core": "^20.0.0 || ^21.0.0", + "@angular/material": "20.2.10", "moment": "^2.18.1" } }, "node_modules/@angular/platform-browser": { - "version": "17.3.12", + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.7.tgz", + "integrity": "sha512-AbLtyR7fVEGDYyrz95dP2pc69J5XIjLLsFNAuNQPzNX02WPoAxtrWrNY6UnTzGoSrCc5F52hiL2Uo6yPZTiJcg==", "license": "MIT", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/animations": "17.3.12", - "@angular/common": "17.3.12", - "@angular/core": "17.3.12" + "@angular/animations": "20.3.7", + "@angular/common": "20.3.7", + "@angular/core": "20.3.7" }, "peerDependenciesMeta": { "@angular/animations": { @@ -1173,39 +977,45 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "17.3.12", + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-20.3.7.tgz", + "integrity": "sha512-4TEPA12183cMeVCzuU/Rmuk5RuIgsunTbjgx0o+ymxvYyULOxKDlhZ4hGDKzmRCOu6s3ZeEs4XbgaLP6pK+Kxg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "17.3.12", - "@angular/compiler": "17.3.12", - "@angular/core": "17.3.12", - "@angular/platform-browser": "17.3.12" + "@angular/common": "20.3.7", + "@angular/compiler": "20.3.7", + "@angular/core": "20.3.7", + "@angular/platform-browser": "20.3.7" } }, "node_modules/@angular/router": { - "version": "17.3.12", + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-20.3.7.tgz", + "integrity": "sha512-Lq7mCNcLP1npmNh2JlNEe02YS2jNnaLnCy/t//o+Qq0c6DGV78JRl7pHubiB2R6XXlgvOcZWg88v94Li+y85Iw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "17.3.12", - "@angular/core": "17.3.12", - "@angular/platform-browser": "17.3.12", + "@angular/common": "20.3.7", + "@angular/core": "20.3.7", + "@angular/platform-browser": "20.3.7", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@auth0/angular-jwt": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@auth0/angular-jwt/-/angular-jwt-5.2.0.tgz", + "integrity": "sha512-9FS2L0QwGNlxA/zgeehCcsR9CZscouyXkoIj1fODM36A8BLfdzg9k9DWAXUQ2Drjk0AypGAFzeNZR4vsLMhdeQ==", "license": "MIT", "dependencies": { "tslib": "^2.0.0" @@ -1216,6 +1026,8 @@ }, "node_modules/@babel/code-frame": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", @@ -1227,26 +1039,31 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.27.5", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", + "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.26.10", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz", + "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", "license": "MIT", + "peer": true, "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", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.3", + "@babel/parser": "^7.28.3", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1263,23 +1080,29 @@ }, "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/@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/@babel/generator": { - "version": "7.26.10", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.10", - "@babel/types": "^7.26.10", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -1287,11 +1110,13 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -1299,6 +1124,8 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "license": "MIT", "dependencies": { "@babel/compat-data": "^7.27.2", @@ -1313,22 +1140,26 @@ }, "node_modules/@babel/helper-compilation-targets/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/@babel/helper-create-class-features-plugin": { - "version": "7.27.1", + "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==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-member-expression-to-functions": "^7.27.1", "@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.27.1", + "@babel/traverse": "^7.28.3", "semver": "^6.3.1" }, "engines": { @@ -1338,19 +1169,10 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-create-class-features-plugin/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": { @@ -1359,6 +1181,8 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -1373,19 +1197,10 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-create-regexp-features-plugin/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": { @@ -1393,22 +1208,35 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.4", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "resolve": "^1.22.10" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -1421,6 +1249,8 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "license": "MIT", "dependencies": { "@babel/traverse": "^7.27.1", @@ -1431,12 +1261,14 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.27.3", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.3" + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -1447,6 +1279,8 @@ }, "node_modules/@babel/helper-optimise-call-expression": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, "license": "MIT", "dependencies": { @@ -1458,6 +1292,8 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, "license": "MIT", "engines": { @@ -1466,6 +1302,8 @@ }, "node_modules/@babel/helper-remap-async-to-generator": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dev": true, "license": "MIT", "dependencies": { @@ -1480,19 +1318,10 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-replace-supers": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", "dev": true, "license": "MIT", "dependencies": { @@ -1509,6 +1338,8 @@ }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, "license": "MIT", "dependencies": { @@ -1521,6 +1352,8 @@ }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, "license": "MIT", "dependencies": { @@ -1532,6 +1365,8 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1539,6 +1374,8 @@ }, "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==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1546,192 +1383,132 @@ }, "node_modules/@babel/helper-validator-option": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.27.1", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", + "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.1", - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.27.6", + "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.27.6" + "@babel/types": "^7.28.4" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.25.9", - "dev": true, + "node_modules/@babel/parser": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/types": "^7.28.4" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=6.9.0" + "node": ">=6.0.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", + "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==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, "engines": { - "node": ">=0.8.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" } }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.27.5", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.3" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.27.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.27.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.27.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.27.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.27.1", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", + "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -1742,6 +1519,8 @@ }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, "license": "MIT", "engines": { @@ -1753,6 +1532,8 @@ }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", "dev": true, "license": "MIT", "dependencies": { @@ -1767,6 +1548,8 @@ }, "node_modules/@babel/plugin-syntax-import-attributes": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", "dev": true, "license": "MIT", "dependencies": { @@ -1781,6 +1564,8 @@ }, "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, "license": "MIT", "dependencies": { @@ -1796,6 +1581,8 @@ }, "node_modules/@babel/plugin-transform-arrow-functions": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dev": true, "license": "MIT", "dependencies": { @@ -1809,13 +1596,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.26.8", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.26.8" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -1825,13 +1614,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1842,6 +1633,8 @@ }, "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", "dev": true, "license": "MIT", "dependencies": { @@ -1855,7 +1648,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.27.5", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.4.tgz", + "integrity": "sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==", "dev": true, "license": "MIT", "dependencies": { @@ -1870,6 +1665,8 @@ }, "node_modules/@babel/plugin-transform-class-properties": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", "dev": true, "license": "MIT", "dependencies": { @@ -1884,11 +1681,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.27.1", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", + "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.28.3", "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { @@ -1899,16 +1698,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.27.1", + "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": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.27.1", - "globals": "^11.1.0" + "@babel/traverse": "^7.28.4" }, "engines": { "node": ">=6.9.0" @@ -1917,19 +1718,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", "dev": true, "license": "MIT", "dependencies": { @@ -1944,11 +1736,14 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.27.3", + "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==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -1959,6 +1754,8 @@ }, "node_modules/@babel/plugin-transform-dotall-regex": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", "dev": true, "license": "MIT", "dependencies": { @@ -1974,6 +1771,8 @@ }, "node_modules/@babel/plugin-transform-duplicate-keys": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1988,6 +1787,8 @@ }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2003,6 +1804,8 @@ }, "node_modules/@babel/plugin-transform-dynamic-import": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", "dev": true, "license": "MIT", "dependencies": { @@ -2015,8 +1818,27 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -2031,6 +1853,8 @@ }, "node_modules/@babel/plugin-transform-export-namespace-from": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2045,6 +1869,8 @@ }, "node_modules/@babel/plugin-transform-for-of": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dev": true, "license": "MIT", "dependencies": { @@ -2060,6 +1886,8 @@ }, "node_modules/@babel/plugin-transform-function-name": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2076,6 +1904,8 @@ }, "node_modules/@babel/plugin-transform-json-strings": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2090,6 +1920,8 @@ }, "node_modules/@babel/plugin-transform-literals": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dev": true, "license": "MIT", "dependencies": { @@ -2104,6 +1936,8 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -2118,6 +1952,8 @@ }, "node_modules/@babel/plugin-transform-member-expression-literals": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2132,6 +1968,8 @@ }, "node_modules/@babel/plugin-transform-modules-amd": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dev": true, "license": "MIT", "dependencies": { @@ -2147,6 +1985,8 @@ }, "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", "dev": true, "license": "MIT", "dependencies": { @@ -2162,6 +2002,8 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -2179,6 +2021,8 @@ }, "node_modules/@babel/plugin-transform-modules-umd": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dev": true, "license": "MIT", "dependencies": { @@ -2194,6 +2038,8 @@ }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", "dev": true, "license": "MIT", "dependencies": { @@ -2209,6 +2055,8 @@ }, "node_modules/@babel/plugin-transform-new-target": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2223,6 +2071,8 @@ }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", "dev": true, "license": "MIT", "dependencies": { @@ -2237,6 +2087,8 @@ }, "node_modules/@babel/plugin-transform-numeric-separator": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", "dev": true, "license": "MIT", "dependencies": { @@ -2250,14 +2102,17 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.27.3", + "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": { "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.27.3", - "@babel/plugin-transform-parameters": "^7.27.1" + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.4" }, "engines": { "node": ">=6.9.0" @@ -2268,6 +2123,8 @@ }, "node_modules/@babel/plugin-transform-object-super": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dev": true, "license": "MIT", "dependencies": { @@ -2283,6 +2140,8 @@ }, "node_modules/@babel/plugin-transform-optional-catch-binding": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2297,6 +2156,8 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -2311,7 +2172,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.27.1", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dev": true, "license": "MIT", "dependencies": { @@ -2326,6 +2189,8 @@ }, "node_modules/@babel/plugin-transform-private-methods": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", "dev": true, "license": "MIT", "dependencies": { @@ -2341,6 +2206,8 @@ }, "node_modules/@babel/plugin-transform-private-property-in-object": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2355,19 +2222,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-property-literals": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2381,7 +2239,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.27.5", + "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": { @@ -2396,6 +2256,8 @@ }, "node_modules/@babel/plugin-transform-regexp-modifiers": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", "dev": true, "license": "MIT", "dependencies": { @@ -2411,6 +2273,8 @@ }, "node_modules/@babel/plugin-transform-reserved-words": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", "dev": true, "license": "MIT", "dependencies": { @@ -2424,15 +2288,17 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.26.10", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.3.tgz", + "integrity": "sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.26.5", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.11.0", - "babel-plugin-polyfill-regenerator": "^0.6.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", "semver": "^6.3.1" }, "engines": { @@ -2444,6 +2310,8 @@ }, "node_modules/@babel/plugin-transform-runtime/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": { @@ -2452,6 +2320,8 @@ }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2466,6 +2336,8 @@ }, "node_modules/@babel/plugin-transform-spread": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2481,6 +2353,8 @@ }, "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", "dev": true, "license": "MIT", "dependencies": { @@ -2495,6 +2369,8 @@ }, "node_modules/@babel/plugin-transform-template-literals": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "dev": true, "license": "MIT", "dependencies": { @@ -2509,6 +2385,8 @@ }, "node_modules/@babel/plugin-transform-typeof-symbol": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", "dev": true, "license": "MIT", "dependencies": { @@ -2523,6 +2401,8 @@ }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", "dev": true, "license": "MIT", "dependencies": { @@ -2537,6 +2417,8 @@ }, "node_modules/@babel/plugin-transform-unicode-property-regex": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2552,6 +2434,8 @@ }, "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dev": true, "license": "MIT", "dependencies": { @@ -2567,6 +2451,8 @@ }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", "dev": true, "license": "MIT", "dependencies": { @@ -2581,78 +2467,81 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.9", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.3.tgz", + "integrity": "sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.8", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@babel/compat-data": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.26.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.26.8", - "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.26.5", - "@babel/plugin-transform-block-scoping": "^7.25.9", - "@babel/plugin-transform-class-properties": "^7.25.9", - "@babel/plugin-transform-class-static-block": "^7.26.0", - "@babel/plugin-transform-classes": "^7.25.9", - "@babel/plugin-transform-computed-properties": "^7.25.9", - "@babel/plugin-transform-destructuring": "^7.25.9", - "@babel/plugin-transform-dotall-regex": "^7.25.9", - "@babel/plugin-transform-duplicate-keys": "^7.25.9", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.26.3", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.26.9", - "@babel/plugin-transform-function-name": "^7.25.9", - "@babel/plugin-transform-json-strings": "^7.25.9", - "@babel/plugin-transform-literals": "^7.25.9", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", - "@babel/plugin-transform-member-expression-literals": "^7.25.9", - "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.26.3", - "@babel/plugin-transform-modules-systemjs": "^7.25.9", - "@babel/plugin-transform-modules-umd": "^7.25.9", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", - "@babel/plugin-transform-numeric-separator": "^7.25.9", - "@babel/plugin-transform-object-rest-spread": "^7.25.9", - "@babel/plugin-transform-object-super": "^7.25.9", - "@babel/plugin-transform-optional-catch-binding": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9", - "@babel/plugin-transform-private-methods": "^7.25.9", - "@babel/plugin-transform-private-property-in-object": "^7.25.9", - "@babel/plugin-transform-property-literals": "^7.25.9", - "@babel/plugin-transform-regenerator": "^7.25.9", - "@babel/plugin-transform-regexp-modifiers": "^7.26.0", - "@babel/plugin-transform-reserved-words": "^7.25.9", - "@babel/plugin-transform-shorthand-properties": "^7.25.9", - "@babel/plugin-transform-spread": "^7.25.9", - "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.26.8", - "@babel/plugin-transform-typeof-symbol": "^7.26.7", - "@babel/plugin-transform-unicode-escapes": "^7.25.9", - "@babel/plugin-transform-unicode-property-regex": "^7.25.9", - "@babel/plugin-transform-unicode-regex": "^7.25.9", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.0", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.28.3", + "@babel/plugin-transform-classes": "^7.28.3", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.28.0", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.3", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.11.0", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.40.0", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", "semver": "^6.3.1" }, "engines": { @@ -2664,6 +2553,8 @@ }, "node_modules/@babel/preset-env/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": { @@ -2672,6 +2563,8 @@ }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "license": "MIT", "dependencies": { @@ -2684,18 +2577,19 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.10", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz", + "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==", "dev": true, "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", @@ -2707,37 +2601,27 @@ } }, "node_modules/@babel/traverse": { - "version": "7.27.4", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", + "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.3", - "@babel/parser": "^7.27.4", + "@babel/generator": "^7.28.3", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.4", "@babel/template": "^7.27.2", - "@babel/types": "^7.27.3", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.27.5", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.27.5", - "@babel/types": "^7.27.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" + "@babel/types": "^7.28.4", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.27.6", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -2749,1430 +2633,1599 @@ }, "node_modules/@colors/colors": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, "license": "MIT", "engines": { "node": ">=0.1.90" } }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=14.17.0" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", + "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", "cpu": [ - "x64" + "ppc64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "win32" + "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.3", + "node_modules/@esbuild/android-arm": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", + "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=18" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", + "node_modules/@esbuild/android-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", + "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", + "node_modules/@esbuild/android-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", + "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", + "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "node_modules/@fortawesome/angular-fontawesome": { - "version": "0.14.1", + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", + "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "peerDependencies": { - "@angular/core": "^17.0.0", - "@fortawesome/fontawesome-svg-core": "~1.2.27 || ~1.3.0-beta2 || ^6.1.0" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@fortawesome/fontawesome-common-types": { - "version": "0.2.36", - "hasInstallScript": true, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", + "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/@fortawesome/fontawesome-free": { - "version": "5.15.4", - "hasInstallScript": true, - "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", + "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "1.2.36", - "hasInstallScript": true, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", + "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@fortawesome/fontawesome-common-types": "^0.2.36" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "5.15.4", - "hasInstallScript": true, - "license": "(CC-BY-4.0 AND MIT)", - "dependencies": { - "@fortawesome/fontawesome-common-types": "^0.2.36" - }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", + "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", + "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10.10.0" + "node": ">=18" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", + "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", + "cpu": [ + "loong64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", + "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", + "cpu": [ + "mips64el" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", + "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", + "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", + "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", + "node_modules/@esbuild/linux-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", + "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=18" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", + "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", + "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", + "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6.0.0" + "node": ">=18" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", + "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6.0.0" + "node": ">=18" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", + "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], "engines": { - "node": ">=6.0.0" + "node": ">=18" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", + "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", + "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", + "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@ljharb/through": { - "version": "2.3.14", + "node_modules/@esbuild/win32-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", + "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.4" + "node": ">=18" } }, - "node_modules/@material/animation": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.1.0" + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@material/auto-init": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@material/banner": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, "license": "MIT", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/button": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@material/base": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.1.0" + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@material/button": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", + "node_modules/@eslint/config-helpers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.1.tgz", + "integrity": "sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@eslint/core": "^0.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@material/card": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", + "node_modules/@eslint/core": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@material/checkbox": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, "license": "MIT", "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/chips": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/checkbox": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "safevalues": "^0.3.4", - "tslib": "^2.1.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@material/circular-progress": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "license": "MIT", "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@material/data-table": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/checkbox": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/icon-button": "15.0.0-canary.7f224ddd4.0", - "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", - "@material/list": "15.0.0-canary.7f224ddd4.0", - "@material/menu": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/select": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" }, - "node_modules/@material/density": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@eslint/js": { + "version": "9.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", + "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.1.0" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" } }, - "node_modules/@material/dialog": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/button": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/icon-button": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@material/dom": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", + "node_modules/@eslint/plugin-kit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@eslint/core": "^0.16.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@material/drawer": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@fortawesome/angular-fontawesome": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-3.0.0.tgz", + "integrity": "sha512-+8Dd6DoJnqArfrZ5NvjHyRL64IIkTigXclbOOcFdYQ8/WFERQUDaEU6SAV8Q0JBpJhMS1McED7YCOCAE6SIVyA==", "license": "MIT", "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/list": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@fortawesome/fontawesome-svg-core": "^7.0.0", + "tslib": "^2.8.1" + }, + "peerDependencies": { + "@angular/core": "^20.0.0" } }, - "node_modules/@material/elevation": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-7.1.0.tgz", + "integrity": "sha512-l/BQM7fYntsCI//du+6sEnHOP6a74UixFyOYUyz2DLMXKx+6DEhfR3F2NYGE45XH1JJuIamacb4IZs9S0ZOWLA==", "license": "MIT", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "engines": { + "node": ">=6" } }, - "node_modules/@material/fab": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "node_modules/@fortawesome/fontawesome-free": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-7.1.0.tgz", + "integrity": "sha512-+WxNld5ZCJHvPQCr/GnzCTVREyStrAJjisUPtUxG5ngDA8TMlPnKp6dddlTpai4+1GNmltAeuk1hJEkBohwZYA==", + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "engines": { + "node": ">=6" } }, - "node_modules/@material/feature-targeting": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-7.1.0.tgz", + "integrity": "sha512-fNxRUk1KhjSbnbuBxlWSnBLKLBNun52ZBTcs22H/xEEzM6Ap81ZFTQ4bZBxVQGQgVY0xugKGoRcCbaKjLQ3XZA==", "license": "MIT", "dependencies": { - "tslib": "^2.1.0" + "@fortawesome/fontawesome-common-types": "7.1.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@material/floating-label": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-7.1.0.tgz", + "integrity": "sha512-Udu3K7SzAo9N013qt7qmm22/wo2hADdheXtBfxFTecp+ogsc0caQNRKEb7pkvvagUGOpG9wJC1ViH6WXs8oXIA==", + "license": "(CC-BY-4.0 AND MIT)", "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@fortawesome/fontawesome-common-types": "7.1.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@material/focus-ring": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", - "dependencies": { - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0" + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" } }, - "node_modules/@material/form-field": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" } }, - "node_modules/@material/icon-button": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@material/image-list": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@material/layout-grid": { - "version": "15.0.0-canary.7f224ddd4.0", + "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", - "dependencies": { - "tslib": "^2.1.0" + "engines": { + "node": ">=18" } }, - "node_modules/@material/line-ripple": { - "version": "15.0.0-canary.7f224ddd4.0", + "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": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@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/@material/linear-progress": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@inquirer/confirm": { + "version": "5.1.14", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.14.tgz", + "integrity": "sha512-5yR4IBfe0kXe59r1YCTG8WXkUbl7Z35HK87Sw+WUyGD8wNUx7JvY7laahzeytyE1oLn74bQnL7hstctQxisQ8Q==", + "dev": true, "license": "MIT", "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@material/list": { - "version": "15.0.0-canary.7f224ddd4.0", + "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": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@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/@material/menu": { - "version": "15.0.0-canary.7f224ddd4.0", + "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": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/list": "15.0.0-canary.7f224ddd4.0", - "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/menu-surface": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@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/@material/notched-outline": { - "version": "15.0.0-canary.7f224ddd4.0", + "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": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/floating-label": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@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/@material/progress-indicator": { - "version": "15.0.0-canary.7f224ddd4.0", + "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": { - "tslib": "^2.1.0" + "chardet": "^2.1.0", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@material/radio": { - "version": "15.0.0-canary.7f224ddd4.0", + "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", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "engines": { + "node": ">=18" } }, - "node_modules/@material/ripple": { - "version": "15.0.0-canary.7f224ddd4.0", + "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": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@inquirer/core": "^10.3.0", + "@inquirer/type": "^3.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@material/rtl": { - "version": "15.0.0-canary.7f224ddd4.0", + "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": { - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@inquirer/core": "^10.3.0", + "@inquirer/type": "^3.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@material/segmented-button": { - "version": "15.0.0-canary.7f224ddd4.0", + "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": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/select": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/floating-label": "15.0.0-canary.7f224ddd4.0", - "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", - "@material/list": "15.0.0-canary.7f224ddd4.0", - "@material/menu": "15.0.0-canary.7f224ddd4.0", - "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", - "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@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/@material/shape": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@inquirer/prompts": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.2.tgz", + "integrity": "sha512-nqhDw2ZcAUrKNPwhjinJny903bRhI0rQhiDz1LksjeRxqa36i3l75+4iXbOy0rlDpLJGxqtgoPavQjmmyS5UJw==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@inquirer/checkbox": "^4.2.1", + "@inquirer/confirm": "^5.1.14", + "@inquirer/editor": "^4.2.17", + "@inquirer/expand": "^4.0.17", + "@inquirer/input": "^4.2.1", + "@inquirer/number": "^3.0.17", + "@inquirer/password": "^4.0.17", + "@inquirer/rawlist": "^4.1.5", + "@inquirer/search": "^3.1.0", + "@inquirer/select": "^4.3.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@material/slider": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@inquirer/rawlist": { + "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": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@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/@material/snackbar": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@inquirer/search": { + "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": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/button": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/icon-button": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@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/@material/switch": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@inquirer/select": { + "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": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "safevalues": "^0.3.4", - "tslib": "^2.1.0" + "@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/@material/tab": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@inquirer/type": { + "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", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@material/tab-bar": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/tab": "15.0.0-canary.7f224ddd4.0", - "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", - "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "engines": { + "node": "20 || >=22" } }, - "node_modules/@material/tab-indicator": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "dev": true, "license": "MIT", "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" } }, - "node_modules/@material/tab-scroller": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/tab": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@material/textfield": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/floating-label": "15.0.0-canary.7f224ddd4.0", - "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", - "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "node_modules/@isaacs/cliui/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/@material/theme": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "license": "MIT", "dependencies": { - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@material/tokens": { - "version": "15.0.0-canary.7f224ddd4.0", + "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", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, "license": "MIT", "dependencies": { - "@material/elevation": "15.0.0-canary.7f224ddd4.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@material/tooltip": { - "version": "15.0.0-canary.7f224ddd4.0", - "license": "MIT", + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/button": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "safevalues": "^0.3.4", - "tslib": "^2.1.0" + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@material/top-app-bar": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, "license": "MIT", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "engines": { + "node": ">=8" } }, - "node_modules/@material/touch-target": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, "license": "MIT", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@material/typography": { - "version": "15.0.0-canary.7f224ddd4.0", + "node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, "license": "MIT", "dependencies": { - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@ng-bootstrap/ng-bootstrap": { - "version": "16.0.0", + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/common": "^17.0.0", - "@angular/core": "^17.0.0", - "@angular/forms": "^17.0.0", - "@angular/localize": "^17.0.0", - "@popperjs/core": "^2.11.8", - "rxjs": "^6.5.3 || ^7.4.0" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@ngrx/store": { - "version": "17.2.0", + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "tslib": "^2.0.0" + "@types/node": "*", + "jest-regex-util": "30.0.1" }, - "peerDependencies": { - "@angular/core": "^17.0.0", - "rxjs": "^6.5.3 || ^7.5.0" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@ngrx/store-devtools": { - "version": "17.2.0", + "node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.0.0" + "@sinclair/typebox": "^0.34.0" }, - "peerDependencies": { - "@ngrx/store": "17.2.0", - "rxjs": "^6.5.3 || ^7.5.0" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@ngtools/webpack": { - "version": "17.3.17", + "node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, "license": "MIT", - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, - "peerDependencies": { - "@angular/compiler-cli": "^17.0.0", - "typescript": ">=5.2 <5.5", - "webpack": "^5.54.0" - } - }, - "node_modules/@ngx-translate/core": { - "version": "15.0.0", - "license": "SEE LICENSE IN LICENSE", "engines": { - "node": "^16.13.0 || >=18.10.0" - }, - "peerDependencies": { - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", - "rxjs": "^6.5.5 || ^7.4.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@ngx-translate/http-loader": { - "version": "6.0.0", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "license": "MIT", "dependencies": { - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@angular/common": ">=10.0.0", - "@ngx-translate/core": ">=13.0.0", - "rxjs": ">=6.5.3" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, "engines": { - "node": ">= 8" + "node": ">=6.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 8" + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "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": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@npmcli/agent": { - "version": "2.2.2", + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", "dev": true, - "license": "ISC", - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.3" - }, + "license": "Apache-2.0", "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "10.4.3", - "dev": true, - "license": "ISC" - }, - "node_modules/@npmcli/fs": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "semver": "^7.3.5" + "node": ">=10.0" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git": { - "version": "5.0.8", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", - "ini": "^4.1.3", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^4.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^4.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/ini": { - "version": "4.1.3", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "10.4.3", - "dev": true, - "license": "ISC" - }, - "node_modules/@npmcli/git/node_modules/proc-log": { - "version": "4.2.0", + "node_modules/@jsonjoy.com/buffers": { + "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": "ISC", + "license": "Apache-2.0", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" + "node": ">=10.0" }, - "bin": { - "node-which": "bin/which.js" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, - "engines": { - "node": "^16.13.0 || >=18.0.0" + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "2.1.0", + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", "dev": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" }, - "bin": { - "installed-package-contents": "bin/index.js" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@npmcli/package-json": { - "version": "5.2.1", + "node_modules/@jsonjoy.com/json-pack": { + "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": "ISC", + "license": "Apache-2.0", "dependencies": { - "@npmcli/git": "^5.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^4.0.0", - "semver": "^7.5.3" + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/package-json/node_modules/brace-expansion": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "10.4.5", + "node_modules/@jsonjoy.com/json-pointer": { + "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": "ISC", + "license": "Apache-2.0", "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" + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": ">=10.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@npmcli/package-json/node_modules/minimatch": { - "version": "9.0.5", + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^2.0.1" + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@npmcli/package-json/node_modules/proc-log": { - "version": "4.2.0", + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", + "license": "MIT" + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/@npmcli/promise-spawn": { - "version": "7.0.2", + "node_modules/@listr2/prompt-adapter-inquirer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-3.0.1.tgz", + "integrity": "sha512-3XFmGwm3u6ioREG+ynAQB7FoxfajgQnMhIu8wC5eo/Lsih4aKDg0VuIMGaOsYn7hJSJagSeaD4K8yfpkEoDEmA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "which": "^4.0.0" + "@inquirer/type": "^3.0.7" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=20.0.0" + }, + "peerDependencies": { + "@inquirer/prompts": ">= 3 < 8", + "listr2": "9.0.1" } }, - "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.1", + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.2.tgz", + "integrity": "sha512-NK80WwDoODyPaSazKbzd3NEJ3ygePrkERilZshxBViBARNz21rmediktGHExoj9n5t9+ChlgLlxecdFKLCuCKg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "4.0.0", + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.2.tgz", + "integrity": "sha512-zevaowQNmrp3U7Fz1s9pls5aIgpKRsKb3dZWDINtLiozh3jZI9fBrI19lYYBxqdyiIyNdlyiidPnwPShj4aK+w==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@npmcli/redact": { - "version": "1.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script": { - "version": "7.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^10.0.0", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/isexe": { - "version": "3.1.1", + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.2.tgz", + "integrity": "sha512-OmHCULY17rkx/RoCoXlzU7LyR8xqrksgdYWwtYa14l/sseezZ8seKWXcogHcjulBddER5NnEFV4L/Jtr2nyxeg==", + "cpu": [ + "arm" + ], "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "4.0.0", + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.2.tgz", + "integrity": "sha512-ZBEfbNZdkneebvZs98Lq30jMY8V9IJzckVeigGivV7nTHJc+89Ctomp1kAIWKlwIG0ovCDrFI448GzFPORANYg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.2.tgz", + "integrity": "sha512-vL9nM17C77lohPYE4YaAQvfZCSVJSryE4fXdi8M7uWPBnU+9DJabgKVAeyDb84ZM2vcFseoBE4/AagVtJeRE7g==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", "optional": true, - "engines": { - "node": ">=14" - } + "os": [ + "linux" + ] }, - "node_modules/@popperjs/core": { - "version": "2.11.8", + "node_modules/@lmdb/lmdb-win32-arm64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.2.tgz", + "integrity": "sha512-SXWjdBfNDze4ZPeLtYIzsIeDJDJ/SdsA0pEXcUBayUIMO0FQBHfVZZyHXQjjHr4cvOAzANBgIiqaXRwfMhzmLw==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.44.0", + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.2.tgz", + "integrity": "sha512-IY+r3bxKW6Q6sIPiMC0L533DEfRJSXibjSI3Ft/w9Q8KQBNqEIvUFXt+09wV8S5BRk0a8uSF19YWxuRwEfI90g==", "cpu": [ "x64" ], @@ -4183,2472 +4236,4022 @@ "win32" ] }, - "node_modules/@schematics/angular": { - "version": "17.3.17", + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.3.tgz", + "integrity": "sha512-JPwUKWSsbzx+DLFznf/QZ32Qa+ptfbUlHhRLrBQBAFu9iI1iYvizM4p+zhhRDceSsPutXp4z+R/HPVphlIiclg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.17", - "@angular-devkit/schematics": "17.3.17", - "jsonc-parser": "3.2.1" + "ajv": "^6.12.6", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.0.1", + "express-rate-limit": "^7.5.0", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.24.1" }, "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=18" } }, - "node_modules/@sigstore/bundle": { - "version": "2.3.2", + "node_modules/@modelcontextprotocol/sdk/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@sigstore/core": { - "version": "1.1.0", + "node_modules/@modelcontextprotocol/sdk/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.3.3", + "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" + ], "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@sigstore/sign": { - "version": "2.3.2", + "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": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "make-fetch-happen": "^13.0.1", - "proc-log": "^4.2.0", - "promise-retry": "^2.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@sigstore/sign/node_modules/proc-log": { - "version": "4.2.0", + "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": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@sigstore/tuf": { - "version": "2.3.4", + "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": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2", - "tuf-js": "^2.2.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@sigstore/verify": { - "version": "1.2.1", + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.1.0", - "@sigstore/protobuf-specs": "^0.3.2" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.2", + "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" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@tufjs/canonical-json": { - "version": "2.0.0", + "node_modules/@napi-rs/nice": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.1.1.tgz", + "integrity": "sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==", "dev": true, "license": "MIT", + "optional": true, "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@tufjs/models": { - "version": "2.0.1", + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/nice-android-arm-eabi": "1.1.1", + "@napi-rs/nice-android-arm64": "1.1.1", + "@napi-rs/nice-darwin-arm64": "1.1.1", + "@napi-rs/nice-darwin-x64": "1.1.1", + "@napi-rs/nice-freebsd-x64": "1.1.1", + "@napi-rs/nice-linux-arm-gnueabihf": "1.1.1", + "@napi-rs/nice-linux-arm64-gnu": "1.1.1", + "@napi-rs/nice-linux-arm64-musl": "1.1.1", + "@napi-rs/nice-linux-ppc64-gnu": "1.1.1", + "@napi-rs/nice-linux-riscv64-gnu": "1.1.1", + "@napi-rs/nice-linux-s390x-gnu": "1.1.1", + "@napi-rs/nice-linux-x64-gnu": "1.1.1", + "@napi-rs/nice-linux-x64-musl": "1.1.1", + "@napi-rs/nice-openharmony-arm64": "1.1.1", + "@napi-rs/nice-win32-arm64-msvc": "1.1.1", + "@napi-rs/nice-win32-ia32-msvc": "1.1.1", + "@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", - "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.4" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@tufjs/models/node_modules/brace-expansion": { - "version": "2.0.2", + "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", - "dependencies": { - "balanced-match": "^1.0.0" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "9.0.5", + "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": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 10" } }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", + "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", - "dependencies": { - "@babel/types": "^7.0.0" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@types/babel__template": { - "version": "7.4.4", + "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", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@types/babel__traverse": { - "version": "7.20.7", + "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", - "dependencies": { - "@babel/types": "^7.20.7" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@types/body-parser": { - "version": "1.19.6", + "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", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@types/bonjour": { - "version": "3.5.13", + "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", - "dependencies": { - "@types/node": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@types/connect": { - "version": "3.4.38", + "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", - "dependencies": { - "@types/node": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.4", + "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", - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@types/cors": { - "version": "2.8.19", + "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", - "dependencies": { - "@types/node": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@types/estree": { - "version": "1.0.8", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/express": { - "version": "4.17.23", + "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", + "integrity": "sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@types/express-serve-static-core": { - "version": "5.0.6", + "node_modules/@napi-rs/nice-linux-x64-musl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.1.1.tgz", + "integrity": "sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@types/express/node_modules/@types/express-serve-static-core": { - "version": "4.19.6", + "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", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@types/geojson": { - "version": "7946.0.16", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/http-errors": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/http-proxy": { - "version": "1.17.16", + "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", - "dependencies": { - "@types/node": "*" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@types/jasmine": { - "version": "3.6.11", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/jasminewd2": { - "version": "2.0.13", + "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", - "dependencies": { - "@types/jasmine": "*" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", + "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" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@types/jwt-decode": { - "version": "3.1.0", - "dev": true, + "node_modules/@ng-bootstrap/ng-bootstrap": { + "version": "19.0.1", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-19.0.1.tgz", + "integrity": "sha512-1lErAkwh0F+gWkzpiddViY4GfA9LVXkwLpgBsV9Mb3IC0zo6WNkY8WxCC+LqajirBTu20DCkZSqeRzrwaVLpZw==", "license": "MIT", "dependencies": { - "jwt-decode": "*" + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^20.0.0", + "@angular/core": "^20.0.0", + "@angular/forms": "^20.0.0", + "@angular/localize": "^20.0.0", + "@popperjs/core": "^2.11.8", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@types/leaflet": { - "version": "1.9.17", + "node_modules/@ngrx/store": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-20.1.0.tgz", + "integrity": "sha512-o8j3CGAGedm+BIb+QDhNXrVaU//n9uF0wH0HZWtXHmW1mjRBaQiUA+ZPMUkDwAeN8KuOcoIEC+2QUXxXGVI7ow==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@types/geojson": "*" + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/core": "^20.0.0", + "rxjs": "^6.5.3 || ^7.5.0" } }, - "node_modules/@types/leaflet.fullscreen": { - "version": "3.0.2", + "node_modules/@ngrx/store-devtools": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@ngrx/store-devtools/-/store-devtools-20.1.0.tgz", + "integrity": "sha512-4N6X/uAfjiCFcuauX2gG+6TnDAuixrfMfUVebLYvifLkrDmqDO8lbeH+Lhk3EVGnpUih4yJiCaU437awVyKckw==", "dev": true, "license": "MIT", "dependencies": { - "@types/leaflet": "*" - } - }, - "node_modules/@types/leaflet.markercluster": { - "version": "1.5.3", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/core": "^20.0.0", + "@ngrx/store": "20.1.0", + "rxjs": "^6.5.3 || ^7.5.0" + } + }, + "node_modules/@ngtools/webpack": { + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-20.3.7.tgz", + "integrity": "sha512-AlFf28hylqopJYz4P5MOGEmasOGtXntN/xExOuurP4P9xuUrO99FvaVm0+RPgw8iKeojNW5Bi6qFS77gLof56w==", "dev": true, "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^20.0.0", + "typescript": ">=5.8 <6.0", + "webpack": "^5.54.0" + } + }, + "node_modules/@ngx-translate/core": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-17.0.0.tgz", + "integrity": "sha512-Rft2D5ns2pq4orLZjEtx1uhNuEBerUdpFUG1IcqtGuipj6SavgB8SkxtNQALNDA+EVlvsNCCjC2ewZVtUeN6rg==", + "license": "MIT", "dependencies": { - "@types/leaflet": "*" + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=16", + "@angular/core": ">=16" } }, - "node_modules/@types/mime": { - "version": "1.3.5", - "dev": true, - "license": "MIT" + "node_modules/@ngx-translate/http-loader": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-17.0.0.tgz", + "integrity": "sha512-hgS8sa0ARjH9ll3PhkLTufeVXNI2DNR2uFKDhBgq13siUXzzVr/a31M6zgecrtwbA34iaBV01hsTMbMS8V7iIw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=16", + "@angular/core": ">=16" + } }, - "node_modules/@types/node": { - "version": "18.19.112", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.112.tgz", - "integrity": "sha512-i+Vukt9POdS/MBI7YrrkkI5fMfwFtOjphSmt4WXYLfwqsfr6z/HdCx7LqT9M7JktGob8WNgj8nFB4TbGNE4Cog==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@types/node-forge": { - "version": "1.3.11", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz", + "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@types/node/node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "node_modules/@npmcli/agent/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/@types/proj4": { - "version": "2.5.5", + "node_modules/@npmcli/fs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz", + "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } }, - "node_modules/@types/proj4leaflet": { - "version": "1.0.10", + "node_modules/@npmcli/git": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-6.0.3.tgz", + "integrity": "sha512-GUYESQlxZRAdhs3UhbB6pVRNUELQOHXwK9ruDkwmCv2aZ5y0SApQzUJCg02p3A7Ue2J5hxvlk1YI53c00NmRyQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^8.0.0", + "ini": "^5.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^10.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/git/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/@npmcli/git/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz", + "integrity": "sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "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": { - "@types/geojson": "*", - "@types/leaflet": "*", - "@types/proj4": "*" + "balanced-match": "^1.0.0" } }, - "node_modules/@types/q": { - "version": "0.0.32", + "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==", "dev": true, - "license": "MIT" + "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/@types/qs": { - "version": "6.14.0", + "node_modules/@npmcli/package-json/node_modules/hosted-git-info": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", + "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } }, - "node_modules/@types/range-parser": { - "version": "1.2.7", + "node_modules/@npmcli/package-json/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": "MIT" + "license": "ISC" + }, + "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==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/promise-spawn": { + "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": { + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/redact": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.2.2.tgz", + "integrity": "sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-9.1.0.tgz", + "integrity": "sha512-aoNSbxtkePXUlbZB+anS1LqsJdctG5n3UVhfU47+CDdwMi6uNTBMF9gPcQRnqghQd2FGzcwwIFBruFMxjhBewg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^4.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "node-gyp": "^11.0.0", + "proc-log": "^5.0.0", + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "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-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@parcel/watcher/node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "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", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.3.tgz", + "integrity": "sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.3.tgz", + "integrity": "sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.3.tgz", + "integrity": "sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.3.tgz", + "integrity": "sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.3.tgz", + "integrity": "sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.3.tgz", + "integrity": "sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.3.tgz", + "integrity": "sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.3.tgz", + "integrity": "sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.3.tgz", + "integrity": "sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.3.tgz", + "integrity": "sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.3.tgz", + "integrity": "sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.3.tgz", + "integrity": "sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.3.tgz", + "integrity": "sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.3.tgz", + "integrity": "sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.3.tgz", + "integrity": "sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.3.tgz", + "integrity": "sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.3.tgz", + "integrity": "sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.3.tgz", + "integrity": "sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.3.tgz", + "integrity": "sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.3.tgz", + "integrity": "sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@types/retry": { - "version": "0.12.0", + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.3.tgz", + "integrity": "sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@types/selenium-webdriver": { - "version": "3.0.26", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.3.tgz", + "integrity": "sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@types/send": { - "version": "0.17.5", + "node_modules/@schematics/angular": { + "version": "20.3.7", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-20.3.7.tgz", + "integrity": "sha512-jR2LPJVGK6yzPTNXkGJZYtdeLGkNdqJhVow2E+ILt3pk/LZuT/iSdr9V4nArU9yysifGuJFTyZapVOYkEYaykg==", "dev": true, "license": "MIT", "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "@angular-devkit/core": "20.3.7", + "@angular-devkit/schematics": "20.3.7", + "jsonc-parser": "3.3.1" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/@types/serve-index": { - "version": "1.9.4", + "node_modules/@sigstore/bundle": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-3.1.0.tgz", + "integrity": "sha512-Mm1E3/CmDDCz3nDhFKTuYdB47EdRFRQMOE/EAbiG1MJW77/w1b3P7Qx7JSrVJs8PfwOLOVcKQCHErIwCTyPbag==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@types/express": "*" + "@sigstore/protobuf-specs": "^0.4.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@types/serve-static": { - "version": "1.15.8", + "node_modules/@sigstore/core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-2.0.0.tgz", + "integrity": "sha512-nYxaSb/MtlSI+JWcwTHQxyNmWeWrUXJJ/G4liLrGG7+tS4vAz6LF3xRXqLH6wPIVUoZQel2Fs4ddLx4NCpiIYg==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" + "license": "Apache-2.0", + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@types/sockjs": { - "version": "0.3.36", + "node_modules/@sigstore/protobuf-specs": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.4.3.tgz", + "integrity": "sha512-fk2zjD9117RL9BjqEwF7fwv7Q/P9yGsMV4MUJZ/DocaQJ6+3pKr+syBq1owU5Q5qGw5CUbXzm+4yJ2JVRDQeSA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-3.1.0.tgz", + "integrity": "sha512-knzjmaOHOov1Ur7N/z4B1oPqZ0QX5geUfhrVaqVlu+hl0EAoL4o+l0MSULINcD5GCWe3Z0+YJO8ues6vFlW0Yw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@types/node": "*" + "@sigstore/bundle": "^3.1.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.4.0", + "make-fetch-happen": "^14.0.2", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@types/ws": { - "version": "8.18.1", + "node_modules/@sigstore/tuf": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-3.1.1.tgz", + "integrity": "sha512-eFFvlcBIoGwVkkwmTi/vEQFSva3xs5Ot3WmBcjgjVdiaoelBLQaQ/ZBfhlG0MnG0cmTYScPpk7eDdGDWUcFUmg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@types/node": "*" + "@sigstore/protobuf-specs": "^0.4.1", + "tuf-js": "^3.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", + "node_modules/@sigstore/verify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-2.1.1.tgz", + "integrity": "sha512-hVJD77oT67aowHxwT4+M6PGOp+E2LtLdTK3+FC0lBO9T7sYwItDMXZ7Z07IDCvR1M717a4axbIWckrW67KMP/w==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + "@sigstore/bundle": "^3.1.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.4.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", + "node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } + "license": "MIT" }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", "dev": true, "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", + "node_modules/@tufjs/models": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-3.0.1.tgz", + "integrity": "sha512-UUYHISyhCU3ZgN8yaear3cGATHb3SMuKHsQ/nVbHXcmnBf+LzQ/cQfhNG+rfaSHgqGKNEm2cOCLVLELStUQ1JA==", "dev": true, "license": "MIT", "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", + "node_modules/@tufjs/models/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": "Apache-2.0", + "license": "MIT", "dependencies": { - "@xtuc/long": "4.2.2" + "balanced-match": "^1.0.0" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", + "node_modules/@tufjs/models/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": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "dev": true, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "dev": true, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "@babel/types": "^7.0.0" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "dev": true, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "dev": true, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "@babel/types": "^7.28.2" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, - "license": "BSD-2-Clause" + "license": "MIT", + "dependencies": { + "@types/node": "*" + } }, - "node_modules/abbrev": { - "version": "2.0.0", + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "license": "MIT", + "dependencies": { + "@types/node": "*" } }, - "node_modules/accepts": { - "version": "1.3.8", + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, "license": "MIT", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" + "@types/express-serve-static-core": "*", + "@types/node": "*" } }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", + "node_modules/@types/cors": { + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "@types/node": "*" } }, - "node_modules/acorn": { - "version": "7.4.1", + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", + "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" + }, + "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==", "dev": true, "license": "MIT", "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { - "version": "2.0.4", + "node_modules/@types/express-serve-static-core": { + "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": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" } }, - "node_modules/adm-zip": { - "version": "0.5.16", + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0" - } + "license": "MIT" }, - "node_modules/agent-base": { - "version": "7.1.3", + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "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==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 14" + "dependencies": { + "@types/node": "*" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "license": "MIT", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/ajv": { - "version": "8.12.0", + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "@types/istanbul-lib-report": "*" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", + "node_modules/@types/jasmine": { + "version": "5.1.12", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.12.tgz", + "integrity": "sha512-1BzPxNsFDLDfj9InVR3IeY0ZVf4o9XV+4mDqoCfyPkbsA7dYyKAPAb2co6wLFlHcvxPlt1wShm7zQdV7uTfLGA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jasminewd2": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.13.tgz", + "integrity": "sha512-aJ3wj8tXMpBrzQ5ghIaqMisD8C3FIrcO6sDKHqFbuqAsI7yOxj0fA7MrRCPLZHIVUjERIwsMmGn/vB0UQ9u0Hg==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "@types/jasmine": "*" } }, - "node_modules/ajv-keywords": { - "version": "5.1.0", + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" + "expect": "^30.0.0", + "pretty-format": "^30.0.0" } }, - "node_modules/all": { - "version": "0.0.0", - "license": "MIT" - }, - "node_modules/animate.css": { - "version": "4.1.1", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, "license": "MIT" }, - "node_modules/ansi-colors": { - "version": "4.1.3", + "node_modules/@types/leaflet": { + "version": "1.9.17", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.17.tgz", + "integrity": "sha512-IJ4K6t7I3Fh5qXbQ1uwL3CFVbCi6haW9+53oLWgdKlLP7EaS21byWFJxxqOx9y8I0AP0actXSJLVMbyvxhkUTA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@types/geojson": "*" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", + "node_modules/@types/leaflet.fullscreen": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/leaflet.fullscreen/-/leaflet.fullscreen-3.0.3.tgz", + "integrity": "sha512-4x/90m2SaxPZT9D4bRu8P8kK3UvyOJC11xOkaN9CBtmvnTCG6fnBL6qlPjOCDcH0PVHdBaruqFUMWZfhwy9Uwg==", "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/leaflet": "^1.9" } }, - "node_modules/ansi-html-community": { - "version": "0.0.8", + "node_modules/@types/leaflet.markercluster": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@types/leaflet.markercluster/-/leaflet.markercluster-1.5.3.tgz", + "integrity": "sha512-G19K7/Nzwvoz9RDKL2/U1RxkdhDqXPDVRokrmI4eNDfSLShlitY6w/hp4bUaMdi2cwyYcNgdNOarpzDHMuSFrQ==", "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" + "license": "MIT", + "dependencies": { + "@types/leaflet": "*" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.1.tgz", + "integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "peer": true, + "dependencies": { + "undici-types": "~7.16.0" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@types/node-forge": { + "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": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/node": "*" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "license": "ISC", + "node_modules/@types/proj4": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@types/proj4/-/proj4-2.5.5.tgz", + "integrity": "sha512-y4tHUVVoMEOm2nxRLQ2/ET8upj/pBmoutGxFw2LZJTQWPgWXI+cbxVEUFFmIzr/bpFR83hGDOTSXX6HBeObvZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/proj4leaflet": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/proj4leaflet/-/proj4leaflet-1.0.10.tgz", + "integrity": "sha512-Yie5J8sHUgTQ1FTRP9cCDXpWvHXjUiSjwlnJb1F06Czwo6cVOt8Bxy6txMSIVgznbnRWlbYmxNjWDhYtNxAflw==", + "dev": true, + "license": "MIT", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" + "@types/geojson": "*", + "@types/leaflet": "*", + "@types/proj4": "*" } }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.0.tgz", + "integrity": "sha512-zBF6vZJn1IaMpg3xUF25VK3gd3l8zwE0ZLRX7dsQyQi+jp4E8mMDJNGDYnYse+bQhYwWERTxVwHpi3dMOq7RKQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "dependencies": { + "@types/node": "*" } }, - "node_modules/app-root-path": { - "version": "3.1.0", + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 6.0.0" + "dependencies": { + "@types/express": "*" } }, - "node_modules/arg": { - "version": "4.1.3", + "node_modules/@types/serve-static": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.9.tgz", + "integrity": "sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==", "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "1.0.10", "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" } }, - "node_modules/argparse/node_modules/sprintf-js": { - "version": "1.0.3", - "license": "BSD-3-Clause" + "node_modules/@types/serve-static/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } }, - "node_modules/aria-query": { - "version": "3.0.0", + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" + "@types/node": "*" } }, - "node_modules/array-flatten": { - "version": "1.1.1", + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, "license": "MIT" }, - "node_modules/array-union": { - "version": "1.0.2", + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, "license": "MIT", "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "@types/node": "*" } }, - "node_modules/array-uniq": { - "version": "1.0.3", + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/yargs-parser": "*" } }, - "node_modules/arrify": { - "version": "1.0.1", + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/asn1": { - "version": "0.2.6", + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": "~2.1.0" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, - "node_modules/assert-plus": { - "version": "1.0.0", + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } + "license": "MIT" }, - "node_modules/ast-types-flow": { - "version": "0.0.7", + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/astral-regex": { - "version": "2.0.0", + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" } }, - "node_modules/asynckit": { - "version": "0.4.0", + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", "dev": true, "license": "MIT" }, - "node_modules/autoprefixer": { - "version": "10.4.18", + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001591", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/aws4": { + "node_modules/@webassemblyjs/leb128": { "version": "1.13.2", - "dev": true, - "license": "MIT" - }, - "node_modules/axobject-query": { - "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "ast-types-flow": "0.0.7" + "@xtuc/long": "4.2.2" } }, - "node_modules/babel-loader": { - "version": "9.1.3", + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", "dev": true, - "license": "MIT", - "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" - } + "license": "MIT" }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.6", + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.33.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "license": "MIT" + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" }, - "node_modules/base64-js": { - "version": "1.5.1", + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "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" + "license": "Apache-2.0" }, - "node_modules/base64id": { - "version": "2.0.0", + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true, - "license": "MIT", - "engines": { - "node": "^4.5.0 || >= 5.9" - } + "license": "BSD-2-Clause" }, - "node_modules/batch": { - "version": "0.6.1", + "node_modules/abbrev": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", + "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", "dev": true, - "license": "MIT" + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "tweetnacl": "^0.14.3" + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/big.js": { - "version": "5.2.2", + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": "*" + "node": ">=0.4.0" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10.13.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "acorn": "^8.14.0" } }, - "node_modules/bl": { - "version": "4.1.0", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/blocking-proxy": { - "version": "1.0.1", + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "blocking-proxy": "built/lib/bin.js" + "acorn": "^8.11.0" }, "engines": { - "node": ">=6.9.x" + "node": ">=0.4.0" } }, - "node_modules/body-parser": { - "version": "1.20.3", + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=8.9" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 14" + } }, - "node_modules/bonjour-service": { - "version": "1.3.0", + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/boolbase": { - "version": "1.0.0", + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, - "license": "ISC" - }, - "node_modules/bootstrap": { - "version": "5.0.0-alpha2", "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" + "dependencies": { + "ajv": "^8.0.0" }, "peerDependencies": { - "popper.js": "^1.16.1" + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/brace-expansion": { - "version": "1.1.12", + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/braces": { - "version": "3.0.3", + "node_modules/algoliasearch": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.35.0.tgz", + "integrity": "sha512-Y+moNhsqgLmvJdgTsO4GZNgsaDWv8AOGAaPeIeHKlDn/XunoAqYbA+XNpBd1dW8GOXAUDyxC9Rxc7AV4kpFcIg==", + "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "@algolia/abtesting": "1.1.0", + "@algolia/client-abtesting": "5.35.0", + "@algolia/client-analytics": "5.35.0", + "@algolia/client-common": "5.35.0", + "@algolia/client-insights": "5.35.0", + "@algolia/client-personalization": "5.35.0", + "@algolia/client-query-suggestions": "5.35.0", + "@algolia/client-search": "5.35.0", + "@algolia/ingestion": "1.35.0", + "@algolia/monitoring": "1.35.0", + "@algolia/recommend": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" }, "engines": { - "node": ">=8" + "node": ">= 14.0.0" } }, - "node_modules/browserslist": { - "version": "4.25.1", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/animate.css": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-4.1.1.tgz", + "integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==", + "license": "MIT" + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.1.1.tgz", + "integrity": "sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==", + "dev": true, "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001726", - "electron-to-chromium": "^1.5.173", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" - }, - "bin": { - "browserslist": "cli.js" + "environment": "^1.0.0" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/browserstack": { - "version": "1.6.1", + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "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", - "dependencies": { - "https-proxy-agent": "^2.2.1" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/browserstack/node_modules/agent-base": { + "node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "es6-promisify": "^5.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 4.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/browserstack/node_modules/debug": { - "version": "3.2.7", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ms": "^2.1.1" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/browserstack/node_modules/https-proxy-agent": { - "version": "2.2.4", + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", - "dependencies": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, "engines": { - "node": ">= 4.5.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/buffer": { - "version": "5.7.1", + "node_modules/app-root-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", + "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", "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", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/buffer-from": { - "version": "1.1.2", + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true, "license": "MIT" }, - "node_modules/builtin-modules": { - "version": "1.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" }, - "node_modules/bytes": { - "version": "3.1.2", + "node_modules/aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" + "license": "Apache-2.0", + "dependencies": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" } }, - "node_modules/cacache": { - "version": "18.0.4", + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true, + "license": "ISC" + }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/cacache/node_modules/brace-expansion": { + "node_modules/axobject-query": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0" + "ast-types-flow": "0.0.7" } }, - "node_modules/cacache/node_modules/glob": { - "version": "10.4.5", + "node_modules/babel-loader": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", + "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", "dev": true, - "license": "ISC", + "license": "MIT", "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" + "find-up": "^5.0.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5.61.0" } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "10.4.3", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } }, - "node_modules/cacache/node_modules/minimatch": { - "version": "9.0.5", + "node_modules/babel-plugin-polyfill-corejs2/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/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/call-bind": { - "version": "1.0.8", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" + "@babel/helper-define-polyfill-provider": "^0.6.5" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/call-bind-apply-helpers": { + "node_modules/balanced-match": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, "engines": { - "node": ">= 0.4" + "node": "^4.5.0 || >= 5.9" } }, - "node_modules/call-bound": { - "version": "1.0.4", + "node_modules/baseline-browser-mapping": { + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.19.tgz", + "integrity": "sha512-zoKGUdu6vb2jd3YOq0nnhEDQVbPcHhco3UImJrv5dSkvxTc2pl2WjOPsjZXDwPDSl5eghIMuY3R6J9NDKF3KcQ==", + "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", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/beasties": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.3.5.tgz", + "integrity": "sha512-NaWu+f4YrJxEttJSm16AzMIFtVldCvaJ68b1L098KpqXmxt9xOLtKoLkKxb8ekhOrLqEJAbvT6n6SEvB/sac7A==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" + "css-select": "^6.0.0", + "css-what": "^7.0.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "htmlparser2": "^10.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", + "postcss-media-query-parser": "^0.2.3" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14.0.0" } }, - "node_modules/callsites": { - "version": "3.1.0", + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/camelcase": { - "version": "5.3.1", + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001726", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/caseless": { - "version": "0.12.0", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/chalk": { - "version": "4.1.2", + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=18" } }, - "node_modules/chardet": { - "version": "0.7.0", + "node_modules/body-parser/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" - }, - "node_modules/chart.js": { - "version": "3.9.1", - "license": "MIT" - }, - "node_modules/chokidar": { - "version": "3.6.0", "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=0.10.0" } }, - "node_modules/chownr": { - "version": "2.0.0", + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true, + "license": "ISC" + }, + "node_modules/bootstrap": { + "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", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], "license": "MIT", - "engines": { - "node": ">=6.0" + "peerDependencies": { + "@popperjs/core": "^2.11.8" } }, - "node_modules/clean-stack": { - "version": "2.2.0", + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "dev": true, + "node_modules/browserslist": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz", + "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "engines": { - "node": ">=6" + "peer": true, + "dependencies": { + "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" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/cli-width": { - "version": "4.1.0", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } + "license": "MIT" }, - "node_modules/cliui": { - "version": "8.0.1", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "run-applescript": "^7.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/clone": { - "version": "1.0.4", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8" + "node": ">= 0.8" } }, - "node_modules/clone-deep": { - "version": "4.0.1", + "node_modules/cacache": { + "version": "19.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz", + "integrity": "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "@npmcli/fs": "^4.0.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^7.0.2", + "ssri": "^12.0.0", + "tar": "^7.4.3", + "unique-filename": "^4.0.0" }, "engines": { - "node": ">=6" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/codelyzer": { - "version": "6.0.2", + "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": { - "@angular/compiler": "9.0.0", - "@angular/core": "9.0.0", - "app-root-path": "^3.0.0", - "aria-query": "^3.0.0", - "axobject-query": "2.0.2", - "css-selector-tokenizer": "^0.7.1", - "cssauron": "^1.4.0", - "damerau-levenshtein": "^1.0.4", - "rxjs": "^6.5.3", - "semver-dsl": "^1.0.1", - "source-map": "^0.5.7", - "sprintf-js": "^1.1.2", - "tslib": "^1.10.0", - "zone.js": "~0.10.3" - }, - "peerDependencies": { - "@angular/compiler": ">=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next", - "@angular/core": ">=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next", - "tslint": "^5.0.0 || ^6.0.0" - } - }, - "node_modules/codelyzer/node_modules/@angular/compiler": { - "version": "9.0.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "tslib": "^1.10.0" + "balanced-match": "^1.0.0" } }, - "node_modules/codelyzer/node_modules/source-map": { - "version": "0.5.7", + "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": "BSD-3-Clause", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/codelyzer/node_modules/tslib": { - "version": "1.14.1", - "dev": true, - "license": "0BSD" - }, - "node_modules/codelyzer/node_modules/zone.js": { - "version": "0.10.3", + "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": "MIT" - }, - "node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" + "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": ">=7.0.0" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "dev": true, - "license": "MIT" - }, - "node_modules/colors": { - "version": "1.4.0", + "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": "MIT", - "engines": { - "node": ">=0.1.90" - } + "license": "ISC" }, - "node_modules/combined-stream": { - "version": "1.0.8", + "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": "MIT", + "license": "ISC", "dependencies": { - "delayed-stream": "~1.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 0.8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/commander": { - "version": "2.20.3", - "license": "MIT" - }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/compressible": { - "version": "2.0.18", + "node_modules/cacache/node_modules/tar": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz", + "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "mime-db": ">= 1.43.0 < 2" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=18" } }, - "node_modules/compression": { - "version": "1.8.0", + "node_modules/cacache/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.0.2", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" - }, + "license": "BlueOak-1.0.0", "engines": { - "node": ">= 0.8.0" + "node": ">=18" } }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/connect": { - "version": "3.7.0", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8" + "node": ">=6" } }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", + "node_modules/caniuse-lite": { + "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", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", + "node_modules/chardet": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz", + "integrity": "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==", "dev": true, "license": "MIT" }, - "node_modules/content-disposition": { - "version": "0.5.4", - "dev": true, + "node_modules/chart.js": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz", + "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==", "license": "MIT", "dependencies": { - "safe-buffer": "5.2.1" + "@kurkle/color": "^0.3.0" }, "engines": { - "node": ">= 0.6" + "pnpm": ">=8" } }, - "node_modules/content-type": { - "version": "1.0.5", - "dev": true, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, "engines": { - "node": ">= 0.6" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.2", + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6.0" + } }, - "node_modules/copy-anything": { - "version": "2.0.6", + "node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", - "dependencies": { - "is-what": "^3.14.1" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" + "engines": { + "node": ">=8" } }, - "node_modules/copy-webpack-plugin": { - "version": "11.0.0", + "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": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "restore-cursor": "^5.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">=18" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "6.0.2", + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, + "license": "MIT", "engines": { - "node": ">=10.13.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/core-js-compat": { - "version": "3.43.0", + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.25.0" + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/core-util-is": { - "version": "1.0.2", + "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": "MIT" + "license": "ISC", + "engines": { + "node": ">= 12" + } }, - "node_modules/cors": { - "version": "2.8.5", - "dev": true, - "license": "MIT", + "node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "license": "ISC", "dependencies": { - "object-assign": "^4", - "vary": "^1" + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=20" } }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "dev": true, + "node_modules/cliui/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==", "license": "MIT", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, "engines": { - "node": ">=14" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/cosmiconfig/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, + "node_modules/cliui/node_modules/wrap-ansi": { + "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==", "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/critters": { - "version": "0.0.22", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "chalk": "^4.1.0", - "css-select": "^5.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.2", - "htmlparser2": "^8.0.2", - "postcss": "^8.4.23", - "postcss-media-query-parser": "^0.2.3" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/css-loader": { - "version": "6.10.0", + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "license": "MIT", "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.4", - "postcss-modules-scope": "^3.1.1", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" + "isobject": "^3.0.1" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/css-select": { - "version": "5.1.0", + "node_modules/codelyzer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.2.tgz", + "integrity": "sha512-v3+E0Ucu2xWJMOJ2fA/q9pDT/hlxHftHGPUay1/1cTgyPV5JTHFdO9hqo837Sx2s9vKBMTt5gO+lhF95PO6J+g==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "peerDependencies": { + "@angular/compiler": ">=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next", + "@angular/core": ">=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next", + "tslint": "^5.0.0 || ^6.0.0" } }, - "node_modules/css-selector-tokenizer": { - "version": "0.7.3", + "node_modules/codelyzer/node_modules/@angular/compiler": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", + "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", "dev": true, "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" + "peerDependencies": { + "tslib": "^1.10.0" } }, - "node_modules/css-what": { - "version": "6.1.0", + "node_modules/codelyzer/node_modules/@angular/core": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", + "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "license": "MIT", + "peerDependencies": { + "rxjs": "^6.5.3", + "tslib": "^1.10.0", + "zone.js": "~0.10.2" } }, - "node_modules/cssauron": { - "version": "1.4.0", + "node_modules/codelyzer/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "through": "X.X.X" + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" } }, - "node_modules/cssesc": { - "version": "3.0.0", + "node_modules/codelyzer/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/custom-event": { - "version": "1.0.1", + "node_modules/codelyzer/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "license": "MIT" + "license": "0BSD", + "peer": true }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", + "node_modules/codelyzer/node_modules/zone.js": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==", "dev": true, - "license": "BSD-2-Clause" + "license": "MIT", + "peer": true }, - "node_modules/dashdash": { - "version": "1.14.1", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10" + "node": ">=7.0.0" } }, - "node_modules/date-format": { - "version": "4.0.14", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0" - } + "license": "MIT" }, - "node_modules/debug": { - "version": "4.4.1", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" }, - "node_modules/decamelize": { - "version": "1.2.0", + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.1.90" } }, - "node_modules/deep-freeze-strict": { - "version": "1.1.1", - "dev": true, - "license": "public domain" - }, - "node_modules/deep-is": { - "version": "0.1.4", + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, "license": "MIT" }, - "node_modules/default-gateway": { - "version": "6.0.3", + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "execa": "^5.0.0" + "mime-db": ">= 1.43.0 < 2" }, "engines": { - "node": ">= 10" + "node": ">= 0.6" } }, - "node_modules/defaults": { - "version": "1.0.4", + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "dev": true, "license": "MIT", "dependencies": { - "clone": "^1.0.2" + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/define-data-property": { - "version": "1.1.4", + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "ms": "2.0.0" } }, - "node_modules/define-lazy-prop": { + "node_modules/compression/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/del": { - "version": "2.2.2", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, "license": "MIT", "dependencies": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10.0" } }, - "node_modules/del/node_modules/globby": { - "version": "5.0.0", + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, "license": "MIT", - "dependencies": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8" } }, - "node_modules/del/node_modules/rimraf": { - "version": "2.7.1", + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "ms": "2.0.0" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", + "node_modules/connect/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">= 0.8" } }, - "node_modules/depd": { - "version": "2.0.0", + "node_modules/connect/node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, "engines": { "node": ">= 0.8" } }, - "node_modules/destroy": { - "version": "1.2.0", + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/connect/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">= 0.8" } }, - "node_modules/detect-node": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/di": { - "version": "0.0.1", + "node_modules/connect/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, - "license": "MIT" - }, - "node_modules/diff": { - "version": "4.0.2", - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.3.1" + "node": ">= 0.6" } }, - "node_modules/dir-glob": { - "version": "3.0.1", + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", "dev": true, "license": "MIT", "dependencies": { - "path-type": "^4.0.0" + "safe-buffer": "5.2.1" }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/dns-packet": { - "version": "5.6.1", + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, "license": "MIT", - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/doctrine": { - "version": "3.0.0", + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">= 0.6" } }, - "node_modules/dom-serialize": { - "version": "2.2.1", + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "dev": true, "license": "MIT", - "dependencies": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" + "engines": { + "node": ">=6.6.0" } }, - "node_modules/dom-serializer": { - "version": "2.0.0", + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" + "is-what": "^3.14.1" }, "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "url": "https://github.com/sponsors/mesqueeb" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "5.0.3", + "node_modules/copy-webpack-plugin": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz", + "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0" + "glob-parent": "^6.0.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2", + "tinyglobby": "^0.2.12" }, "engines": { - "node": ">= 4" + "node": ">= 18.12.0" }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" } }, - "node_modules/domutils": { - "version": "3.2.2", + "node_modules/core-js-compat": { + "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": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" + "browserslist": "^4.26.3" }, "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" + "object-assign": "^4", + "vary": "^1" }, "engines": { - "node": ">= 0.4" + "node": ">= 0.10" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "license": "MIT", "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/ecc-jsbn/node_modules/jsbn": { - "version": "0.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/ee-first": { + "node_modules/create-require": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true, "license": "MIT" }, - "node_modules/electron-to-chromium": { - "version": "1.5.173", - "license": "ISC" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "license": "MIT" - }, - "node_modules/emojis-list": { - "version": "3.0.0", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">= 4" + "node": ">= 8" } }, - "node_modules/encodeurl": { - "version": "1.0.2", + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", "dev": true, "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, "engines": { - "node": ">= 0.8" + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/encoding": { - "version": "0.1.13", + "node_modules/css-select": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz", + "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==", "dev": true, - "license": "MIT", - "optional": true, + "license": "BSD-2-Clause", "dependencies": { - "iconv-lite": "^0.6.2" + "boolbase": "^1.0.0", + "css-what": "^7.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "nth-check": "^2.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", + "node_modules/css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "node_modules/css-what": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz", + "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=0.10.0" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/engine.io": { - "version": "6.6.4", + "node_modules/cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw==", "dev": true, "license": "MIT", "dependencies": { - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.7.2", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1" + "through": "X.X.X" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=10.2.0" + "node": ">=4" } }, - "node_modules/engine.io-parser": { - "version": "5.2.3", + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=4.0" } }, - "node_modules/engine.io/node_modules/debug": { - "version": "4.3.7", - "dev": true, + "node_modules/debug": { + "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" @@ -6662,551 +8265,575 @@ } } }, - "node_modules/enhanced-resolve": { - "version": "5.18.2", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } + "license": "MIT" }, - "node_modules/enquirer": { - "version": "2.4.1", + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", "dev": true, "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">=8.6" - } - }, - "node_modules/ent": { - "version": "2.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "punycode": "^1.4.1", - "safe-regex-test": "^1.1.0" + "node": ">=18" }, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/entities": { - "version": "4.5.0", + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "engines": { - "node": ">=0.12" + "node": ">=18" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/env-paths": { - "version": "2.2.1", + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/errno": { - "version": "0.1.8", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "prr": "~1.0.1" + "node": ">=12" }, - "bin": { - "errno": "cli.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/error-ex": { - "version": "1.3.2", + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" + "engines": { + "node": ">= 0.8" } }, - "node_modules/es-define-property": { - "version": "1.0.1", + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/es-errors": { - "version": "1.3.0", + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/es-module-lexer": { - "version": "1.7.0", + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true, "license": "MIT" }, - "node_modules/es-object-atoms": { - "version": "1.1.1", + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true, + "license": "MIT" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0" + "@leichtgewicht/ip-codec": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=6" } }, - "node_modules/es6-promise": { - "version": "4.2.8", + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } }, - "node_modules/es6-promisify": { - "version": "5.0.0", + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, "license": "MIT", "dependencies": { - "es6-promise": "^4.0.3" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/esbuild": { - "version": "0.20.1", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "bin": { - "esbuild": "bin/esbuild" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" }, "engines": { - "node": ">=12" + "node": ">= 4" }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.1", - "@esbuild/android-arm": "0.20.1", - "@esbuild/android-arm64": "0.20.1", - "@esbuild/android-x64": "0.20.1", - "@esbuild/darwin-arm64": "0.20.1", - "@esbuild/darwin-x64": "0.20.1", - "@esbuild/freebsd-arm64": "0.20.1", - "@esbuild/freebsd-x64": "0.20.1", - "@esbuild/linux-arm": "0.20.1", - "@esbuild/linux-arm64": "0.20.1", - "@esbuild/linux-ia32": "0.20.1", - "@esbuild/linux-loong64": "0.20.1", - "@esbuild/linux-mips64el": "0.20.1", - "@esbuild/linux-ppc64": "0.20.1", - "@esbuild/linux-riscv64": "0.20.1", - "@esbuild/linux-s390x": "0.20.1", - "@esbuild/linux-x64": "0.20.1", - "@esbuild/netbsd-x64": "0.20.1", - "@esbuild/openbsd-x64": "0.20.1", - "@esbuild/sunos-x64": "0.20.1", - "@esbuild/win32-arm64": "0.20.1", - "@esbuild/win32-ia32": "0.20.1", - "@esbuild/win32-x64": "0.20.1" + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/esbuild-wasm": { - "version": "0.20.1", + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, - "engines": { - "node": ">=12" + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/esbuild/node_modules/@esbuild/aix-ppc64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.1.tgz", - "integrity": "sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==", - "cpu": [ - "ppc64" - ], + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, - "optional": true, - "os": [ - "aix" - ], + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" } }, - "node_modules/esbuild/node_modules/@esbuild/android-arm": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.1.tgz", - "integrity": "sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==", - "cpu": [ - "arm" - ], + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.239", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.239.tgz", + "integrity": "sha512-1y5w0Zsq39MSPmEjHjbizvhYoTaulVtivpxkp5q5kaPmQtsK6/2nvAzGRxNMS9DoYySp9PkW0MAQDwU1m764mg==", + "license": "ISC" + }, + "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==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 4" } }, - "node_modules/esbuild/node_modules/@esbuild/android-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.1.tgz", - "integrity": "sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==", - "cpu": [ - "arm64" - ], + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 0.8" } }, - "node_modules/esbuild/node_modules/@esbuild/android-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.1.tgz", - "integrity": "sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==", - "cpu": [ - "x64" - ], + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, + "license": "MIT", "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" + "dependencies": { + "iconv-lite": "^0.6.2" } }, - "node_modules/esbuild/node_modules/@esbuild/darwin-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.1.tgz", - "integrity": "sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==", - "cpu": [ - "arm64" - ], + "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, - "os": [ - "darwin" - ], + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/esbuild/node_modules/@esbuild/darwin-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.1.tgz", - "integrity": "sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==", - "cpu": [ - "x64" - ], + "node_modules/engine.io": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", + "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", + "dependencies": { + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.7.2", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, "engines": { - "node": ">=12" + "node": ">=10.2.0" } }, - "node_modules/esbuild/node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.1.tgz", - "integrity": "sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==", - "cpu": [ - "arm64" - ], + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=10.0.0" } }, - "node_modules/esbuild/node_modules/@esbuild/freebsd-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.1.tgz", - "integrity": "sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==", - "cpu": [ - "x64" - ], + "node_modules/engine.io/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/esbuild/node_modules/@esbuild/linux-arm": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.1.tgz", - "integrity": "sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==", - "cpu": [ - "arm" - ], + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=12" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/esbuild/node_modules/@esbuild/linux-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.1.tgz", - "integrity": "sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==", - "cpu": [ - "arm64" - ], + "node_modules/engine.io/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/esbuild/node_modules/@esbuild/linux-ia32": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.1.tgz", - "integrity": "sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==", - "cpu": [ - "ia32" - ], + "node_modules/engine.io/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/esbuild/node_modules/@esbuild/linux-loong64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.1.tgz", - "integrity": "sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==", - "cpu": [ - "loong64" - ], + "node_modules/engine.io/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/esbuild/node_modules/@esbuild/linux-mips64el": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.1.tgz", - "integrity": "sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==", - "cpu": [ - "mips64el" - ], + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, "engines": { - "node": ">=12" + "node": ">=10.13.0" } }, - "node_modules/esbuild/node_modules/@esbuild/linux-ppc64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.1.tgz", - "integrity": "sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==", - "cpu": [ - "ppc64" - ], + "node_modules/ent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.2.tgz", + "integrity": "sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "punycode": "^1.4.1", + "safe-regex-test": "^1.1.0" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" } }, - "node_modules/esbuild/node_modules/@esbuild/linux-riscv64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.1.tgz", - "integrity": "sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==", - "cpu": [ - "riscv64" - ], + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "BSD-2-Clause", "engines": { - "node": ">=12" + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/esbuild/node_modules/@esbuild/linux-s390x": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.1.tgz", - "integrity": "sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==", - "cpu": [ - "s390x" - ], + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/esbuild/node_modules/@esbuild/linux-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.1.tgz", - "integrity": "sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==", - "cpu": [ - "x64" - ], + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esbuild/node_modules/@esbuild/netbsd-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.1.tgz", - "integrity": "sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==", - "cpu": [ - "x64" - ], + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, + "license": "MIT", "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" } }, - "node_modules/esbuild/node_modules/@esbuild/openbsd-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.1.tgz", - "integrity": "sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==", - "cpu": [ - "x64" - ], + "node_modules/error-ex": { + "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, - "optional": true, - "os": [ - "openbsd" - ], + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 0.4" } }, - "node_modules/esbuild/node_modules/@esbuild/sunos-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.1.tgz", - "integrity": "sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==", - "cpu": [ - "x64" - ], + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, - "optional": true, - "os": [ - "sunos" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 0.4" } }, - "node_modules/esbuild/node_modules/@esbuild/win32-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.1.tgz", - "integrity": "sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==", - "cpu": [ - "arm64" - ], + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" } }, - "node_modules/esbuild/node_modules/@esbuild/win32-ia32": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.1.tgz", - "integrity": "sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==", - "cpu": [ - "ia32" - ], + "node_modules/esbuild": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", + "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">=12" + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.9", + "@esbuild/android-arm": "0.25.9", + "@esbuild/android-arm64": "0.25.9", + "@esbuild/android-x64": "0.25.9", + "@esbuild/darwin-arm64": "0.25.9", + "@esbuild/darwin-x64": "0.25.9", + "@esbuild/freebsd-arm64": "0.25.9", + "@esbuild/freebsd-x64": "0.25.9", + "@esbuild/linux-arm": "0.25.9", + "@esbuild/linux-arm64": "0.25.9", + "@esbuild/linux-ia32": "0.25.9", + "@esbuild/linux-loong64": "0.25.9", + "@esbuild/linux-mips64el": "0.25.9", + "@esbuild/linux-ppc64": "0.25.9", + "@esbuild/linux-riscv64": "0.25.9", + "@esbuild/linux-s390x": "0.25.9", + "@esbuild/linux-x64": "0.25.9", + "@esbuild/netbsd-arm64": "0.25.9", + "@esbuild/netbsd-x64": "0.25.9", + "@esbuild/openbsd-arm64": "0.25.9", + "@esbuild/openbsd-x64": "0.25.9", + "@esbuild/openharmony-arm64": "0.25.9", + "@esbuild/sunos-x64": "0.25.9", + "@esbuild/win32-arm64": "0.25.9", + "@esbuild/win32-ia32": "0.25.9", + "@esbuild/win32-x64": "0.25.9" } }, - "node_modules/esbuild/node_modules/@esbuild/win32-x64": { - "version": "0.20.1", - "cpu": [ - "x64" - ], + "node_modules/esbuild-wasm": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.25.9.tgz", + "integrity": "sha512-Jpv5tCSwQg18aCqCRD3oHIX/prBhXMDapIoG//A+6+dV0e7KQMGFg85ihJ5T1EeMjbZjON3TqFy0VrGAnIHLDA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/escalade": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", "engines": { "node": ">=6" @@ -7214,11 +8841,15 @@ }, "node_modules/escape-html": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true, "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==", "dev": true, "license": "MIT", "engines": { @@ -7229,113 +8860,100 @@ } }, "node_modules/eslint": { - "version": "7.32.0", + "version": "9.38.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", + "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.1", + "@eslint/core": "^0.16.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.38.0", + "@eslint/plugin-kit": "^0.4.0", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-scope": { - "version": "5.1.1", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=6" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { - "version": "2.1.0", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/@babel/code-frame": { - "version": "7.12.11", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -7349,59 +8967,36 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/espree": { - "version": "7.3.1", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", @@ -7413,6 +9008,8 @@ }, "node_modules/esquery": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -7422,16 +9019,10 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -7441,16 +9032,10 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/estraverse": { - "version": "4.3.0", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -7459,6 +9044,8 @@ }, "node_modules/esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -7467,6 +9054,8 @@ }, "node_modules/etag": { "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, "license": "MIT", "engines": { @@ -7475,212 +9064,216 @@ }, "node_modules/eventemitter3": { "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true, "license": "MIT" }, "node_modules/events": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "license": "MIT", "engines": { "node": ">=0.8.x" } }, - "node_modules/execa": { - "version": "5.1.1", + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "eventsource-parser": "^3.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=18.0.0" } }, - "node_modules/exit": { - "version": "0.1.2", + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.8.0" + "node": ">=18.0.0" + } + }, + "node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/exponential-backoff": { - "version": "3.1.2", + "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" }, "node_modules/express": { - "version": "4.21.2", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/express" } }, - "node_modules/express/node_modules/cookie": { - "version": "0.7.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/encodeurl": { - "version": "2.0.0", + "node_modules/express-rate-limit": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz", + "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/finalhandler": { - "version": "1.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "node": ">= 16" }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/express/node_modules/statuses": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" } }, "node_modules/extend": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true, "license": "MIT" }, - "node_modules/external-editor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, "node_modules/fast-deep-equal": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "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==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, "license": "MIT" }, + "node_modules/fast-uri": { + "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": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/fastparse": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", "dev": true, "license": "MIT" }, "node_modules/fastq": { "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -7688,6 +9281,8 @@ }, "node_modules/faye-websocket": { "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -7697,45 +9292,47 @@ "node": ">=0.8.0" } }, - "node_modules/figures": { - "version": "3.2.0", - "dev": true, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, "engines": { - "node": ">=8" + "node": ">=12.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, "node_modules/file-entry-cache": { - "version": "6.0.1", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/file-saver": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==", "license": "MIT" }, "node_modules/fill-range": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -7745,75 +9342,44 @@ } }, "node_modules/finalhandler": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/finalhandler/node_modules/on-finished": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-cache-dir": { - "version": "4.0.0", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", "dev": true, "license": "MIT", "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.8" } }, "node_modules/find-up": { - "version": "4.1.0", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, "license": "BSD-3-Clause", "bin": { @@ -7821,25 +9387,30 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.9", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "dev": true, "funding": [ { @@ -7859,6 +9430,8 @@ }, "node_modules/foreground-child": { "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { @@ -7872,40 +9445,10 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/forwarded": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, "license": "MIT", "engines": { @@ -7914,6 +9457,8 @@ }, "node_modules/fraction.js": { "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, "license": "MIT", "engines": { @@ -7925,15 +9470,19 @@ } }, "node_modules/fresh": { - "version": "0.5.2", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "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": { @@ -7947,6 +9496,8 @@ }, "node_modules/fs-minipass": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, "license": "ISC", "dependencies": { @@ -7956,29 +9507,42 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/fs-monkey": { - "version": "1.0.6", - "dev": true, - "license": "Unlicense" - }, "node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "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", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -7986,13 +9550,29 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-east-asian-width": { + "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==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-intrinsic": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8014,16 +9594,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/get-proto": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, "license": "MIT", "dependencies": { @@ -8034,27 +9608,12 @@ "node": ">= 0.4" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "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", @@ -8072,55 +9631,59 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", + "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.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" + } + }, + "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": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, "node_modules/glob-to-regexp": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, "license": "BSD-2-Clause" }, "node_modules/globals": { - "version": "11.12.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "13.2.2", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/ignore": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/gopd": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", "engines": { @@ -8132,98 +9695,32 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, - "node_modules/guid-typescript": { - "version": "1.0.9", - "license": "ISC" - }, "node_modules/handle-thing": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true, "license": "MIT" }, - "node_modules/har-schema": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/har-validator/node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/har-validator/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", "engines": { @@ -8235,6 +9732,8 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", "dependencies": { @@ -8249,6 +9748,9 @@ }, "node_modules/hasown": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -8258,23 +9760,32 @@ } }, "node_modules/hosted-git-info": { - "version": "7.0.2", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz", + "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==", "dev": true, "license": "ISC", "dependencies": { - "lru-cache": "^10.0.1" + "lru-cache": "^11.1.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.4.3", + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", + "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", "dev": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": "20 || >=22" + } }, "node_modules/hpack.js": { "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8286,6 +9797,8 @@ }, "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": { @@ -8300,39 +9813,32 @@ }, "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-entities": { - "version": "2.6.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, "node_modules/html-escaper": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT" }, "node_modules/htmlparser2": { - "version": "8.0.2", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", + "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -8345,22 +9851,41 @@ "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" + "domutils": "^3.2.1", + "entities": "^6.0.0" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/http-cache-semantics": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", "dev": true, "license": "BSD-2-Clause" }, "node_modules/http-deceiver": { "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", "dev": true, "license": "MIT" }, "node_modules/http-errors": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8376,6 +9901,8 @@ }, "node_modules/http-errors/node_modules/statuses": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, "license": "MIT", "engines": { @@ -8384,11 +9911,15 @@ }, "node_modules/http-parser-js": { "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", "dev": true, "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8402,6 +9933,8 @@ }, "node_modules/http-proxy-agent": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { @@ -8413,75 +9946,68 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.8", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.5.tgz", + "integrity": "sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==", "dev": true, "license": "MIT", "dependencies": { - "@types/http-proxy": "^1.17.8", + "@types/http-proxy": "^1.17.15", + "debug": "^4.3.6", "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "is-glob": "^4.0.3", + "is-plain-object": "^5.0.0", + "micromatch": "^4.0.8" }, "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/https-proxy-agent": { - "version": "7.0.4", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { "node": ">= 14" } }, - "node_modules/human-signals": { - "version": "2.1.0", + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { - "node": ">=10.17.0" + "node": ">=10.18" } }, "node_modules/iconv-lite": { - "version": "0.4.24", + "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" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/icss-utils": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, "license": "ISC", "engines": { @@ -8491,27 +10017,10 @@ "postcss": "^8.1.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "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": "BSD-3-Clause" - }, "node_modules/ignore": { - "version": "4.0.6", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { @@ -8519,33 +10028,29 @@ } }, "node_modules/ignore-walk": { - "version": "6.0.5", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-8.0.0.tgz", + "integrity": "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==", "dev": true, "license": "ISC", "dependencies": { - "minimatch": "^9.0.0" + "minimatch": "^10.0.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/ignore-walk/node_modules/minimatch": { - "version": "9.0.5", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -8553,6 +10058,8 @@ }, "node_modules/image-size": { "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, "license": "MIT", "optional": true, @@ -8563,18 +10070,17 @@ "node": ">=0.10.0" } }, - "node_modules/immediate": { - "version": "3.0.6", - "dev": true, - "license": "MIT" - }, "node_modules/immutable": { - "version": "4.3.7", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz", + "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==", "dev": true, "license": "MIT" }, "node_modules/import-fresh": { "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8588,32 +10094,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -8622,87 +10118,53 @@ }, "node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, "license": "ISC" }, "node_modules/ini": { - "version": "4.1.2", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-5.0.0.tgz", + "integrity": "sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==", "dev": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/inquirer": { - "version": "9.2.15", - "dev": true, - "license": "MIT", - "dependencies": { - "@ljharb/through": "^2.3.12", - "ansi-escapes": "^4.3.2", - "chalk": "^5.3.0", - "cli-cursor": "^3.1.0", - "cli-width": "^4.1.0", - "external-editor": "^3.1.0", - "figures": "^3.2.0", - "lodash": "^4.17.21", - "mute-stream": "1.0.0", - "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "5.4.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/rxjs": { - "version": "7.8.2", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/ip-address": { - "version": "9.0.5", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", "dev": true, "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, "engines": { "node": ">= 12" } }, "node_modules/ipaddr.js": { - "version": "2.2.0", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, "license": "MIT", "engines": { - "node": ">= 10" + "node": ">= 0.10" } }, "node_modules/is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, "license": "MIT" }, "node_modules/is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -8713,6 +10175,9 @@ }, "node_modules/is-core-module": { "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -8725,14 +10190,16 @@ } }, "node_modules/is-docker": { - "version": "2.2.1", + "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": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8740,20 +10207,32 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "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": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -8762,58 +10241,65 @@ "node": ">=0.10.0" } }, - "node_modules/is-interactive": { + "node_modules/is-inside-container": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-lambda": { - "version": "1.0.1", + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", "dev": true, - "license": "MIT" - }, - "node_modules/is-number": { - "version": "7.0.0", "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-path-cwd": { - "version": "1.0.0", + "node_modules/is-network-error": { + "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": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-in-cwd": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-path-inside": "^1.0.0" + "node": ">=16" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-path-inside": { - "version": "1.0.1", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", - "dependencies": { - "path-is-inside": "^1.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" } }, "node_modules/is-plain-obj": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, "license": "MIT", "engines": { @@ -8824,18 +10310,26 @@ } }, "node_modules/is-plain-object": { - "version": "2.0.4", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, "engines": { "node": ">=0.10.0" } }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "license": "MIT" + }, "node_modules/is-regex": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, "license": "MIT", "dependencies": { @@ -8851,28 +10345,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/is-unicode-supported": { - "version": "0.1.0", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8880,27 +10360,38 @@ }, "node_modules/is-what": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "dev": true, "license": "MIT" }, "node_modules/is-wsl": { - "version": "2.2.0", + "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-docker": "^2.0.0" + "is-inside-container": "^1.0.0" }, "engines": { - "node": ">=8" + "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", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true, "license": "MIT" }, "node_modules/isbinaryfile": { "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, "license": "MIT", "engines": { @@ -8912,24 +10403,25 @@ }, "node_modules/isexe": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/isstream": { - "version": "0.1.2", - "dev": true, - "license": "MIT" - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -8937,30 +10429,26 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", + "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.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "semver": "^7.5.4" }, "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=10" } }, "node_modules/istanbul-lib-report": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -8974,6 +10462,8 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -8989,6 +10479,8 @@ }, "node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -8997,6 +10489,8 @@ }, "node_modules/istanbul-lib-source-maps/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", "dependencies": { @@ -9007,16 +10501,11 @@ "node": ">=6" } }, - "node_modules/istanbul-lib-source-maps/node_modules/pify": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/istanbul-lib-source-maps/node_modules/rimraf": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -9028,6 +10517,8 @@ }, "node_modules/istanbul-lib-source-maps/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": { @@ -9036,6 +10527,8 @@ }, "node_modules/istanbul-lib-source-maps/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -9043,7 +10536,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.7", + "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": { @@ -9056,6 +10551,8 @@ }, "node_modules/jackspeak": { "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -9068,47 +10565,124 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/jasmine": { - "version": "2.8.0", + "node_modules/jasmine-core": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.12.0.tgz", + "integrity": "sha512-QqO4pX33GEML5JoGQU6BM5NHKPgEsg+TXp3jCIDek9MbfEp2JUYEFBo9EF1+hegWy/bCHS1m5nP0BOp18G6rVA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/jasmine-spec-reporter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz", + "integrity": "sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "colors": "1.4.0" + } + }, + "node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", "dev": true, "license": "MIT", "dependencies": { - "exit": "^0.1.2", - "glob": "^7.0.6", - "jasmine-core": "~2.8.0" + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" }, - "bin": { - "jasmine": "bin/jasmine.js" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jasmine-core": { - "version": "3.99.1", + "node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/jasmine-spec-reporter": { - "version": "5.0.2", + "node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "colors": "1.4.0" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jasmine/node_modules/jasmine-core": { - "version": "2.8.0", + "node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/jasminewd2": { - "version": "2.2.0", + "node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, "engines": { - "node": ">= 6.9.x" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-worker": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "license": "MIT", "dependencies": { @@ -9122,6 +10696,8 @@ }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -9136,34 +10712,38 @@ }, "node_modules/jiti": { "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, "license": "MIT", + "peer": true, "bin": { "jiti": "bin/jiti.js" } }, "node_modules/js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, "node_modules/jsesc": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -9174,39 +10754,39 @@ }, "node_modules/json-buffer": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, "license": "MIT" }, "node_modules/json-parse-even-better-errors": { - "version": "3.0.2", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz", + "integrity": "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==", "dev": true, "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/json-schema": { - "version": "0.4.0", - "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)" - }, "node_modules/json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, "license": "MIT" }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "dev": true, - "license": "ISC" - }, "node_modules/json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -9216,12 +10796,16 @@ } }, "node_modules/jsonc-parser": { - "version": "3.2.1", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "dev": true, "license": "MIT" }, "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": { @@ -9230,72 +10814,30 @@ }, "node_modules/jsonparse": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, "engines": [ "node >= 0.2.0" ], "license": "MIT" }, - "node_modules/jsprim": { - "version": "1.4.2", - "dev": true, + "node_modules/jwt-decode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", "license": "MIT", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/jszip": { - "version": "3.10.1", - "dev": true, - "license": "(MIT OR GPL-3.0-or-later)", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/jszip/node_modules/readable-stream": { - "version": "2.3.8", - "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/jszip/node_modules/safe-buffer": { - "version": "5.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/jszip/node_modules/string_decoder": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" + "node": ">=18" } }, - "node_modules/jwt-decode": { - "version": "3.1.2", - "license": "MIT" - }, "node_modules/karma": { "version": "6.4.4", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz", + "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@colors/colors": "1.5.0", "body-parser": "^1.19.0", @@ -9326,103 +10868,373 @@ "karma": "bin/karma" }, "engines": { - "node": ">= 10" + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", + "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-chrome-launcher/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/karma-coverage-istanbul-reporter": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", + "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", + "dev": true, + "license": "MIT", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", + "minimatch": "^3.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/mattlewis92" + } + }, + "node_modules/karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "jasmine-core": "^4.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", + "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "jasmine-core": "^4.0.0 || ^5.0.0", + "karma": "^6.0.0", + "karma-jasmine": "^5.0.0" + } + }, + "node_modules/karma-jasmine/node_modules/jasmine-core": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.1.tgz", + "integrity": "sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "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/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/karma/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/karma/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.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==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/karma/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/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", + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/karma/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/karma/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/karma-chrome-launcher": { - "version": "3.1.1", + "node_modules/karma/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/karma/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", - "dependencies": { - "which": "^1.2.1" + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/karma-chrome-launcher/node_modules/which": { - "version": "1.3.1", + "node_modules/karma/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause", "dependencies": { - "isexe": "^2.0.0" + "side-channel": "^1.0.6" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/karma-coverage-istanbul-reporter": { - "version": "3.0.3", + "node_modules/karma/node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "license": "MIT", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^3.0.2", - "minimatch": "^3.0.4" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/mattlewis92" + "engines": { + "node": ">= 0.8" } }, - "node_modules/karma-jasmine": { - "version": "4.0.2", + "node_modules/karma/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", "dependencies": { - "jasmine-core": "^3.6.0" + "picomatch": "^2.2.1" }, "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "karma": "*" + "node": ">=8.10.0" } }, - "node_modules/karma-jasmine-html-reporter": { - "version": "1.7.0", + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "MIT", - "peerDependencies": { - "jasmine-core": ">=3.8", - "karma": ">=0.9", - "karma-jasmine": ">=1.1" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/karma-source-map-support": { - "version": "1.4.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": { - "source-map-support": "^0.5.5" + "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/cliui": { - "version": "7.0.4", + "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": "ISC", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/karma/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/karma/node_modules/tmp": { - "version": "0.2.3", + "node_modules/karma/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, "engines": { - "node": ">=14.14" + "node": ">= 0.6" } }, "node_modules/karma/node_modules/ua-parser-js": { - "version": "0.7.40", + "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": [ { @@ -9448,6 +11260,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==", "dev": true, "license": "MIT", "dependencies": { @@ -9464,6 +11278,8 @@ }, "node_modules/karma/node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "license": "MIT", "dependencies": { @@ -9481,6 +11297,8 @@ }, "node_modules/karma/node_modules/yargs-parser": { "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "license": "ISC", "engines": { @@ -9489,6 +11307,8 @@ }, "node_modules/keyv": { "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", "dependencies": { @@ -9497,35 +11317,36 @@ }, "node_modules/kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/klona": { - "version": "2.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, "node_modules/launch-editor": { - "version": "2.10.0", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz", + "integrity": "sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.8.1" + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" } }, "node_modules/leaflet": { "version": "1.9.4", - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==", + "license": "BSD-2-Clause", + "peer": true }, "node_modules/leaflet-geosearch": { "version": "3.6.1", + "resolved": "https://registry.npmjs.org/leaflet-geosearch/-/leaflet-geosearch-3.6.1.tgz", + "integrity": "sha512-Axf8e8kXulC9BCQ9yql6nHyKE7xm/oJDuZsWGDjrprto0rAlCv39tbPs5mn3LrpGOpKcrmJtAt1UkUmkVW47FA==", "license": "MIT", "optionalDependencies": { "leaflet": "^1.6.0" @@ -9533,10 +11354,14 @@ }, "node_modules/leaflet.fullscreen": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/leaflet.fullscreen/-/leaflet.fullscreen-3.0.1.tgz", + "integrity": "sha512-Lsg49e4AYSjHOhmy+VOm4+O6Urim2UvthydKJI3KzfwC3InYkfvJtv1mWuOb9K7qG4H2MtEut09Dz6noQyJARQ==", "license": "MIT" }, "node_modules/leaflet.markercluster": { "version": "1.5.3", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.3.tgz", + "integrity": "sha512-vPTw/Bndq7eQHjLBVlWpnGeLa3t+3zGiuM7fJwCkiMFq+nmRuG3RI3f7f4N4TDX7T4NpbAXpR2+NTRSEGfCSeA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -9544,9 +11369,12 @@ } }, "node_modules/less": { - "version": "4.2.0", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.4.0.tgz", + "integrity": "sha512-kdTwsyRuncDfjEs0DlRILWNvxhDG/Zij4YLO4TMJgDLW+8OzpfkdPnRgrsRuY1o+oaxJGWsps5f/RVBgGmmN0w==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -9556,7 +11384,7 @@ "lessc": "bin/lessc" }, "engines": { - "node": ">=6" + "node": ">=14" }, "optionalDependencies": { "errno": "^0.1.1", @@ -9569,26 +11397,36 @@ } }, "node_modules/less-loader": { - "version": "11.1.0", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.3.0.tgz", + "integrity": "sha512-0M6+uYulvYIWs52y0LqN4+QM9TqWAohYSNTo4htE8Z7Cn3G/qQMEmktfHmyJT23k+20kU9zHH2wrfFXkxNLtVw==", "dev": true, "license": "MIT", - "dependencies": { - "klona": "^2.0.4" - }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "less": "^3.5.0 || ^4.0.0", "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "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, @@ -9602,6 +11440,8 @@ }, "node_modules/less/node_modules/mime": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, "license": "MIT", "optional": true, @@ -9612,17 +11452,10 @@ "node": ">=4" } }, - "node_modules/less/node_modules/pify": { - "version": "4.0.1", - "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, @@ -9632,6 +11465,8 @@ }, "node_modules/less/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "optional": true, @@ -9641,6 +11476,8 @@ }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9653,6 +11490,8 @@ }, "node_modules/license-webpack-plugin": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", "dev": true, "license": "ISC", "dependencies": { @@ -9667,29 +11506,116 @@ } } }, - "node_modules/lie": { - "version": "3.3.0", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.1.tgz", + "integrity": "sha512-SL0JY3DaxylDuo/MecFeiC+7pedM0zia33zl0vcjgwcq1q1FWWF1To9EIauPbl8GbMCU0R2e0uJ8bZunhYKD2g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "immediate": "~3.0.5" + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", + "node_modules/listr2/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/listr2/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "dev": true, "license": "MIT" }, + "node_modules/listr2/node_modules/wrap-ansi": { + "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": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/lmdb": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.2.tgz", + "integrity": "sha512-nwVGUfTBUwJKXd6lRV8pFNfnrCC1+l49ESJRM19t/tFb/97QfJEixe5DYRvug5JO7DSFKoKaVy7oGMt5rVqZvg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "msgpackr": "^1.11.2", + "node-addon-api": "^6.1.0", + "node-gyp-build-optional-packages": "5.2.2", + "ordered-binary": "^1.5.3", + "weak-lru-cache": "^1.2.2" + }, + "bin": { + "download-lmdb-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "3.4.2", + "@lmdb/lmdb-darwin-x64": "3.4.2", + "@lmdb/lmdb-linux-arm": "3.4.2", + "@lmdb/lmdb-linux-arm64": "3.4.2", + "@lmdb/lmdb-linux-x64": "3.4.2", + "@lmdb/lmdb-win32-arm64": "3.4.2", + "@lmdb/lmdb-win32-x64": "3.4.2" + } + }, "node_modules/loader-runner": { - "version": "4.3.0", + "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": { - "version": "3.2.1", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", "dev": true, "license": "MIT", "engines": { @@ -9697,53 +11623,173 @@ } }, "node_modules/locate-path": { - "version": "5.0.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true, "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true, "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, "license": "MIT" }, - "node_modules/lodash.truncate": { - "version": "4.4.2", + "node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/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/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" + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } }, - "node_modules/log-symbols": { - "version": "4.1.0", + "node_modules/log-update/node_modules/wrap-ansi": { + "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": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/log4js": { "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -9759,24 +11805,27 @@ }, "node_modules/lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/magic-string": { - "version": "0.30.8", + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "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": { @@ -9791,41 +11840,38 @@ }, "node_modules/make-error": { "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true, "license": "ISC" }, "node_modules/make-fetch-happen": { - "version": "13.0.1", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz", + "integrity": "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==", "dev": true, "license": "ISC", "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", + "@npmcli/agent": "^3.0.0", + "cacache": "^19.0.1", "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", + "minipass-fetch": "^4.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "proc-log": "^4.2.0", + "negotiator": "^1.0.0", + "proc-log": "^5.0.0", "promise-retry": "^2.0.1", - "ssri": "^10.0.0" + "ssri": "^12.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/proc-log": { - "version": "4.2.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/math-intrinsics": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, "license": "MIT", "engines": { @@ -9833,39 +11879,59 @@ } }, "node_modules/media-typer": { - "version": "0.3.0", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/memfs": { - "version": "3.5.3", + "version": "4.49.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.49.0.tgz", + "integrity": "sha512-L9uC9vGuc4xFybbdOpRLoOAOq1YEBBsocCs5NVW32DfU+CZWWIn3OVF+lB8Gp4ttBVSMazwrTrjv8ussX/e3VQ==", "dev": true, - "license": "Unlicense", + "license": "Apache-2.0", "dependencies": { - "fs-monkey": "^1.0.4" + "@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" } }, "node_modules/merge-descriptors": { - "version": "1.0.3", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "dev": true, "license": "MIT", + "engines": { + "node": ">=18" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/merge-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -9873,6 +11939,8 @@ }, "node_modules/methods": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, "license": "MIT", "engines": { @@ -9881,10 +11949,15 @@ }, "node_modules/mgrs": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mgrs/-/mgrs-1.0.0.tgz", + "integrity": "sha512-awNbTOqCxK1DBGjalK3xqWIstBZgN6fxsMSiXLs9/spqWkF2pAhb2rrYCFSsr1/tT7PhcDGjZndG8SWYn0byYA==", "license": "MIT" }, "node_modules/micromatch": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -9896,6 +11969,9 @@ }, "node_modules/micromatch/node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -9906,6 +11982,8 @@ }, "node_modules/mime": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, "license": "MIT", "bin": { @@ -9916,7 +11994,9 @@ } }, "node_modules/mime-db": { - "version": "1.52.0", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "dev": true, "license": "MIT", "engines": { @@ -9924,26 +12004,35 @@ } }, "node_modules/mime-types": { - "version": "2.1.35", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.54.0" }, "engines": { "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mini-css-extract-plugin": { - "version": "2.8.1", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz", + "integrity": "sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9963,11 +12052,16 @@ }, "node_modules/minimalistic-assert": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true, "license": "ISC" }, "node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -9978,6 +12072,9 @@ }, "node_modules/minimist": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9985,6 +12082,8 @@ }, "node_modules/minipass": { "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, "license": "ISC", "engines": { @@ -9993,6 +12092,8 @@ }, "node_modules/minipass-collect": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dev": true, "license": "ISC", "dependencies": { @@ -10003,16 +12104,18 @@ } }, "node_modules/minipass-fetch": { - "version": "3.0.5", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.1.tgz", + "integrity": "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==", "dev": true, "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "minizlib": "^3.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" }, "optionalDependencies": { "encoding": "^0.1.13" @@ -10020,6 +12123,8 @@ }, "node_modules/minipass-flush": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, "license": "ISC", "dependencies": { @@ -10031,6 +12136,8 @@ }, "node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "license": "ISC", "dependencies": { @@ -10042,36 +12149,15 @@ }, "node_modules/minipass-flush/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/minipass-json-stream": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-json-stream/node_modules/yallist": { - "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, "license": "ISC" }, "node_modules/minipass-pipeline": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "license": "ISC", "dependencies": { @@ -10083,6 +12169,8 @@ }, "node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "license": "ISC", "dependencies": { @@ -10094,11 +12182,15 @@ }, "node_modules/minipass-pipeline/node_modules/yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, "license": "ISC" }, "node_modules/minipass-sized": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, "license": "ISC", "dependencies": { @@ -10110,6 +12202,8 @@ }, "node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "license": "ISC", "dependencies": { @@ -10121,39 +12215,29 @@ }, "node_modules/minipass-sized/node_modules/yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, "license": "ISC" }, "node_modules/minizlib": { - "version": "2.1.2", + "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": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.1.2" }, "engines": { - "node": ">=8" + "node": ">= 18" } }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/mkdirp": { "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, "license": "MIT", "dependencies": { "minimist": "^1.2.6" @@ -10164,18 +12248,25 @@ }, "node_modules/moment": { "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "license": "MIT", + "peer": true, "engines": { "node": "*" } }, "node_modules/monaco-editor": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.44.0.tgz", - "integrity": "sha512-5SmjNStN6bSuSE5WPT2ZV+iYn1/yI9sd4Igtk23ChvqB7kDk9lZbB9F5frsuvpB+2njdIeGGFf2G4gbE6rCC9Q==" + "version": "0.52.2", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz", + "integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==", + "license": "MIT", + "peer": true }, "node_modules/mrmime": { - "version": "2.0.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", "dev": true, "license": "MIT", "engines": { @@ -10184,10 +12275,48 @@ }, "node_modules/ms": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/msgpackr": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz", + "integrity": "sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==", + "dev": true, + "license": "MIT", + "optional": true, + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + } + }, "node_modules/multicast-dns": { "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, "license": "MIT", "dependencies": { @@ -10199,15 +12328,19 @@ } }, "node_modules/mute-stream": { - "version": "1.0.0", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/nanoid": { "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -10225,11 +12358,15 @@ }, "node_modules/natural-compare": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, "license": "MIT" }, "node_modules/needle": { "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", "dev": true, "license": "MIT", "optional": true, @@ -10246,6 +12383,8 @@ }, "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, @@ -10257,7 +12396,9 @@ } }, "node_modules/negotiator": { - "version": "0.6.4", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, "license": "MIT", "engines": { @@ -10266,14 +12407,15 @@ }, "node_modules/neo-async": { "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, "license": "MIT" }, - "node_modules/ng": { - "version": "0.0.0" - }, "node_modules/ng-inline-svg-2": { - "version": "15.0.1", + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/ng-inline-svg-2/-/ng-inline-svg-2-20.0.1.tgz", + "integrity": "sha512-bxPHPFiI/n0o2v/IW+OQthcp3AFF8KgqHGccAlBrxitJ27KgReIrxQ0Yu82Ayc1ZMU65hWIwzQeJ8FFPHv7qRw==", "license": "MIT", "peerDependencies": { "@angular/common": ">=14.0.2", @@ -10281,60 +12423,55 @@ "rxjs": "^6.6.0 || ^7.4.0" } }, - "node_modules/ngrx-store-freeze": { - "version": "0.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-freeze-strict": "^1.1.1" - }, - "peerDependencies": { - "@ngrx/store": ">=4.0.0" - } - }, "node_modules/ngx-cookie-service": { - "version": "17.1.0", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-20.1.0.tgz", + "integrity": "sha512-g7Ddq8097qujmJfoEK27H12KLEpuO4SBPhoOYQ2kmLMSvz65vRrSKVwzOxdc75cFLQPW45Jfyyg3LoMTjKW0uA==", "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "tslib": "^2.8.0" }, "peerDependencies": { - "@angular/common": "^17.0.0", - "@angular/core": "^17.0.0" + "@angular/common": "^20.0.0", + "@angular/core": "^20.0.0" } }, "node_modules/ngx-monaco-editor-v2": { - "version": "17.0.1", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/ngx-monaco-editor-v2/-/ngx-monaco-editor-v2-20.3.0.tgz", + "integrity": "sha512-j6zZIOYdSSUnbo58RWox2ZMEzIlA3lN/QchJREb1j734kUeJM1aW9RMz6FpkKt/UW1okdCTGZCnAavtKGou/2Q==", "license": "MIT", "dependencies": { "tslib": "^2.1.0" }, "peerDependencies": { - "@angular/common": "^17.0.3", - "@angular/core": "^17.0.3", - "monaco-editor": "^0.44.0" + "@angular/common": "^20.3.2", + "@angular/core": "^20.3.2", + "monaco-editor": "^0.52.2" } }, "node_modules/ngx-papaparse": { - "version": "5.1.0", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ngx-papaparse/-/ngx-papaparse-8.0.0.tgz", + "integrity": "sha512-LPQilHmH+VRhiAMcORG7qRWsO7aB/zi/KSc6CORyeqGgRQOIx55DTc8icn7GkH6HoKxl94l9HeHIgo7zTKLg0g==", "license": "MIT", "dependencies": { - "papaparse": "^5.3.2", - "tslib": "^1.10.0" + "papaparse": "^5.4.1", + "tslib": "^2.6.1" } }, - "node_modules/ngx-papaparse/node_modules/tslib": { - "version": "1.14.1", - "license": "0BSD" - }, "node_modules/node-addon-api": { - "version": "3.2.1", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", "dev": true, "license": "MIT", "optional": true }, "node_modules/node-forge": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { @@ -10342,98 +12479,87 @@ } }, "node_modules/node-gyp": { - "version": "10.3.1", + "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": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^13.0.0", - "nopt": "^7.0.0", - "proc-log": "^4.1.0", + "make-fetch-happen": "^14.0.3", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", "semver": "^7.3.5", - "tar": "^6.2.1", - "which": "^4.0.0" + "tar": "^7.4.3", + "tinyglobby": "^0.2.12", + "which": "^5.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/node-gyp-build": { - "version": "4.8.4", + "node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", "dev": true, "license": "MIT", "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-gyp/node_modules/brace-expansion": { - "version": "2.0.2", - "dev": true, - "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" } }, - "node_modules/node-gyp/node_modules/glob": { - "version": "10.4.5", + "node_modules/node-gyp/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": "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" + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, "node_modules/node-gyp/node_modules/isexe": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, "license": "ISC", "engines": { "node": ">=16" } }, - "node_modules/node-gyp/node_modules/minimatch": { - "version": "9.0.5", + "node_modules/node-gyp/node_modules/tar": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz", + "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-gyp/node_modules/proc-log": { - "version": "4.2.0", - "dev": true, - "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=18" } }, "node_modules/node-gyp/node_modules/which": { - "version": "4.0.0", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, "license": "ISC", "dependencies": { @@ -10443,42 +12569,46 @@ "node-which": "bin/which.js" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/node-gyp/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, "node_modules/node-releases": { - "version": "2.0.19", + "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": { - "version": "7.2.1", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", + "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", "dev": true, "license": "ISC", "dependencies": { - "abbrev": "^2.0.0" + "abbrev": "^3.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/normalize-package-data": { - "version": "6.0.2", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10486,6 +12616,8 @@ }, "node_modules/normalize-range": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, "license": "MIT", "engines": { @@ -10493,113 +12625,183 @@ } }, "node_modules/npm-bundled": { - "version": "3.0.1", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-4.0.0.tgz", + "integrity": "sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==", "dev": true, "license": "ISC", "dependencies": { - "npm-normalize-package-bin": "^3.0.0" + "npm-normalize-package-bin": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-install-checks": { - "version": "6.3.0", + "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": { "semver": "^7.1.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-normalize-package-bin": { - "version": "3.0.1", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz", + "integrity": "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==", "dev": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-package-arg": { - "version": "11.0.1", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.0.tgz", + "integrity": "sha512-+t2etZAGcB7TbbLHfDwooV9ppB2LhhcT6A+L9cahsf9mEUAoQ6CktLEVvEnpD0N5CkX7zJqnPGaFtoQDy9EkHQ==", "dev": true, "license": "ISC", "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^3.0.0", + "hosted-git-info": "^9.0.0", + "proc-log": "^5.0.0", "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" + "validate-npm-package-name": "^6.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/npm-packlist": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.2.tgz", + "integrity": "sha512-DrIWNiWT0FTdDRjGOYfEEZUNe1IzaSZ+up7qBTKnrQDySpdmuOQvytrqQlpK5QrCA4IThMvL4wTumqaa1ZvVIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^8.0.0", + "proc-log": "^5.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-10.0.0.tgz", + "integrity": "sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^7.1.0", + "npm-normalize-package-bin": "^4.0.0", + "npm-package-arg": "^12.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/npm-packlist": { - "version": "8.0.2", + "node_modules/npm-pick-manifest/node_modules/hosted-git-info": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", + "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", "dev": true, "license": "ISC", "dependencies": { - "ignore-walk": "^6.0.4" + "lru-cache": "^10.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/npm-pick-manifest": { - "version": "9.0.0", + "node_modules/npm-pick-manifest/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/npm-pick-manifest/node_modules/npm-package-arg": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.2.tgz", + "integrity": "sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==", "dev": true, "license": "ISC", "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", - "semver": "^7.3.5" + "hosted-git-info": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^6.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-registry-fetch": { - "version": "16.2.1", + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-18.0.2.tgz", + "integrity": "sha512-LeVMZBBVy+oQb5R6FDV9OlJCcWDU+al10oKpe+nsvcHnG24Z3uM3SvJYKfGJlfGjVU8v9liejCrUR/M5HO5NEQ==", "dev": true, "license": "ISC", "dependencies": { - "@npmcli/redact": "^1.1.0", - "make-fetch-happen": "^13.0.0", + "@npmcli/redact": "^3.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^14.0.0", "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^4.0.0" + "minipass-fetch": "^4.0.0", + "minizlib": "^3.0.1", + "npm-package-arg": "^12.0.0", + "proc-log": "^5.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/npm-registry-fetch/node_modules/proc-log": { - "version": "4.2.0", + "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", + "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", "dev": true, "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", + "node_modules/npm-registry-fetch/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": "MIT", + "license": "ISC" + }, + "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.2.tgz", + "integrity": "sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==", + "dev": true, + "license": "ISC", "dependencies": { - "path-key": "^3.0.0" + "hosted-git-info": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^6.0.0" }, "engines": { - "node": ">=8" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/nth-check": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -10609,16 +12811,10 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, "node_modules/object-assign": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "license": "MIT", "engines": { @@ -10627,6 +12823,8 @@ }, "node_modules/object-inspect": { "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "license": "MIT", "engines": { @@ -10638,11 +12836,15 @@ }, "node_modules/obuf": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true, "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "license": "MIT", "dependencies": { @@ -10653,7 +12855,9 @@ } }, "node_modules/on-headers": { - "version": "1.0.2", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "dev": true, "license": "MIT", "engines": { @@ -10662,36 +12866,44 @@ }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { - "version": "5.1.2", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "mimic-function": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/open": { - "version": "8.4.2", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", "dev": true, "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10699,6 +12911,8 @@ }, "node_modules/optionator": { "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", "dependencies": { @@ -10714,149 +12928,208 @@ } }, "node_modules/ora": { - "version": "5.4.1", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", "dev": true, "license": "MIT", "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", + "node_modules/ora/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/ordered-binary": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.0.tgz", + "integrity": "sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/p-limit": { - "version": "2.3.0", + "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": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "4.1.0", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-map": { - "version": "4.0.0", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", "dev": true, "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-retry": { - "version": "4.6.2", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/retry": "0.12.0", + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" }, "engines": { - "node": ">=8" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-retry/node_modules/retry": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, "license": "MIT", "engines": { "node": ">= 4" } }, - "node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "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", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/pacote": { - "version": "17.0.6", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.0.tgz", + "integrity": "sha512-lcqexq73AMv6QNLo7SOpz0JJoaGdS3rBFgF122NZVl1bApo2mfu+XzUBU/X/XsiJu+iUmKpekRayqQYAs+PhkA==", "dev": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.0", - "cacache": "^18.0.0", + "@npmcli/git": "^6.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "@npmcli/run-script": "^9.0.0", + "cacache": "^19.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", - "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", + "npm-package-arg": "^12.0.0", + "npm-packlist": "^10.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0", "promise-retry": "^2.0.1", - "read-package-json": "^7.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^2.2.0", - "ssri": "^10.0.0", + "sigstore": "^3.0.0", + "ssri": "^12.0.0", "tar": "^6.1.11" }, "bin": { - "pacote": "lib/bin.js" + "pacote": "bin/index.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/pako": { - "version": "1.0.11", + "node_modules/pacote/node_modules/hosted-git-info": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", + "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/pacote/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/pacote/node_modules/npm-package-arg": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.2.tgz", + "integrity": "sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==", "dev": true, - "license": "(MIT AND Zlib)" + "license": "ISC", + "dependencies": { + "hosted-git-info": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^6.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } }, "node_modules/papaparse": { "version": "5.5.3", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.5.3.tgz", + "integrity": "sha512-5QvjGxYVjxO59MGU2lHVYpRWBBtKHnlIAcSe1uNFCkkptUh63NFRj0FJQm7nR67puEruUci/ZkjmEFrjCAyP4A==", "license": "MIT" }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", "dependencies": { @@ -10868,6 +13141,8 @@ }, "node_modules/parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "license": "MIT", "dependencies": { @@ -10885,11 +13160,15 @@ }, "node_modules/parse-json/node_modules/json-parse-even-better-errors": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, "node_modules/parse-node-version": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, "license": "MIT", "engines": { @@ -10897,8 +13176,9 @@ } }, "node_modules/parse5": { - "version": "7.3.0", - "devOptional": true, + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz", + "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==", "license": "MIT", "dependencies": { "entities": "^6.0.0" @@ -10908,24 +13188,41 @@ } }, "node_modules/parse5-html-rewriting-stream": { - "version": "7.0.0", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-8.0.0.tgz", + "integrity": "sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==", "dev": true, "license": "MIT", "dependencies": { - "entities": "^4.3.0", - "parse5": "^7.0.0", - "parse5-sax-parser": "^7.0.0" + "entities": "^6.0.0", + "parse5": "^8.0.0", + "parse5-sax-parser": "^8.0.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5-html-rewriting-stream/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/parse5-sax-parser": { - "version": "7.0.0", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-8.0.0.tgz", + "integrity": "sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==", "dev": true, "license": "MIT", "dependencies": { - "parse5": "^7.0.0" + "parse5": "^8.0.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -10933,7 +13230,8 @@ }, "node_modules/parse5/node_modules/entities": { "version": "6.0.1", - "devOptional": true, + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -10944,6 +13242,8 @@ }, "node_modules/parseurl": { "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, "license": "MIT", "engines": { @@ -10952,6 +13252,8 @@ }, "node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { @@ -10960,18 +13262,18 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "dev": true, - "license": "(WTFPL OR MIT)" - }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", "engines": { @@ -10980,10 +13282,15 @@ }, "node_modules/path-parse": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -10999,34 +13306,32 @@ }, "node_modules/path-scurry/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/path-to-regexp": { - "version": "0.1.12", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, "node_modules/picocolors": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.1", - "dev": true, + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", "engines": { "node": ">=12" @@ -11036,144 +13341,42 @@ } }, "node_modules/pify": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, "license": "MIT", - "dependencies": { - "pinkie": "^2.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/piscina": { - "version": "4.4.0", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "nice-napi": "^1.0.2" - } - }, - "node_modules/piscina/node_modules/nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "!win32" - ], - "dependencies": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node_modules/pkg-dir": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^6.3.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "6.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "6.0.0", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-5.1.3.tgz", + "integrity": "sha512-0u3N7H4+hbr40KjuVn2uNhOcthu/9usKhnw5vT3J7ply79v3D3M8naI00el9Klcy16x557VsEkkUQaHCWFXC/g==", "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^4.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=20.x" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "@napi-rs/nice": "^1.0.4" } }, - "node_modules/pkg-dir/node_modules/path-exists": { + "node_modules/pkce-challenge": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", + "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/popper.js": { - "version": "1.16.1", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" + "node": ">=16.20.0" } }, "node_modules/postcss": { "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -11190,6 +13393,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -11201,6 +13405,8 @@ }, "node_modules/postcss-loader": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11231,11 +13437,15 @@ }, "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", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", "dev": true, "license": "MIT" }, "node_modules/postcss-modules-extract-imports": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, "license": "ISC", "engines": { @@ -11247,6 +13457,8 @@ }, "node_modules/postcss-modules-local-by-default": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "dev": true, "license": "MIT", "dependencies": { @@ -11263,6 +13475,8 @@ }, "node_modules/postcss-modules-scope": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "dev": true, "license": "ISC", "dependencies": { @@ -11277,6 +13491,8 @@ }, "node_modules/postcss-modules-values": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, "license": "ISC", "dependencies": { @@ -11291,6 +13507,8 @@ }, "node_modules/postcss-selector-parser": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "dev": true, "license": "MIT", "dependencies": { @@ -11303,11 +13521,15 @@ }, "node_modules/postcss-value-parser": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true, "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", "engines": { @@ -11315,42 +13537,70 @@ } }, "node_modules/prettier": { - "version": "2.8.8", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/proc-log": { - "version": "3.0.0", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz", + "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==", "dev": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/process-nextick-args": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true, "license": "MIT" }, - "node_modules/progress": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/proj4": { "version": "2.12.1", + "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.12.1.tgz", + "integrity": "sha512-vmhP3hmstjXjzFwg8QXJwpoj4n7GVrXk3ZW3DzNK/Ur4cuwXq7ZiMXaWYvLYLQbX8n4MXgbwTr4lthOUZltBpA==", "license": "MIT", "dependencies": { "mgrs": "1.0.0", @@ -11359,18 +13609,17 @@ }, "node_modules/proj4leaflet": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/proj4leaflet/-/proj4leaflet-1.0.2.tgz", + "integrity": "sha512-6GdDeUlhX/tHUiMEj80xQhlPjwrXcdfD0D5OBymY8WvxfbmZcdhNqQk7n7nFf53ue6QdP9ls9ZPjsAxnbZDTsw==", "license": "BSD-2-Clause", "dependencies": { "proj4": "^2.3.14" } }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "dev": true, - "license": "ISC" - }, "node_modules/promise-retry": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "license": "MIT", "dependencies": { @@ -11381,178 +13630,10 @@ "node": ">=10" } }, - "node_modules/protractor": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/q": "^0.0.32", - "@types/selenium-webdriver": "^3.0.0", - "blocking-proxy": "^1.0.0", - "browserstack": "^1.5.1", - "chalk": "^1.1.3", - "glob": "^7.0.3", - "jasmine": "2.8.0", - "jasminewd2": "^2.1.0", - "q": "1.4.1", - "saucelabs": "^1.5.0", - "selenium-webdriver": "3.6.0", - "source-map-support": "~0.4.0", - "webdriver-js-extender": "2.1.0", - "webdriver-manager": "^12.1.7", - "yargs": "^15.3.1" - }, - "bin": { - "protractor": "bin/protractor", - "webdriver-manager": "bin/webdriver-manager" - }, - "engines": { - "node": ">=10.13.x" - } - }, - "node_modules/protractor/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/protractor/node_modules/ansi-styles": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/protractor/node_modules/chalk": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/protractor/node_modules/cliui": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/protractor/node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/protractor/node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/protractor/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/protractor/node_modules/source-map": { - "version": "0.5.7", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/protractor/node_modules/source-map-support": { - "version": "0.4.18", - "dev": true, - "license": "MIT", - "dependencies": { - "source-map": "^0.5.6" - } - }, - "node_modules/protractor/node_modules/strip-ansi": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/protractor/node_modules/supports-color": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/protractor/node_modules/y18n": { - "version": "4.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/protractor/node_modules/yargs": { - "version": "15.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/protractor/node_modules/yargs-parser": { - "version": "18.1.3", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/proxy-addr": { "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "license": "MIT", "dependencies": { @@ -11563,55 +13644,25 @@ "node": ">= 0.10" } }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/prr": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, "license": "MIT", "optional": true }, - "node_modules/psl": { - "version": "1.15.0", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, - "node_modules/psl/node_modules/punycode": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/punycode": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true, "license": "MIT" }, - "node_modules/q": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, "node_modules/qjobs": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true, "license": "MIT", "engines": { @@ -11619,11 +13670,13 @@ } }, "node_modules/qs": { - "version": "6.13.0", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -11632,13 +13685,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "dev": true, - "license": "MIT" - }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -11657,6 +13708,8 @@ }, "node_modules/randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11665,6 +13718,8 @@ }, "node_modules/range-parser": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, "license": "MIT", "engines": { @@ -11672,88 +13727,32 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz", + "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==", "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", - "iconv-lite": "0.4.24", + "iconv-lite": "0.7.0", "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/read-package-json": { - "version": "7.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/read-package-json-fast": { - "version": "3.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-package-json/node_modules/brace-expansion": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/read-package-json/node_modules/glob": { - "version": "10.4.5", - "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": ">= 0.10" } }, - "node_modules/read-package-json/node_modules/minimatch": { - "version": "9.0.5", + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "license": "MIT" }, "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": { @@ -11762,40 +13761,39 @@ "util-deprecate": "^1.0.1" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" + "node": ">= 6" } }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">= 14.18.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/reflect-metadata": { "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", "license": "Apache-2.0" }, "node_modules/regenerate": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true, "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.2.0", + "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": { @@ -11805,38 +13803,26 @@ "node": ">=4" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "dev": true, - "license": "MIT" - }, "node_modules/regex-parser": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", + "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", "dev": true, "license": "MIT" }, - "node_modules/regexpp": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/regexpu-core": { - "version": "6.2.0", + "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" @@ -11844,71 +13830,29 @@ }, "node_modules/regjsgen": { "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", "dev": true, "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.12.0", + "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", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/request": { - "version": "2.88.2", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, "node_modules/require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11916,47 +13860,56 @@ }, "node_modules/require-from-string": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/requires-port": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true, "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.8", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-from": { - "version": "5.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/resolve-url-loader": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -11972,6 +13925,8 @@ }, "node_modules/resolve-url-loader/node_modules/loader-utils": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "license": "MIT", "dependencies": { @@ -11985,6 +13940,8 @@ }, "node_modules/resolve-url-loader/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -11992,19 +13949,26 @@ } }, "node_modules/restore-cursor": { - "version": "3.1.0", + "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": "^5.1.0", - "signal-exit": "^3.0.2" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/retry": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "license": "MIT", "engines": { @@ -12013,6 +13977,9 @@ }, "node_modules/reusify": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -12021,11 +13988,16 @@ }, "node_modules/rfdc": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "dev": true, "license": "MIT" }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -12038,315 +14010,83 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rollup": { - "version": "4.44.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.44.0", - "@rollup/rollup-android-arm64": "4.44.0", - "@rollup/rollup-darwin-arm64": "4.44.0", - "@rollup/rollup-darwin-x64": "4.44.0", - "@rollup/rollup-freebsd-arm64": "4.44.0", - "@rollup/rollup-freebsd-x64": "4.44.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.44.0", - "@rollup/rollup-linux-arm-musleabihf": "4.44.0", - "@rollup/rollup-linux-arm64-gnu": "4.44.0", - "@rollup/rollup-linux-arm64-musl": "4.44.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.44.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.44.0", - "@rollup/rollup-linux-riscv64-gnu": "4.44.0", - "@rollup/rollup-linux-riscv64-musl": "4.44.0", - "@rollup/rollup-linux-s390x-gnu": "4.44.0", - "@rollup/rollup-linux-x64-gnu": "4.44.0", - "@rollup/rollup-linux-x64-musl": "4.44.0", - "@rollup/rollup-win32-arm64-msvc": "4.44.0", - "@rollup/rollup-win32-ia32-msvc": "4.44.0", - "@rollup/rollup-win32-x64-msvc": "4.44.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup/node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.0.tgz", - "integrity": "sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-android-arm64": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.0.tgz", - "integrity": "sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz", - "integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-darwin-x64": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz", - "integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.0.tgz", - "integrity": "sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.0.tgz", - "integrity": "sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.0.tgz", - "integrity": "sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.0.tgz", - "integrity": "sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz", - "integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz", - "integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.0.tgz", - "integrity": "sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.0.tgz", - "integrity": "sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.0.tgz", - "integrity": "sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.0.tgz", - "integrity": "sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.0.tgz", - "integrity": "sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz", - "integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz", - "integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz", - "integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.44.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.0.tgz", - "integrity": "sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/rollup/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/rollup": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.3.tgz", + "integrity": "sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.52.3", + "@rollup/rollup-android-arm64": "4.52.3", + "@rollup/rollup-darwin-arm64": "4.52.3", + "@rollup/rollup-darwin-x64": "4.52.3", + "@rollup/rollup-freebsd-arm64": "4.52.3", + "@rollup/rollup-freebsd-x64": "4.52.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.52.3", + "@rollup/rollup-linux-arm-musleabihf": "4.52.3", + "@rollup/rollup-linux-arm64-gnu": "4.52.3", + "@rollup/rollup-linux-arm64-musl": "4.52.3", + "@rollup/rollup-linux-loong64-gnu": "4.52.3", + "@rollup/rollup-linux-ppc64-gnu": "4.52.3", + "@rollup/rollup-linux-riscv64-gnu": "4.52.3", + "@rollup/rollup-linux-riscv64-musl": "4.52.3", + "@rollup/rollup-linux-s390x-gnu": "4.52.3", + "@rollup/rollup-linux-x64-gnu": "4.52.3", + "@rollup/rollup-linux-x64-musl": "4.52.3", + "@rollup/rollup-openharmony-arm64": "4.52.3", + "@rollup/rollup-win32-arm64-msvc": "4.52.3", + "@rollup/rollup-win32-ia32-msvc": "4.52.3", + "@rollup/rollup-win32-x64-gnu": "4.52.3", + "@rollup/rollup-win32-x64-msvc": "4.52.3", + "fsevents": "~2.3.2" } }, - "node_modules/run-async": { - "version": "3.0.0", + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", "dev": true, "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": ">= 18" + } + }, + "node_modules/run-applescript": { + "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": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -12367,22 +14107,19 @@ } }, "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" + "tslib": "^2.1.0" } }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "license": "0BSD" - }, "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": [ { @@ -12402,6 +14139,8 @@ }, "node_modules/safe-regex-test": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, "license": "MIT", "dependencies": { @@ -12418,20 +14157,21 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "license": "MIT" }, - "node_modules/safevalues": { - "version": "0.3.4", - "license": "Apache-2.0" - }, "node_modules/sass": { - "version": "1.71.1", + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz", + "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", + "chokidar": "^4.0.0", + "immutable": "^5.0.2", "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { @@ -12439,10 +14179,15 @@ }, "engines": { "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" } }, "node_modules/sass-loader": { - "version": "14.1.1", + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz", + "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==", "dev": true, "license": "MIT", "dependencies": { @@ -12480,54 +14225,18 @@ } } }, - "node_modules/saucelabs": { - "version": "1.5.0", - "dev": true, - "dependencies": { - "https-proxy-agent": "^2.2.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/saucelabs/node_modules/agent-base": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "es6-promisify": "^5.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/saucelabs/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/saucelabs/node_modules/https-proxy-agent": { - "version": "2.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/sax": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "dev": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/schema-utils": { - "version": "4.3.2", + "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": { @@ -12544,49 +14253,35 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/select-hose": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/selenium-webdriver": { - "version": "3.6.0", + "node_modules/schema-utils/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "jszip": "^3.1.3", - "rimraf": "^2.5.4", - "tmp": "0.0.30", - "xml2js": "^0.4.17" + "ajv": "^8.0.0" }, - "engines": { - "node": ">= 6.9.0" - } - }, - "node_modules/selenium-webdriver/node_modules/rimraf": { - "version": "2.7.1", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" + "peerDependencies": { + "ajv": "^8.0.0" }, - "bin": { - "rimraf": "bin.js" + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/selenium-webdriver/node_modules/tmp": { - "version": "0.0.30", + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.1" - }, - "engines": { - "node": ">=0.4.0" - } + "license": "MIT" }, "node_modules/selfsigned": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -12598,11 +14293,10 @@ } }, "node_modules/semver": { - "version": "7.6.0", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -12612,6 +14306,8 @@ }, "node_modules/semver-dsl": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==", "dev": true, "license": "MIT", "dependencies": { @@ -12620,83 +14316,41 @@ }, "node_modules/semver-dsl/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/semver/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, "node_modules/send": { - "version": "0.19.0", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/send/node_modules/statuses": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" + "node": ">= 18" } }, "node_modules/serialize-javascript": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -12705,6 +14359,8 @@ }, "node_modules/serve-index": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "license": "MIT", "dependencies": { @@ -12720,8 +14376,24 @@ "node": ">= 0.8.0" } }, + "node_modules/serve-index/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/serve-index/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", "dependencies": { @@ -12730,6 +14402,8 @@ }, "node_modules/serve-index/node_modules/depd": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, "license": "MIT", "engines": { @@ -12738,6 +14412,8 @@ }, "node_modules/serve-index/node_modules/http-errors": { "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "license": "MIT", "dependencies": { @@ -12752,74 +14428,95 @@ }, "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true, "license": "ISC" }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", + "node_modules/serve-index/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/serve-static": { - "version": "1.16.2", + "node_modules/serve-index/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.6" } }, - "node_modules/serve-static/node_modules/encodeurl": { + "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/serve-index/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, - "node_modules/set-blocking": { - "version": "2.0.0", + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true, "license": "ISC" }, - "node_modules/set-function-length": { - "version": "1.2.2", + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, "engines": { - "node": ">= 0.4" + "node": ">= 0.6" } }, - "node_modules/setimmediate": { - "version": "1.0.5", + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } }, "node_modules/setprototypeof": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true, "license": "ISC" }, "node_modules/shallow-clone": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "license": "MIT", "dependencies": { @@ -12831,6 +14528,8 @@ }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", "dependencies": { @@ -12842,6 +14541,8 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", "engines": { @@ -12850,6 +14551,8 @@ }, "node_modules/shell-quote": { "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "dev": true, "license": "MIT", "engines": { @@ -12861,6 +14564,8 @@ }, "node_modules/side-channel": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, "license": "MIT", "dependencies": { @@ -12879,6 +14584,8 @@ }, "node_modules/side-channel-list": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, "license": "MIT", "dependencies": { @@ -12894,6 +14601,8 @@ }, "node_modules/side-channel-map": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, "license": "MIT", "dependencies": { @@ -12911,6 +14620,8 @@ }, "node_modules/side-channel-weakmap": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, "license": "MIT", "dependencies": { @@ -12924,59 +14635,84 @@ "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/signal-exit": { - "version": "3.0.7", - "dev": true, - "license": "ISC" - }, "node_modules/sigstore": { - "version": "2.3.1", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-3.1.0.tgz", + "integrity": "sha512-ZpzWAFHIFqyFE56dXqgX/DkDRZdz+rRcjoIk/RQU4IX0wiCv1l8S7ZrXDHcCc+uaf+6o7w3h2l3g6GYG5TKN9Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "@sigstore/sign": "^2.3.2", - "@sigstore/tuf": "^2.3.4", - "@sigstore/verify": "^1.2.1" + "@sigstore/bundle": "^3.1.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.4.0", + "@sigstore/sign": "^3.1.0", + "@sigstore/tuf": "^3.1.0", + "@sigstore/verify": "^2.1.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/slash": { - "version": "4.0.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/slice-ansi": { - "version": "4.0.0", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/slice-ansi/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/smart-buffer": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, "license": "MIT", "engines": { @@ -12986,6 +14722,8 @@ }, "node_modules/socket.io": { "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", "dev": true, "license": "MIT", "dependencies": { @@ -13003,6 +14741,8 @@ }, "node_modules/socket.io-adapter": { "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, "license": "MIT", "dependencies": { @@ -13012,6 +14752,8 @@ }, "node_modules/socket.io-adapter/node_modules/debug": { "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", "dependencies": { @@ -13028,6 +14770,8 @@ }, "node_modules/socket.io-parser": { "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, "license": "MIT", "dependencies": { @@ -13040,6 +14784,8 @@ }, "node_modules/socket.io-parser/node_modules/debug": { "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", "dependencies": { @@ -13054,8 +14800,24 @@ } } }, + "node_modules/socket.io/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/socket.io/node_modules/debug": { "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", "dependencies": { @@ -13070,8 +14832,43 @@ } } }, + "node_modules/socket.io/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/socket.io/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/socket.io/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/sockjs": { "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, "license": "MIT", "dependencies": { @@ -13080,20 +14877,14 @@ "websocket-driver": "^0.7.4" } }, - "node_modules/sockjs/node_modules/uuid": { - "version": "8.3.2", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/socks": { - "version": "2.8.5", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "dev": true, "license": "MIT", "dependencies": { - "ip-address": "^9.0.5", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" }, "engines": { @@ -13103,6 +14894,8 @@ }, "node_modules/socks-proxy-agent": { "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dev": true, "license": "MIT", "dependencies": { @@ -13115,15 +14908,19 @@ } }, "node_modules/source-map": { - "version": "0.7.4", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "dev": true, "license": "BSD-3-Clause", "engines": { - "node": ">= 8" + "node": ">= 12" } }, "node_modules/source-map-js": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -13132,6 +14929,8 @@ }, "node_modules/source-map-loader": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", "dev": true, "license": "MIT", "dependencies": { @@ -13151,6 +14950,8 @@ }, "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": { @@ -13162,6 +14963,8 @@ }, "node_modules/source-map-support": { "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "license": "MIT", "dependencies": { @@ -13171,6 +14974,8 @@ }, "node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -13179,6 +14984,8 @@ }, "node_modules/spdx-correct": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -13188,11 +14995,15 @@ }, "node_modules/spdx-exceptions": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true, "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -13201,12 +15012,16 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.21", + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", "dev": true, "license": "CC0-1.0" }, "node_modules/spdy": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "license": "MIT", "dependencies": { @@ -13222,6 +15037,8 @@ }, "node_modules/spdy-transport": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, "license": "MIT", "dependencies": { @@ -13235,59 +15052,74 @@ }, "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" }, - "node_modules/sshpk": { - "version": "1.18.0", + "node_modules/ssri": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz", + "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" + "minipass": "^7.0.3" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/sshpk/node_modules/jsbn": { - "version": "0.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/ssri": { - "version": "10.0.6", + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "minipass": "^7.0.3" + "escape-string-regexp": "^2.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, "node_modules/statuses": { - "version": "1.5.0", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" + } + }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/streamroller": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, "license": "MIT", "dependencies": { @@ -13301,6 +15133,8 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -13308,20 +15142,27 @@ } }, "node_modules/string-width": { - "version": "4.2.3", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "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/string-width-cjs": { "name": "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": { @@ -13333,8 +15174,38 @@ "node": ">=8" } }, - "node_modules/strip-ansi": { + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-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==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -13343,9 +15214,26 @@ "node": ">=8" } }, + "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/strip-ansi-cjs": { "name": "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": { @@ -13355,16 +15243,20 @@ "node": ">=8" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", + "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==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { @@ -13376,6 +15268,8 @@ }, "node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -13387,6 +15281,9 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -13395,39 +15292,24 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/table": { - "version": "6.9.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/tapable": { - "version": "2.2.2", + "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": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, "license": "ISC", "dependencies": { @@ -13444,6 +15326,8 @@ }, "node_modules/tar/node_modules/fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "license": "ISC", "dependencies": { @@ -13455,6 +15339,8 @@ }, "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "license": "ISC", "dependencies": { @@ -13466,14 +15352,45 @@ }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { "node": ">=8" } }, "node_modules/tar/node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, "license": "MIT", "bin": { @@ -13485,16 +15402,21 @@ }, "node_modules/tar/node_modules/yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, "license": "ISC" }, "node_modules/terser": { - "version": "5.29.1", + "version": "5.43.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", + "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", + "acorn": "^8.14.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -13507,6 +15429,8 @@ }, "node_modules/terser-webpack-plugin": { "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "dev": true, "license": "MIT", "dependencies": { @@ -13538,86 +15462,68 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/acorn": { - "version": "8.15.0", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.43.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.14.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser/node_modules/acorn": { - "version": "8.15.0", + "node_modules/thingies": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", + "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", "dev": true, "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "node": ">=10.18" }, - "engines": { - "node": ">=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" } }, - "node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, "node_modules/through": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true, "license": "MIT" }, "node_modules/thunky": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true, "license": "MIT" }, - "node_modules/tmp": { - "version": "0.0.33", - "dev": true, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", "license": "MIT", "dependencies": { - "os-tmpdir": "~1.0.2" + "fdir": "^6.4.4", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=0.6.0" + "node": ">=12.0.0" + }, + "funding": { + "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", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -13628,44 +15534,35 @@ }, "node_modules/toidentifier": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "license": "MIT", "engines": { "node": ">=0.6" } }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/punycode": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", + "node_modules/tree-dump": { + "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": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">= 4.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, "node_modules/tree-kill": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, "license": "MIT", "bin": { @@ -13673,33 +15570,64 @@ } }, "node_modules/ts-node": { - "version": "8.3.0", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "license": "MIT", "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", "arg": "^4.1.0", + "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.6", - "yn": "^3.0.0" + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" }, "bin": { - "ts-node": "dist/bin.js" - }, - "engines": { - "node": ">=4.2.0" + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" }, "peerDependencies": { - "typescript": ">=2.0" + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, "node_modules/tslib": { "version": "2.8.1", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "peer": true }, "node_modules/tslint": { "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", + "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@babel/code-frame": "^7.0.0", "builtin-modules": "^1.1.1", @@ -13727,6 +15655,8 @@ }, "node_modules/tslint-angular": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tslint-angular/-/tslint-angular-3.0.3.tgz", + "integrity": "sha512-5xD1gLE89lBExfSbMslDw/ZfOZM0t0CJsoJa4svsgF7tlwVS3IpXjzNcNRN0RZqDBj+cdTlbeel6GpZ3PqpPiw==", "dev": true, "license": "MIT", "peerDependencies": { @@ -13736,6 +15666,8 @@ }, "node_modules/tslint-config-prettier": { "version": "1.18.0", + "resolved": "https://registry.npmjs.org/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz", + "integrity": "sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==", "dev": true, "license": "MIT", "bin": { @@ -13747,6 +15679,9 @@ }, "node_modules/tslint/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -13755,8 +15690,21 @@ "node": ">=4" } }, + "node_modules/tslint/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/tslint/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", @@ -13769,6 +15717,9 @@ }, "node_modules/tslint/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -13776,10 +15727,16 @@ }, "node_modules/tslint/node_modules/color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, "license": "MIT" }, "node_modules/tslint/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" @@ -13787,20 +15744,50 @@ }, "node_modules/tslint/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/tslint/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/tslint/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/tslint/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/tslint/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^3.0.0" @@ -13811,10 +15798,16 @@ }, "node_modules/tslint/node_modules/tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, "license": "0BSD" }, "node_modules/tsutils": { "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "license": "MIT", "dependencies": { "tslib": "^1.8.1" @@ -13825,603 +15818,987 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, "license": "0BSD" }, "node_modules/tuf-js": { - "version": "2.2.1", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-3.1.0.tgz", + "integrity": "sha512-3T3T04WzowbwV2FDiGXBbr81t64g1MUGGJRgT4x5o97N+8ArdhVCAF9IxFrxuSJmM3E5Asn7nKHkao0ibcZXAg==", "dev": true, "license": "MIT", "dependencies": { - "@tufjs/models": "2.0.1", - "debug": "^4.3.4", - "make-fetch-happen": "^13.0.1" + "@tufjs/models": "3.0.1", + "debug": "^4.4.1", + "make-fetch-happen": "^14.0.3" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", + "node_modules/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", "dev": true, + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "devOptional": true, "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", "dependencies": { - "safe-buffer": "^5.0.1" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { - "node": "*" + "node": ">=4" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", + "node_modules/unicode-match-property-value-ecmascript": { + "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": "Unlicense" + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/type-check": { - "version": "0.4.0", + "node_modules/unicode-property-aliases-ecmascript": { + "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": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz", + "integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==", + "dev": true, + "license": "ISC", "dependencies": { - "prelude-ls": "^1.2.1" + "unique-slug": "^5.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/unique-slug": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-5.0.0.tgz", + "integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/type-fest": { - "version": "0.21.3", + "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 OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "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", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" } }, - "node_modules/type-is": { - "version": "1.6.18", + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/typed-assert": { - "version": "1.0.9", + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true, "license": "MIT" }, - "node_modules/typescript": { - "version": "5.4.5", + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "node_modules/ua-parser-js": { - "version": "1.0.40", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "license": "MIT", - "bin": { - "ua-parser-js": "script/cli.js" - }, + "node_modules/validate-npm-package-name": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-6.0.2.tgz", + "integrity": "sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==", + "dev": true, + "license": "ISC", "engines": { - "node": "*" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/undici-types": { - "version": "7.8.0", + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "engines": { + "node": ">= 0.8" + } }, - "node_modules/unicode-canonical-property-names-ecmascript": { + "node_modules/void-elements": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", + "node_modules/watchpack": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", "dev": true, "license": "MIT", "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" }, "engines": { - "node": ">=4" + "node": ">=10.13.0" } }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.0", + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "minimalistic-assert": "^1.0.0" } }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" - } + "optional": true }, - "node_modules/unique-filename": { - "version": "3.0.0", + "node_modules/webpack": { + "version": "5.101.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.2.tgz", + "integrity": "sha512-4JLXU0tD6OZNVqlwzm3HGEhAHufSiyv+skb7q0d2367VDMzrU1Q/ZeepvkcHH0rZie6uqEtTQQe0OEOOluH3Mg==", "dev": true, - "license": "ISC", + "license": "MIT", + "peer": true, "dependencies": { - "unique-slug": "^4.0.0" + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.3", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.3.3" + }, + "bin": { + "webpack": "bin/webpack.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/unique-slug": { - "version": "4.0.0", + "node_modules/webpack-dev-middleware": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz", + "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4" + "colorette": "^2.0.10", + "memfs": "^4.6.0", + "mime-types": "^2.1.31", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, - "node_modules/universalify": { - "version": "0.1.2", + "node_modules/webpack-dev-middleware/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4.0.0" + "node": ">= 0.6" } }, - "node_modules/unpipe": { - "version": "1.0.0", + "node_modules/webpack-dev-middleware/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/webpack-dev-server": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", + "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "express": "^4.21.2", + "graceful-fs": "^4.2.6", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" }, "bin": { - "update-browserslist-db": "cli.js" + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "browserslist": ">= 4.21.0" + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } } }, - "node_modules/uri-js": { - "version": "4.4.1", + "node_modules/webpack-dev-server/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "punycode": "^2.1.0" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/uri-js/node_modules/punycode": { - "version": "2.3.1", + "node_modules/webpack-dev-server/node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, "engines": { - "node": ">=6" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/url-parse": { - "version": "1.5.10", + "node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, "license": "MIT", "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/utils-merge": { - "version": "1.0.1", + "node_modules/webpack-dev-server/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.6" } }, - "node_modules/uuid": { - "version": "3.4.0", + "node_modules/webpack-dev-server/node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, "license": "MIT", - "bin": { - "uuid": "bin/uuid" + "engines": { + "node": ">= 0.6" } }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", + "node_modules/webpack-dev-server/node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true, "license": "MIT" }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", + "node_modules/webpack-dev-server/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "ms": "2.0.0" } }, - "node_modules/validate-npm-package-name": { - "version": "5.0.1", + "node_modules/webpack-dev-server/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/vary": { - "version": "1.1.2", + "node_modules/webpack-dev-server/node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, "engines": { - "node": ">= 0.8" + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/verror": { - "version": "1.10.0", + "node_modules/webpack-dev-server/node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, - "engines": [ - "node >=0.6.0" - ], "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/void-elements": { - "version": "2.0.1", + "node_modules/webpack-dev-server/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/watchpack": { - "version": "2.4.0", + "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": "MIT", + "license": "ISC", "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10.13.0" + "node": ">= 6" } }, - "node_modules/wbuf": { - "version": "1.7.3", + "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", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", "dev": true, "license": "MIT", "dependencies": { - "minimalistic-assert": "^1.0.0" + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } } }, - "node_modules/wcwidth": { - "version": "1.0.1", + "node_modules/webpack-dev-server/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": { - "defaults": "^1.0.3" + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/webdriver-js-extender": { - "version": "2.1.0", + "node_modules/webpack-dev-server/node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, "license": "MIT", - "dependencies": { - "@types/selenium-webdriver": "^3.0.0", - "selenium-webdriver": "^3.0.1" - }, "engines": { - "node": ">=6.9.x" + "node": ">= 10" } }, - "node_modules/webdriver-manager": { - "version": "12.1.9", + "node_modules/webpack-dev-server/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, "license": "MIT", - "dependencies": { - "adm-zip": "^0.5.2", - "chalk": "^1.1.1", - "del": "^2.2.0", - "glob": "^7.0.3", - "ini": "^1.3.4", - "minimist": "^1.2.0", - "q": "^1.4.1", - "request": "^2.87.0", - "rimraf": "^2.5.2", - "semver": "^5.3.0", - "xml2js": "^0.4.17" - }, - "bin": { - "webdriver-manager": "bin/webdriver-manager" - }, "engines": { - "node": ">=6.9.x" + "node": ">= 0.6" } }, - "node_modules/webdriver-manager/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/webpack-dev-server/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/webdriver-manager/node_modules/ansi-styles": { - "version": "2.2.1", + "node_modules/webpack-dev-server/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/webdriver-manager/node_modules/chalk": { - "version": "1.1.3", + "node_modules/webpack-dev-server/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/webdriver-manager/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/webpack-dev-server/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">= 0.6" } }, - "node_modules/webdriver-manager/node_modules/ini": { - "version": "1.3.8", + "node_modules/webpack-dev-server/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/webdriver-manager/node_modules/rimraf": { - "version": "2.7.1", + "node_modules/webpack-dev-server/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" + "license": "MIT", + "engines": { + "node": ">=8.6" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/webdriver-manager/node_modules/semver": { - "version": "5.7.2", + "node_modules/webpack-dev-server/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/webdriver-manager/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/webpack-dev-server/node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/webdriver-manager/node_modules/supports-color": { - "version": "2.0.0", + "node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, "engines": { - "node": ">=0.8.0" + "node": ">=8.10.0" } }, - "node_modules/webpack": { - "version": "5.94.0", + "node_modules/webpack-dev-server/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.4", + "node_modules/webpack-dev-server/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webpack-dev-server/node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "license": "MIT", "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "node": ">= 0.8.0" } }, - "node_modules/webpack-dev-server": { - "version": "4.15.1", + "node_modules/webpack-dev-server/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webpack-dev-server/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "license": "MIT", "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.13.0" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { - "webpack": { + "bufferutil": { "optional": true }, - "webpack-cli": { + "utf-8-validate": { "optional": true } } }, "node_modules/webpack-merge": { - "version": "5.10.0", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", "dev": true, "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", - "wildcard": "^2.0.0" + "wildcard": "^2.0.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" } }, "node_modules/webpack-sources": { "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", "dev": true, "license": "MIT", "engines": { @@ -14430,6 +16807,8 @@ }, "node_modules/webpack-subresource-integrity": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", "dev": true, "license": "MIT", "dependencies": { @@ -14448,89 +16827,64 @@ } } }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.15.0", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/acorn-import-attributes": { - "version": "1.9.5", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" } }, "node_modules/webpack/node_modules/json-parse-even-better-errors": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", + "node_modules/webpack/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">= 0.6" } }, - "node_modules/webpack/node_modules/watchpack": { - "version": "2.4.4", + "node_modules/webpack/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" + "mime-db": "1.52.0" }, "engines": { - "node": ">=10.13.0" + "node": ">= 0.6" } }, "node_modules/websocket-driver": { "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -14544,6 +16898,8 @@ }, "node_modules/websocket-extensions": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, "license": "Apache-2.0", "engines": { @@ -14552,6 +16908,8 @@ }, "node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", "dependencies": { @@ -14564,22 +16922,23 @@ "node": ">= 8" } }, - "node_modules/which-module": { - "version": "2.0.1", - "dev": true, - "license": "ISC" - }, "node_modules/wildcard": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true, "license": "MIT" }, "node_modules/wkt-parser": { "version": "1.5.2", + "resolved": "https://registry.npmjs.org/wkt-parser/-/wkt-parser-1.5.2.tgz", + "integrity": "sha512-1ZUiV1FTwSiSrgWzV9KXJuOF2BVW91KY/mau04BhnmgOdroRQea7Q0s5TVqwGLm0D2tZwObd/tBYXW49sSxp3Q==", "license": "MIT" }, "node_modules/word-wrap": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", "engines": { @@ -14588,6 +16947,8 @@ }, "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": { @@ -14602,6 +16963,8 @@ "node_modules/wrap-ansi-cjs": { "name": "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==", "dev": true, "license": "MIT", "dependencies": { @@ -14616,12 +16979,127 @@ "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "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-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==", + "dev": true, + "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", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, "license": "ISC" }, "node_modules/ws": { "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, "license": "MIT", "engines": { @@ -14640,28 +17118,26 @@ } } }, - "node_modules/xml2js": { - "version": "0.6.2", + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", "dev": true, "license": "MIT", "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" + "is-wsl": "^3.1.0" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "license": "ISC", "engines": { "node": ">=10" @@ -14669,33 +17145,40 @@ }, "node_modules/yallist": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "license": "ISC" }, "node_modules/yargs": { - "version": "17.7.2", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", "license": "MIT", "dependencies": { - "cliui": "^8.0.1", + "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", + "string-width": "^7.2.0", "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "yargs-parser": "^22.0.0" }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, "node_modules/yargs-parser": { - "version": "21.1.1", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", "license": "ISC", "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, "node_modules/yn": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, "license": "MIT", "engines": { @@ -14703,19 +17186,58 @@ } }, "node_modules/yocto-queue": { - "version": "1.2.1", + "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", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors-cjs": { + "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": { - "node": ">=12.20" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.24.6", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", + "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", + "dev": true, + "license": "ISC", + "peerDependencies": { + "zod": "^3.24.1" + } + }, "node_modules/zone.js": { - "version": "0.14.10", - "license": "MIT" + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz", + "integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==", + "license": "MIT", + "peer": true } } } diff --git a/package.json b/package.json index 8b5fcfc32..d76d3f6df 100644 --- a/package.json +++ b/package.json @@ -11,94 +11,73 @@ }, "private": true, "dependencies": { - "@angular/animations": "^17.3.12", - "@angular/cdk": "^17.3.10", - "@angular/common": "^17.3.12", - "@angular/compiler": "^17.3.12", - "@angular/core": "^17.3.12", - "@angular/forms": "^17.3.12", - "@angular/localize": "^17.3.12", - "@angular/material": "^17.3.10", - "@angular/material-moment-adapter": "^17.3.10", - "@angular/platform-browser": "^17.3.12", - "@angular/platform-browser-dynamic": "^17.3.12", - "@angular/router": "^17.3.12", - "@auth0/angular-jwt": "^5.0.1", - "@fortawesome/angular-fontawesome": "^0.14.1", - "@fortawesome/fontawesome-free": "^5.15.4", - "@fortawesome/fontawesome-svg-core": "^1.2.28", - "@fortawesome/free-solid-svg-icons": "^5.13.0", - "@ng-bootstrap/ng-bootstrap": "^16.0.0", - "@ngx-translate/core": "^15.0.0", - "@ngx-translate/http-loader": "^6.0.0", - "@popperjs/core": "^2.11.6", - "all": "0.0.0", + "@angular/animations": "^20.3.7", + "@angular/cdk": "^20.2.10", + "@angular/common": "^20.3.7", + "@angular/compiler": "^20.3.7", + "@angular/core": "^20.3.7", + "@angular/forms": "^20.3.7", + "@angular/localize": "^20.3.7", + "@angular/material": "^20.2.10", + "@angular/material-moment-adapter": "^20.2.10", + "@angular/platform-browser": "^20.3.7", + "@angular/platform-browser-dynamic": "^20.3.7", + "@angular/router": "^20.3.7", + "@auth0/angular-jwt": "^5.2.0", + "@fortawesome/angular-fontawesome": "^3.0.0", + "@fortawesome/fontawesome-free": "^7.1.0", + "@fortawesome/free-solid-svg-icons": "^7.1.0", + "@ng-bootstrap/ng-bootstrap": "^19.0.1", + "@ngx-translate/core": "^17.0.0", + "@ngx-translate/http-loader": "^17.0.0", + "@popperjs/core": "^2.11.8", "animate.css": "^4.1.1", - "bootstrap": "5.0.0-alpha2", - "chart.js": "^3.7.1", - "file-saver": "^2.0.2", - "guid-typescript": "^1.0.9", - "jwt-decode": "^3.1.2", + "bootstrap": "5.3.8", + "chart.js": "^4.5.1", + "file-saver": "^2.0.5", + "jwt-decode": "^4.0.0", "leaflet": "^1.9.4", "leaflet-geosearch": "3.6.1", "leaflet.fullscreen": "3.0.1", - "moment": "^2.29.4", - "monaco-editor": "^0.44.0", - "ng": "0.0.0", - "ng-inline-svg-2": "^15.0.1", - "ngx-cookie-service": "^17.1.0", - "ngx-monaco-editor-v2": "^17.0.1", - "ngx-papaparse": "^5.0.0", - "popper.js": "^1.16.1", + "moment": "^2.30.1", + "monaco-editor": "^0.52.2", + "ng-inline-svg-2": "^20.0.1", + "ngx-cookie-service": "^20.1.0", + "ngx-monaco-editor-v2": "^20.3.0", + "ngx-papaparse": "^8.0.0", "proj4": "2.12.1", "proj4leaflet": "1.0.2", - "rxjs": "~6.6.7", - "tslib": "^2.0.0", - "tslint": "~6.1.0", - "ua-parser-js": "^1.0.33", - "zone.js": "~0.14.10" + "rxjs": "^7.8.2", + "tslib": "^2.8.1", + "zone.js": "~0.15.1" }, "devDependencies": { - "@angular-devkit/build-angular": "^17.3.8", - "@angular/cli": "^17.3.8", - "@angular/compiler-cli": "^17.3.12", - "@ngrx/store-devtools": "^17.2.0", - "@types/jasmine": "~3.6.0", - "@types/jasminewd2": "~2.0.3", - "@types/jwt-decode": "^3.1.0", + "@angular-devkit/build-angular": "^20.3.7", + "@angular/cli": "^20.3.7", + "@angular/compiler-cli": "^20.3.7", + "@ngrx/store-devtools": "^20.1.0", + "@types/jasmine": "~5.1.12", + "@types/jasminewd2": "~2.0.13", + "@types/jest": "^30.0.0", "@types/leaflet": "1.9.17", - "@types/leaflet.fullscreen": "^3.0.2", + "@types/leaflet.fullscreen": "^3.0.3", "@types/leaflet.markercluster": "1.5.3", - "@types/node": "^18.11.1", + "@types/node": "^24.9.1", "@types/proj4": "2.5.5", "@types/proj4leaflet": "1.0.10", - "codelyzer": "^6.0.2", - "eslint": "^7.3.1", - "jasmine-core": "^3.8.0", - "jasmine-spec-reporter": "~5.0.0", - "karma": "~6.4.1", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage-istanbul-reporter": "~3.0.2", - "karma-jasmine": "~4.0.0", - "karma-jasmine-html-reporter": "^1.5.0", + "eslint": "^9.38.0", + "jasmine-core": "^5.12.0", + "jasmine-spec-reporter": "~7.0.0", + "karma": "~6.4.4", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage-istanbul-reporter": "~3.0.3", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "^2.1.0", "leaflet.markercluster": "1.5.3", - "ngrx-store-freeze": "^0.2.4", - "prettier": "^2.0.5", - "protractor": "~7.0.0", - "ts-node": "~8.3.0", + "prettier": "^3.6.2", + "ts-node": "~10.9.2", "tslint-angular": "^3.0.3", "tslint-config-prettier": "^1.18.0", - "typescript": "~5.4.5" - }, - "overrides": { - "@angular/core": "^17.3.12", - "@angular/common": "^17.3.12", - "postcss": "^8.4.31", - "tough-cookie": "^4.1.4", - "xml2js": "^0.6.2", - "babel-plugin-polyfill-corejs3": "0.8.6", - "babel-plugin-polyfill-corejs2": "0.4.6", - "babel-plugin-polyfill-regenerator": "0.5.3", - "webpack-dev-middleware": "5.3.4" + "typescript": "~5.8.3" } } diff --git a/src/app/admin/admin-routing.module.ts b/src/app/admin/admin-routing.module.ts index b0694dbfe..645279a56 100644 --- a/src/app/admin/admin-routing.module.ts +++ b/src/app/admin/admin-routing.module.ts @@ -1,5 +1,5 @@ import { NgModule } from "@angular/core"; -import { Routes, RouterModule } from "@angular/router"; +import { RouterModule, Routes } from "@angular/router"; import { OrganisationDetailComponent } from "./organisation/organisation-detail/organisation-detail.component"; import { OrganisationEditComponent } from "./organisation/organisation-edit/organisation-edit.component"; import { OrganisationListComponent } from "./organisation/organisation-list/organisation-list.component"; diff --git a/src/app/admin/admin.module.ts b/src/app/admin/admin.module.ts index 9828a07ad..c19b5a012 100644 --- a/src/app/admin/admin.module.ts +++ b/src/app/admin/admin.module.ts @@ -5,7 +5,7 @@ import { AdminRoutingModule } from "./admin-routing.module"; import { ApplicationsModule } from "@applications/applications.module"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { RouterModule } from "@angular/router"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslatePipe } from "@ngx-translate/core"; import { FormModule } from "@shared/components/forms/form.module"; import { NGMaterialModule } from "@shared/Modules/materiale.module"; import { PipesModule } from "@shared/pipes/pipes.module"; @@ -68,7 +68,7 @@ import { AwaitingUsersTableTabComponent } from "./users/user-list/awaiting-user- NGMaterialModule, PipesModule, CommonModule, - TranslateModule, + TranslatePipe, FormsModule, ReactiveFormsModule, FormModule, diff --git a/src/app/admin/api-key/api-key-edit/api-key-edit.component.html b/src/app/admin/api-key/api-key-edit/api-key-edit.component.html index 02c1d342a..b9b15e775 100644 --- a/src/app/admin/api-key/api-key-edit/api-key-edit.component.html +++ b/src/app/admin/api-key/api-key-edit/api-key-edit.component.html @@ -1,13 +1,17 @@
-
-
    -
  • - {{ error | translate }} -
  • -
-
+ @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ }
@@ -41,9 +45,11 @@ class="form-control" name="permissions" > - - {{ permission.name }} - + @for (permission of permissions; track permission) { + + {{ permission.name }} + + }
@@ -67,7 +73,7 @@ - diff --git a/src/app/admin/api-key/api-key-edit/api-key-edit.component.ts b/src/app/admin/api-key/api-key-edit/api-key-edit.component.ts index 0e86434b2..1a3604b1c 100644 --- a/src/app/admin/api-key/api-key-edit/api-key-edit.component.ts +++ b/src/app/admin/api-key/api-key-edit/api-key-edit.component.ts @@ -16,6 +16,7 @@ import { FormControl } from "@angular/forms"; selector: "app-api-key-edit", templateUrl: "./api-key-edit.component.html", styleUrls: ["./api-key-edit.component.scss"], + standalone: false, }) export class ApiKeyEditComponent implements OnInit { apiKeyRequest = new ApiKeyRequest(); @@ -83,14 +84,14 @@ export class ApiKeyEditComponent implements OnInit { private getPermissions() { this.permissionService .getPermissions(undefined, undefined, undefined, undefined, undefined, this.organizationId) - .subscribe( - permissionsResponse => { + .subscribe({ + next: permissionsResponse => { this.permissions = permissionsResponse.data.filter(x => x.organization?.id === this.organizationId); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.showError(error); - } - ); + }, + }); } private getApiKey(id: number) { @@ -106,17 +107,17 @@ export class ApiKeyEditComponent implements OnInit { private create(): void { this.apiKeyRequest.expiresOn = this.serializedExpirationDate.value; - this.apiKeyService.create(this.apiKeyRequest).subscribe( - () => this.routeBack(), - err => this.showError(err) - ); + this.apiKeyService.create(this.apiKeyRequest).subscribe({ + next: () => this.routeBack(), + error: err => this.showError(err), + }); } private update(): void { this.apiKeyRequest.expiresOn = this.serializedExpirationDate.value; - this.apiKeyService.update(this.apiKeyRequest, this.id).subscribe( - () => this.routeBack(), - err => this.showError(err) - ); + this.apiKeyService.update(this.apiKeyRequest, this.id).subscribe({ + next: () => this.routeBack(), + error: err => this.showError(err), + }); } } diff --git a/src/app/admin/api-key/api-key-list/api-key-list.component.html b/src/app/admin/api-key/api-key-list/api-key-list.component.html index 369a84ba4..08883f536 100644 --- a/src/app/admin/api-key/api-key-list/api-key-list.component.html +++ b/src/app/admin/api-key/api-key-list/api-key-list.component.html @@ -1,8 +1,8 @@
diff --git a/src/app/admin/api-key/api-key-list/api-key-list.component.ts b/src/app/admin/api-key/api-key-list/api-key-list.component.ts index 7d3fcf935..6a3ee7bf7 100644 --- a/src/app/admin/api-key/api-key-list/api-key-list.component.ts +++ b/src/app/admin/api-key/api-key-list/api-key-list.component.ts @@ -9,6 +9,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-api-key-list", templateUrl: "./api-key-list.component.html", styleUrls: ["./api-key-list.component.scss"], + standalone: false, }) export class ApiKeyListComponent implements OnInit { @Input() organisationId: number; diff --git a/src/app/admin/api-key/api-key-list/api-key-table/api-key-table.component.html b/src/app/admin/api-key/api-key-list/api-key-table/api-key-table.component.html index 683acb670..fc37b9ea1 100644 --- a/src/app/admin/api-key/api-key-list/api-key-table/api-key-table.component.html +++ b/src/app/admin/api-key/api-key-list/api-key-table/api-key-table.component.html @@ -1,7 +1,11 @@
-
- -
+ @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ } @@ -19,13 +23,14 @@ {{ "API-KEY.PERMISSIONS" | translate }} @@ -64,27 +69,30 @@ diff --git a/src/app/admin/api-key/api-key-list/api-key-table/api-key-table.component.ts b/src/app/admin/api-key/api-key-list/api-key-table/api-key-table.component.ts index 35d047a5d..8b871f73d 100644 --- a/src/app/admin/api-key/api-key-list/api-key-table/api-key-table.component.ts +++ b/src/app/admin/api-key/api-key-list/api-key-table/api-key-table.component.ts @@ -16,6 +16,7 @@ import { DefaultPageSizeOptions } from "@shared/constants/page.constants"; selector: "app-api-key-table", templateUrl: "./api-key-table.component.html", styleUrls: ["./api-key-table.component.scss"], + standalone: false, }) export class ApiKeyTableComponent implements AfterViewInit { @Input() organisationId: number; diff --git a/src/app/admin/api-key/api-key.component.ts b/src/app/admin/api-key/api-key.component.ts index e5b324711..9171bf942 100644 --- a/src/app/admin/api-key/api-key.component.ts +++ b/src/app/admin/api-key/api-key.component.ts @@ -3,6 +3,7 @@ import { Component, OnInit } from "@angular/core"; @Component({ selector: "app-api-key", template: "", + standalone: false, }) export class ApiKeyComponent implements OnInit { constructor() {} diff --git a/src/app/admin/organisation/organisation-detail/organisation-detail.component.html b/src/app/admin/organisation/organisation-detail/organisation-detail.component.html index 6b2cccc14..6ac3ba3a7 100644 --- a/src/app/admin/organisation/organisation-detail/organisation-detail.component.html +++ b/src/app/admin/organisation/organisation-detail/organisation-detail.component.html @@ -1,49 +1,55 @@ -
- - -
-
-
    -
  • - {{ error | translate }} -
  • -
-
-
-
-
-

{{ "ORGANISATION.HEADLINE" | translate }}

- +@if (organisation) { +
+ + +
+ @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ } +
+
+
+

{{ "ORGANISATION.HEADLINE" | translate }}

+ +
-
-
-
-
-

- {{ "ORGANISATION.DETAIL.APPLICATIONS" | translate }} -

- +
+
+
+

+ {{ "ORGANISATION.DETAIL.APPLICATIONS" | translate }} +

+ +
-
-
-
-
-

- {{ "ORGANISATION.DETAIL.PERMISSIONS" | translate }} -

- +
+
+
+

+ {{ "ORGANISATION.DETAIL.PERMISSIONS" | translate }} +

+ +
-
+} diff --git a/src/app/admin/organisation/organisation-detail/organisation-detail.component.ts b/src/app/admin/organisation/organisation-detail/organisation-detail.component.ts index eb3dc35b5..d89374a0c 100644 --- a/src/app/admin/organisation/organisation-detail/organisation-detail.component.ts +++ b/src/app/admin/organisation/organisation-detail/organisation-detail.component.ts @@ -12,7 +12,6 @@ import { PermissionService } from "@app/admin/permission/permission.service"; import { Location } from "@angular/common"; import { DeleteDialogService } from "@shared/components/delete-dialog/delete-dialog.service"; import { DropdownButton } from "@shared/models/dropdown-button.model"; -import { ApplicationService } from "@applications/application.service"; import { environment } from "@environments/environment"; import { Title } from "@angular/platform-browser"; import { MeService } from "@shared/services/me.service"; @@ -24,6 +23,7 @@ import { HttpErrorResponse } from "@angular/common/http"; selector: "app-organisation-detail", templateUrl: "./organisation-detail.component.html", styleUrls: ["./organisation-detail.component.scss"], + standalone: false, }) export class OrganisationDetailComponent implements OnInit, OnChanges, OnDestroy { isLoadingResults = true; @@ -33,11 +33,8 @@ export class OrganisationDetailComponent implements OnInit, OnChanges, OnDestroy public pageTotal: number; public pageOffset = 0; public applications: Application[]; - private applicationsSubscription: Subscription; - private deleteDialogSubscription: Subscription; public dropdownButton: DropdownButton; public errorMessages: string[]; - organisation: OrganisationResponse; public backButton: BackButton = { label: "", @@ -47,6 +44,8 @@ export class OrganisationDetailComponent implements OnInit, OnChanges, OnDestroy subscription: Subscription; permissions: PermissionResponse[]; canEdit: boolean; + private applicationsSubscription: Subscription; + private deleteDialogSubscription: Subscription; constructor( public translate: TranslateService, @@ -93,13 +92,6 @@ export class OrganisationDetailComponent implements OnInit, OnChanges, OnDestroy } } - private getOrganisation(id: number) { - this.subscription = this.organisationService.getOne(id).subscribe(response => { - this.organisation = response; - this.permissions = response.permissions; - }); - } - clickDelete() { this.deleteDialogSubscription = this.deleteDialogService.showSimpleDialog().subscribe(response => { if (response) { @@ -127,4 +119,11 @@ export class OrganisationDetailComponent implements OnInit, OnChanges, OnDestroy } }); } + + private getOrganisation(id: number) { + this.subscription = this.organisationService.getOne(id).subscribe(response => { + this.organisation = response; + this.permissions = response.permissions; + }); + } } diff --git a/src/app/admin/organisation/organisation-edit/organisation-edit.component.html b/src/app/admin/organisation/organisation-edit/organisation-edit.component.html index 341b978d9..668decd6d 100644 --- a/src/app/admin/organisation/organisation-edit/organisation-edit.component.html +++ b/src/app/admin/organisation/organisation-edit/organisation-edit.component.html @@ -1,26 +1,28 @@ -
- {{ errorMessage | translate }} -
+ @if (errorMessage) { +
+ {{ errorMessage | translate }} +
+ }
*
@@ -29,6 +31,6 @@ - +
diff --git a/src/app/admin/organisation/organisation-edit/organisation-edit.component.ts b/src/app/admin/organisation/organisation-edit/organisation-edit.component.ts index 290df1657..082cb27d5 100644 --- a/src/app/admin/organisation/organisation-edit/organisation-edit.component.ts +++ b/src/app/admin/organisation/organisation-edit/organisation-edit.component.ts @@ -14,6 +14,7 @@ import { SharedVariableService } from "@shared/shared-variable/shared-variable.s selector: "app-organisation-edit", templateUrl: "./organisation-edit.component.html", styleUrls: ["./organisation-edit.component.scss"], + standalone: false, }) export class OrganisationEditComponent implements OnInit { organisation = new Organisation(); @@ -53,6 +54,18 @@ export class OrganisationEditComponent implements OnInit { this.backButton.routerLink = ["admin", "organisations", organizationId]; } + onSubmit(): void { + if (this.organisation.id) { + this.update(); + } else { + this.create(); + } + } + + routeBack(): void { + this.location.back(); + } + private getOrganisation(id: number) { this.subscription = this.organisationService.getOne(id).subscribe(response => { this.organisation = response; @@ -60,36 +73,28 @@ export class OrganisationEditComponent implements OnInit { } private create(): void { - this.organisationService.post(this.organisation).subscribe( - response => { + this.organisationService.post(this.organisation).subscribe({ + next: response => { console.log(response); this.sharedVariableService.setOrganizationInfo(); this.routeBack(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.showError(error); - } - ); + }, + }); } private update(): void { - this.organisationService.put(this.organisation, this.id).subscribe( - response => { + this.organisationService.put(this.organisation, this.id).subscribe({ + next: () => { this.sharedVariableService.setOrganizationInfo(); this.routeBack(); }, - error => { + error: error => { this.showError(error); - } - ); - } - - onSubmit(): void { - if (this.organisation.id) { - this.update(); - } else { - this.create(); - } + }, + }); } private showError(error: HttpErrorResponse) { @@ -100,8 +105,4 @@ export class OrganisationEditComponent implements OnInit { this.errorFields.push("name"); this.formFailedSubmit = true; } - - routeBack(): void { - this.location.back(); - } } diff --git a/src/app/admin/organisation/organisation-list/organisation-list.component.html b/src/app/admin/organisation/organisation-list/organisation-list.component.html index 39fef6a5b..9d09566b3 100644 --- a/src/app/admin/organisation/organisation-list/organisation-list.component.html +++ b/src/app/admin/organisation/organisation-list/organisation-list.component.html @@ -1,8 +1,8 @@
diff --git a/src/app/admin/organisation/organisation-list/organisation-list.component.ts b/src/app/admin/organisation/organisation-list/organisation-list.component.ts index b16359d76..dd87fb1cf 100644 --- a/src/app/admin/organisation/organisation-list/organisation-list.component.ts +++ b/src/app/admin/organisation/organisation-list/organisation-list.component.ts @@ -8,6 +8,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-organisation-list", templateUrl: "./organisation-list.component.html", styleUrls: ["./organisation-list.component.scss"], + standalone: false, }) export class OrganisationListComponent implements OnInit { canEdit: boolean; diff --git a/src/app/admin/organisation/organisation-list/organisation-tabel/organisation-tabel.component.html b/src/app/admin/organisation/organisation-list/organisation-tabel/organisation-tabel.component.html index 7c0600b4c..fc15aa22e 100644 --- a/src/app/admin/organisation/organisation-list/organisation-tabel/organisation-tabel.component.html +++ b/src/app/admin/organisation/organisation-list/organisation-tabel/organisation-tabel.component.html @@ -1,58 +1,67 @@ -
-
    -
  • - {{ error | translate }} -
  • -
-
-
-
- +@if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
-
- - + @if (element.permissions) { + @for (pm of element.permissions; track pm) { {{ pm.name }}
-
-
- {{ "NoUsersAdded" | translate }} + } + } @else { + {{ "NoUsersAdded" | translate }} + }
- + @if (canAccess(element)) { + + }
+} +
+ @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ } +
- - - - - - + - - + +
+ {{ "ORGANISATION.NAME" | translate }} - {{ element.name }} + + {{ element.name }} + {{ "ORGANISATION.APPLICATION-COUNT" | translate }} -
- {{ element.applications.length }} -
- -
Ingen applikationer er tilknyttet endnu
-
+
+ @if (element.applications) { +
+ {{ element.applications.length }} +
+ } @else { +
Ingen applikationer er tilknyttet endnu
+ }
+
diff --git a/src/app/admin/organisation/organisation-list/organisation-tabel/organisation-tabel.component.ts b/src/app/admin/organisation/organisation-list/organisation-tabel/organisation-tabel.component.ts index 96873817d..1816ec81c 100644 --- a/src/app/admin/organisation/organisation-list/organisation-tabel/organisation-tabel.component.ts +++ b/src/app/admin/organisation/organisation-list/organisation-tabel/organisation-tabel.component.ts @@ -6,7 +6,7 @@ import { MatSort } from "@angular/material/sort"; import { merge, Observable, of as observableOf } from "rxjs"; import { MatPaginator, PageEvent } from "@angular/material/paginator"; import { environment } from "@environments/environment"; -import { startWith, switchMap, map, catchError } from "rxjs/operators"; +import { catchError, map, startWith, switchMap } from "rxjs/operators"; import { DefaultPageSizeOptions } from "@shared/constants/page.constants"; import { ErrorMessageService } from "@shared/error-message.service"; import { HttpErrorResponse } from "@angular/common/http"; @@ -15,6 +15,7 @@ import { HttpErrorResponse } from "@angular/common/http"; selector: "app-organisation-tabel", templateUrl: "./organisation-tabel.component.html", styleUrls: ["./organisation-tabel.component.scss"], + standalone: false, }) export class OrganisationTabelComponent implements AfterViewInit { displayedColumns: string[] = ["name", "applications", "menu"]; diff --git a/src/app/admin/organisation/organisation.component.ts b/src/app/admin/organisation/organisation.component.ts index cfc3cb0ad..5f2d8dad5 100644 --- a/src/app/admin/organisation/organisation.component.ts +++ b/src/app/admin/organisation/organisation.component.ts @@ -5,6 +5,7 @@ import { TranslateService } from "@ngx-translate/core"; selector: "app-organisation", templateUrl: "./organisation.component.html", styleUrls: ["./organisation.component.scss"], + standalone: false, }) export class OrganisationComponent implements OnInit { constructor(public translate: TranslateService) { diff --git a/src/app/admin/organisation/organisation.service.ts b/src/app/admin/organisation/organisation.service.ts index 014300d0f..9a03f9197 100644 --- a/src/app/admin/organisation/organisation.service.ts +++ b/src/app/admin/organisation/organisation.service.ts @@ -3,13 +3,12 @@ import { RestService } from "../../shared/services/rest.service"; import { Observable } from "rxjs"; import { Organisation, - OrganisationResponse, OrganisationGetManyResponse, OrganisationGetMinimalResponse, + OrganisationResponse, } from "./organisation.model"; import { map, shareReplay } from "rxjs/operators"; import { UserMinimalService } from "../users/user-minimal.service"; -import { UpdateUserOrgsDto } from "../users/user.model"; @Injectable({ providedIn: "root", diff --git a/src/app/admin/permission/permission-detail/permission-detail.component.html b/src/app/admin/permission/permission-detail/permission-detail.component.html index a9ec99e1c..74cf60e16 100644 --- a/src/app/admin/permission/permission-detail/permission-detail.component.html +++ b/src/app/admin/permission/permission-detail/permission-detail.component.html @@ -1,54 +1,57 @@ -
- - -
-
-
-
-

{{ "PERMISSION.DETAIL.HEADLINE" | translate }}

- -

- {{ "PERMISSION.DETAIL.TYPE" | translate }}{{ permission.type | translatePermissions }} -

-

- {{ "PERMISSION.DETAIL.ORG" | translate }} - {{ permission.organization?.name }} -

+@if (permission) { +
+ + +
+
+
+
+

{{ "PERMISSION.DETAIL.HEADLINE" | translate }}

+ +

+ {{ "PERMISSION.DETAIL.TYPE" | translate }}{{ permission.type | translatePermissions }} +

+

+ {{ "PERMISSION.DETAIL.ORG" | translate }} + {{ permission.organization?.name }} +

+
-
-
-
-
-

- {{ "PERMISSION.DETAIL.USERS" | translate }} -

- +
+
+
+

+ {{ "PERMISSION.DETAIL.USERS" | translate }} +

+ +
-
-
-
-
-

- {{ "PERMISSION.DETAIL.APPLICATIONS" | translate }} -

- - + @if (showApplicationTable) { +
+
+
+

+ {{ "PERMISSION.DETAIL.APPLICATIONS" | translate }} +

+ +
+
-
+ }
-
+} diff --git a/src/app/admin/permission/permission-detail/permission-detail.component.ts b/src/app/admin/permission/permission-detail/permission-detail.component.ts index ab1fc2364..25794614f 100644 --- a/src/app/admin/permission/permission-detail/permission-detail.component.ts +++ b/src/app/admin/permission/permission-detail/permission-detail.component.ts @@ -18,6 +18,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-permission-detail", templateUrl: "./permission-detail.component.html", styleUrls: ["./permission-detail.component.scss"], + standalone: false, }) export class PermissionDetailComponent implements OnInit, OnChanges { isLoadingResults = true; @@ -82,20 +83,6 @@ export class PermissionDetailComponent implements OnInit, OnChanges { this.getPermission(this.id); } - private getPermission(id: number) { - this.subscription = this.permissionService.getPermission(id).subscribe(response => { - this.permission = response; - this.users = response.users; - this.showApplicationTable = this.meService.hasPermissions( - response, - PermissionType.Read, - PermissionType.OrganizationApplicationAdmin, - PermissionType.GlobalAdmin - ); - this.isLoadingResults = false; - }); - } - onDeletePermission() { this.deleteDialogService.showSimpleDialog().subscribe(response => { if (response) { @@ -111,4 +98,18 @@ export class PermissionDetailComponent implements OnInit, OnChanges { onEditPermission() { this.router.navigate(["edit-permission"], { relativeTo: this.route }); } + + private getPermission(id: number) { + this.subscription = this.permissionService.getPermission(id).subscribe(response => { + this.permission = response; + this.users = response.users; + this.showApplicationTable = this.meService.hasPermissions( + response, + PermissionType.Read, + PermissionType.OrganizationApplicationAdmin, + PermissionType.GlobalAdmin + ); + this.isLoadingResults = false; + }); + } } diff --git a/src/app/admin/permission/permission-edit/permission-edit.component.html b/src/app/admin/permission/permission-edit/permission-edit.component.html index 0bfd6c185..3c7f85024 100644 --- a/src/app/admin/permission/permission-edit/permission-edit.component.html +++ b/src/app/admin/permission/permission-edit/permission-edit.component.html @@ -1,31 +1,35 @@
-
-
    -
  • - {{ error | translate }} -
  • -
-
+ @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ }
*
@@ -34,118 +38,131 @@ * - - {{ "PERMISSION-TYPE." + level.type | translate }} - + @for (level of allowedLevels | sortByTranslation : 'type' : 'asc' : 'PERMISSION-TYPE.'; track level) { + + {{ "PERMISSION-TYPE." + level.type | translate }} + + }
- - {{ getTextForUser(user) }} - + @for (user of filteredUsersMulti | async; track user) { + + {{ getTextForUser(user) }} + + }
-
-
- * - - - -
-
- -
- -
- - - - {{ app.name }} - - + [value]="permission.organizationId" + class="form-select" + id="organizationId" + name="organizationId" + required + > + @for (org of organisations; track org) { + + } + +
-
- -
+ } + @if (isOrganizationApplicationPermission()) {
- -
- - {{ "PERMISSION.EDIT.ADD-APPLICATION-ON-CREATE" | translate }}{{ "PERMISSION.EDIT.APPS" | translate }} +
+ + + @for (app of filteredApplicationsMulti | async; track app) { + + {{ app.name }} + + } +
-
+ } + @if (isReadOrWrite()) { +
+
+ +
+ + {{ "PERMISSION.EDIT.ADD-APPLICATION-ON-CREATE" | translate }} + +
+
+
+ }
- +
diff --git a/src/app/admin/permission/permission-edit/permission-edit.component.ts b/src/app/admin/permission/permission-edit/permission-edit.component.ts index fb2174386..cdee3ab05 100644 --- a/src/app/admin/permission/permission-edit/permission-edit.component.ts +++ b/src/app/admin/permission/permission-edit/permission-edit.component.ts @@ -22,6 +22,7 @@ import { MeService } from "@shared/services/me.service"; selector: "app-permission-edit", templateUrl: "./permission-edit.component.html", styleUrls: ["./permission-edit.component.scss"], + standalone: false, }) export class PermissionEditComponent implements OnInit, OnDestroy { permission = new PermissionRequest(); @@ -104,6 +105,51 @@ export class PermissionEditComponent implements OnInit, OnDestroy { }); } + getTextForUser(user: UserResponse): string { + return `${user.name}` + (user.email ? ` (${user.email})` : ``); + } + + public compare(o1: any, o2: any): boolean { + return o1 === o2; + } + + public compareLevels(p1: PermissionTypes, p2: PermissionTypes): boolean { + return p1?.type === p2?.type; + } + + organizationChanged() { + this.getApplications(this.permission.organizationId); + } + + isOrganizationApplicationPermission() { + return this.isReadOrWrite(); + } + + isReadOrWrite(): boolean { + return this.meService.hasPermissionTypes( + this.permission.levels, + PermissionType.Read, + PermissionType.OrganizationApplicationAdmin + ); + } + + onSubmit(): void { + if (this.id) { + this.update(); + } else { + this.create(); + } + } + + routeBack(): void { + this.location.back(); + } + + ngOnDestroy() { + this._onDestroy.next(); + this._onDestroy.complete(); + } + private filterApplicationsMulti() { if (!this.applications) { return; @@ -141,64 +187,48 @@ export class PermissionEditComponent implements OnInit, OnDestroy { this.filteredUsersMulti.next(filtered); } - getTextForUser(user: UserResponse): string { - return `${user.name}` + (user.email ? ` (${user.email})` : ``); - } - private setBackButton() { this.backButton.routerLink = ["admin", "permissions"]; } private getOrganizations() { - this.organisationSubscription = this.organisationService.getMultiple(1000, 0, "name", "asc").subscribe( - orgs => { + this.organisationSubscription = this.organisationService.getMultiple(1000, 0, "name", "asc").subscribe({ + next: orgs => { this.organisations = orgs.data; }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.showError(error); - } - ); + }, + }); } private getUsers() { - this.userSubscription = this.userService.getMultiple(1000, 0, "name", "asc").subscribe( - users => { + this.userSubscription = this.userService.getMultiple(1000, 0, "name", "asc").subscribe({ + next: users => { this.users = users.data; this.filteredUsersMulti.next(this.users.slice()); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.showError(error); - } - ); - } - - public compare(o1: any, o2: any): boolean { - return o1 === o2; - } - - public compareLevels(p1: PermissionTypes, p2: PermissionTypes): boolean { - return p1?.type === p2?.type; - } - - organizationChanged() { - this.getApplications(this.permission.organizationId); + }, + }); } private getApplications(organizationId: number) { - this.applicationSubscription = this.applicationService.getApplicationsByOrganizationId(organizationId).subscribe( - res => { + this.applicationSubscription = this.applicationService.getApplicationsByOrganizationId(organizationId).subscribe({ + next: res => { this.applications = res.data.sort((a, b) => a.name.localeCompare(b.name, "en", { numeric: true })); this.filteredApplicationsMulti.next(this.applications.slice()); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.showError(error); - } - ); + }, + }); } private getPermission(id: number) { - this.subscription = this.permissionService.getPermission(id).subscribe( - response => { + this.subscription = this.permissionService.getPermission(id).subscribe({ + next: response => { this.permission.name = response.name; this.permission.levels = response.type; this.permissionLevelsCtrl.setValue(this.permission.levels); @@ -220,32 +250,32 @@ export class PermissionEditComponent implements OnInit, OnDestroy { this.applicationMultiCtrl.setValue(this.permission.applicationIds); } }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.showError(error); - } - ); + }, + }); } private create(): void { - this.permissionService.createPermission(this.permission).subscribe( - _response => { + this.permissionService.createPermission(this.permission).subscribe({ + next: () => { this.routeBack(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.showError(error); - } - ); + }, + }); } private update(): void { - this.permissionService.updatePermission(this.permission, this.id).subscribe( - () => { + this.permissionService.updatePermission(this.permission, this.id).subscribe({ + next: () => { this.routeBack(); }, - error => { + error: error => { this.showError(error); - } - ); + }, + }); } private buildAllowedLevels(): void { @@ -257,38 +287,9 @@ export class PermissionEditComponent implements OnInit, OnDestroy { ]; } - isOrganizationApplicationPermission() { - return this.isReadOrWrite(); - } - - isReadOrWrite(): boolean { - return this.meService.hasPermissionTypes( - this.permission.levels, - PermissionType.Read, - PermissionType.OrganizationApplicationAdmin - ); - } - - onSubmit(): void { - if (this.id) { - this.update(); - } else { - this.create(); - } - } - private showError(err: HttpErrorResponse) { const result = this.errormEssageService.handleErrorMessageWithFields(err); this.errorFields = result.errorFields; this.errorMessages = result.errorMessages; } - - routeBack(): void { - this.location.back(); - } - - ngOnDestroy() { - this._onDestroy.next(); - this._onDestroy.complete(); - } } diff --git a/src/app/admin/permission/permission-list/permission-list.component.html b/src/app/admin/permission/permission-list/permission-list.component.html index ac02f2c7f..72194993a 100644 --- a/src/app/admin/permission/permission-list/permission-list.component.html +++ b/src/app/admin/permission/permission-list/permission-list.component.html @@ -1,15 +1,15 @@
- +
diff --git a/src/app/admin/permission/permission-list/permission-list.component.ts b/src/app/admin/permission/permission-list/permission-list.component.ts index 3a408bf0b..252e6960b 100644 --- a/src/app/admin/permission/permission-list/permission-list.component.ts +++ b/src/app/admin/permission/permission-list/permission-list.component.ts @@ -1,9 +1,8 @@ -import { Component, OnInit, OnChanges, SimpleChanges } from "@angular/core"; +import { Component, OnChanges, OnInit } from "@angular/core"; import { TranslateService } from "@ngx-translate/core"; import { PermissionResponse } from "../permission.model"; import { Subscription } from "rxjs"; import { PermissionService } from "../permission.service"; -import { Sort } from "@shared/models/sort.model"; import { environment } from "@environments/environment"; import { Title } from "@angular/platform-browser"; import { MeService } from "@shared/services/me.service"; @@ -13,6 +12,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-permission-list", templateUrl: "./permission-list.component.html", styleUrls: ["./permission-list.component.scss"], + standalone: false, }) export class PermissionListComponent implements OnInit, OnChanges { isLoadingResults = true; diff --git a/src/app/admin/permission/permission-list/permission-tabel/permission-tabel.component.html b/src/app/admin/permission/permission-list/permission-tabel/permission-tabel.component.html index 79b25ef6a..0b13eb1e9 100644 --- a/src/app/admin/permission/permission-list/permission-tabel/permission-tabel.component.html +++ b/src/app/admin/permission/permission-list/permission-tabel/permission-tabel.component.html @@ -1,98 +1,107 @@
-
- -
- + @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ } +
- - - - - - - - - - - - + +
+ {{ "PERMISSION.NAME" | translate }} - - {{ element.name }} - - - {{ element.name }} - + + @if (canAccess(element)) { + + {{ element.name }} + + } @else { + {{ element.name }} + } + {{ "PERMISSION.ORGANISATION" | translate }} + {{ element?.organization?.name ? element.organization.name : ("PERMISSION.NO_ORGANISATION" | translate) }} + {{ "PERMISSION.NUMBER_OF_MEMBERS" | translate }} -
- {{ element.users.length }} -
- Ingen brugere er tilføjet +
+ @if (element.users) { +
+ {{ element.users.length }} +
+ } @else { + Ingen brugere er tilføjet + }
+ {{ "PERMISSION.TYPE" | translate }} + {{ element.type | translatePermissions }} - + @if (canAccess(element)) { + + + + + + }
diff --git a/src/app/admin/permission/permission-list/permission-tabel/permission-tabel.component.ts b/src/app/admin/permission/permission-list/permission-tabel/permission-tabel.component.ts index a9bc5761a..0812c0f62 100644 --- a/src/app/admin/permission/permission-list/permission-tabel/permission-tabel.component.ts +++ b/src/app/admin/permission/permission-list/permission-tabel/permission-tabel.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, AfterViewInit, Input } from "@angular/core"; +import { AfterViewInit, Component, Input, ViewChild } from "@angular/core"; import { MatPaginator, PageEvent } from "@angular/material/paginator"; import { MatSort } from "@angular/material/sort"; import { Router } from "@angular/router"; @@ -7,7 +7,7 @@ import { TranslateService } from "@ngx-translate/core"; import { DeleteDialogService } from "@shared/components/delete-dialog/delete-dialog.service"; import { MeService } from "@shared/services/me.service"; import { merge, Observable, of as observableOf } from "rxjs"; -import { startWith, switchMap, map, catchError } from "rxjs/operators"; +import { catchError, map, startWith, switchMap } from "rxjs/operators"; import { PermissionGetManyResponse, PermissionResponse, PermissionType } from "../../permission.model"; import { PermissionService } from "../../permission.service"; import { OrganizationAccessScope } from "@shared/enums/access-scopes"; @@ -17,6 +17,7 @@ import { DefaultPageSizeOptions } from "@shared/constants/page.constants"; selector: "app-permission-tabel", templateUrl: "./permission-tabel.component.html", styleUrls: ["./permission-tabel.component.scss"], + standalone: false, }) export class PermissionTabelComponent implements AfterViewInit { displayedColumns: string[] = ["name", "organisations", "members", "type", "menu"]; diff --git a/src/app/admin/permission/permission.component.ts b/src/app/admin/permission/permission.component.ts index 97c9d2af3..2a7c9ff97 100644 --- a/src/app/admin/permission/permission.component.ts +++ b/src/app/admin/permission/permission.component.ts @@ -5,6 +5,7 @@ import { TranslateService } from "@ngx-translate/core"; selector: "app-permission", templateUrl: "./permission.component.html", styleUrls: ["./permission.component.scss"], + standalone: false, }) export class PermissionComponent implements OnInit { constructor(public translate: TranslateService) { diff --git a/src/app/admin/permission/permission.service.ts b/src/app/admin/permission/permission.service.ts index 4f46bffd7..089b3441e 100644 --- a/src/app/admin/permission/permission.service.ts +++ b/src/app/admin/permission/permission.service.ts @@ -3,10 +3,10 @@ import { RestService } from "../../shared/services/rest.service"; import { Observable } from "rxjs"; import { PermissionGetManyResponse, - PermissionResponse, + PermissionGetManySlimResponse, PermissionRequest, PermissionRequestAcceptUser, - PermissionGetManySlimResponse, + PermissionResponse, } from "./permission.model"; import { map } from "rxjs/operators"; import { UserMinimalService } from "../users/user-minimal.service"; diff --git a/src/app/admin/users/accept-user/accept-user.component.html b/src/app/admin/users/accept-user/accept-user.component.html index 5a5801726..9bd29424a 100644 --- a/src/app/admin/users/accept-user/accept-user.component.html +++ b/src/app/admin/users/accept-user/accept-user.component.html @@ -1,61 +1,67 @@ -
- - -
-
-
    -
  • - {{ error | translate }} -
  • -
-
-
-
-
-
-

- {{ "USERS.ACCEPT-USER.QUESTION-ACCEPT" | translate }} - {{ user.name }} - - {{ "USERS.ACCEPT-USER.IN-ORGANIZATION" | translate }} - {{ organizationName }} - -

- - -
- * - + + @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ } +
+
+
+
+

+ {{ "USERS.ACCEPT-USER.QUESTION-ACCEPT" | translate }} + {{ user.name }} + @if (organizationName) { + {{ "USERS.ACCEPT-USER.IN-ORGANIZATION" | translate }} + {{ organizationName }} + } +

+ +
+ * + - - {{ permission.name }} - - -
-
- - + [placeholder]="'PERMISSION.EDIT.TYPE-PLACEHOLDER' | translate" + class="form-control" + id="permissionIds" + name="permissionIds" + required + > + @for (permission of permissions; track permission) { + + {{ permission.name }} + + } + +
+
+ + +
-
- -
+ +
+} diff --git a/src/app/admin/users/accept-user/accept-user.component.ts b/src/app/admin/users/accept-user/accept-user.component.ts index b713ac64a..10858d070 100644 --- a/src/app/admin/users/accept-user/accept-user.component.ts +++ b/src/app/admin/users/accept-user/accept-user.component.ts @@ -1,11 +1,11 @@ import { HttpErrorResponse } from "@angular/common/http"; -import { Component, OnInit, OnDestroy } from "@angular/core"; -import { ActivatedRoute, Router } from "@angular/router"; +import { Component, OnDestroy, OnInit } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; import { PermissionRequestAcceptUser, + PermissionResponse, PermissionType, PermissionTypes, - PermissionResponse, } from "@app/admin/permission/permission.model"; import { TranslateService } from "@ngx-translate/core"; import { ErrorMessageService } from "@shared/error-message.service"; @@ -20,6 +20,7 @@ import { UntypedFormControl } from "@angular/forms"; selector: "app-accept-user", templateUrl: "./accept-user.component.html", styleUrls: ["./accept-user.component.scss"], + standalone: false, }) export class AcceptUserComponent implements OnInit, OnDestroy { public backButtonTitle: string; @@ -69,6 +70,27 @@ export class AcceptUserComponent implements OnInit, OnDestroy { this.getPermissionsForOrg(this.organizationId); } + routeBack(): void { + this.location.back(); + } + + onSubmit(): void { + this.permissionService.createPermissionAcceptUser(this.permission).subscribe({ + next: () => { + this.routeBack(); + }, + error: (error: HttpErrorResponse) => { + console.log(error); + this.showError(error); + }, + }); + } + + ngOnDestroy() { + this.subscription?.unsubscribe(); + this.permissionsForOrgSubscription?.unsubscribe(); + } + private getUser(id: number) { this.subscription = this.userService.getOne(id, false).subscribe(response => { this.user = response; @@ -78,16 +100,16 @@ export class AcceptUserComponent implements OnInit, OnDestroy { private getPermissionsForOrg(orgId: number) { this.permissionsForOrgSubscription = this.permissionService .getPermissions(undefined, undefined, undefined, undefined, undefined, orgId) - .subscribe( - permissionsResponse => { + .subscribe({ + next: permissionsResponse => { this.permissions = permissionsResponse.data.filter(x => x.organization?.id === this.organizationId); this.permissionsCtrl.setValue(this.permissions); this.organizationName = permissionsResponse.data[0]?.organization?.name; }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.showError(error); - } - ); + }, + }); } private showError(err: HttpErrorResponse) { @@ -95,25 +117,4 @@ export class AcceptUserComponent implements OnInit, OnDestroy { this.errorFields = result.errorFields; this.errorMessages = result.errorMessages; } - - routeBack(): void { - this.location.back(); - } - - onSubmit(): void { - this.permissionService.createPermissionAcceptUser(this.permission).subscribe( - () => { - this.routeBack(); - }, - (error: HttpErrorResponse) => { - console.log(error); - this.showError(error); - } - ); - } - - ngOnDestroy() { - this.subscription?.unsubscribe(); - this.permissionsForOrgSubscription?.unsubscribe(); - } } diff --git a/src/app/admin/users/new-kombit-user-page/new-user.component.html b/src/app/admin/users/new-kombit-user-page/new-user.component.html index f2dedb826..b724ca86d 100644 --- a/src/app/admin/users/new-kombit-user-page/new-user.component.html +++ b/src/app/admin/users/new-kombit-user-page/new-user.component.html @@ -7,33 +7,38 @@

{{ "NEW_USER.FIRST_LOGIN" | translate }}

-
-
-
    -
  • - {{ error | translate }} -
  • -
  • - {{ errorMessage | translate }} -
  • -
-
+ + @if (errorMessages || errorMessage) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } @if (errorMessage) { +
  • + {{ errorMessage | translate }} +
  • + } +
+
+ }
*
@@ -41,20 +46,22 @@

* - {{ org.name }} + @for (org of filteredOrganisations | async; track org) { + {{ org.name }} + }

diff --git a/src/app/admin/users/new-kombit-user-page/new-user.component.ts b/src/app/admin/users/new-kombit-user-page/new-user.component.ts index ecdc5b510..dea10b9cc 100644 --- a/src/app/admin/users/new-kombit-user-page/new-user.component.ts +++ b/src/app/admin/users/new-kombit-user-page/new-user.component.ts @@ -16,6 +16,7 @@ import { takeUntil } from "rxjs/operators"; selector: "app-new-user", templateUrl: "./new-user.component.html", styleUrls: ["./new-user.component.scss"], + standalone: false, }) export class NewUserComponent implements OnInit { public organisationSubscription: Subscription; @@ -23,7 +24,7 @@ export class NewUserComponent implements OnInit { public organisations: Organisation[]; public formFailedSubmit = false; public errorFields: string[]; - public errorMessages: unknown; + public errorMessages: any[]; public createNewKombitUserFromFrontend: CreateNewKombitUserFromFrontend = new CreateNewKombitUserFromFrontend(); public organisationsFilterCtrl: UntypedFormControl = new UntypedFormControl(); public filteredOrganisations: ReplaySubject = new ReplaySubject(1); @@ -53,6 +54,48 @@ export class NewUserComponent implements OnInit { } } + onSubmit(): void { + this.resetErrors(); + + const createNewKombitUserDTO = this.mapToDto(this.createNewKombitUserFromFrontend); + + this.userService.updateNewKombit(createNewKombitUserDTO).subscribe({ + next: () => { + this.router.navigate(["/applications"]); + }, + error: (error: HttpErrorResponse) => { + this.handleError(error); + this.formFailedSubmit = true; + }, + }); + } + + public compare(o1: Organisation | undefined, o2: Organisation | undefined): boolean { + return o1?.id === o2?.id; + } + + public getOrganisations() { + this.organisations = this.sharedService.getOrganizationInfo(); + if (!this.organisations) { + this.filteredOrganisations.next(this.organisations.slice()); + } else { + this.organisationSubscription = this.organisationService.getMinimalNoPerm().subscribe(orgs => { + this.organisations = orgs.data; + this.filteredOrganisations.next(this.organisations.slice()); + }); + } + } + + handleError(error: HttpErrorResponse) { + if (typeof error.error?.error === "string" && typeof error.error?.message === "string") { + this.errorMessage = error.error?.message; + } else { + const errors = this.errorMessageService.handleErrorMessageWithFields(error); + this.errorFields = errors.errorFields; + this.errorMessages = errors.errorMessages; + } + } + private filterOrganisations() { if (!this.organisations) { return; @@ -74,22 +117,6 @@ export class NewUserComponent implements OnInit { this.filteredOrganisations.next(filtered); } - onSubmit(): void { - this.resetErrors(); - - const createNewKombitUserDTO = this.mapToDto(this.createNewKombitUserFromFrontend); - - this.userService.updateNewKombit(createNewKombitUserDTO).subscribe( - () => { - this.router.navigate(["/applications"]); - }, - (error: HttpErrorResponse) => { - this.handleError(error); - this.formFailedSubmit = true; - } - ); - } - private mapToDto(frontendModel: CreateNewKombitUserFromFrontend): CreateNewKombitUserDto { const createNewKombitUserDTO = new CreateNewKombitUserDto(); createNewKombitUserDTO.email = frontendModel.email; @@ -102,35 +129,9 @@ export class NewUserComponent implements OnInit { return createNewKombitUserDTO; } - public compare(o1: Organisation | undefined, o2: Organisation | undefined): boolean { - return o1?.id === o2?.id; - } - - public getOrganisations() { - this.organisations = this.sharedService.getOrganizationInfo(); - if (!this.organisations) { - this.filteredOrganisations.next(this.organisations.slice()); - } else { - this.organisationSubscription = this.organisationService.getMinimalNoPerm().subscribe(orgs => { - this.organisations = orgs.data; - this.filteredOrganisations.next(this.organisations.slice()); - }); - } - } - private resetErrors() { this.errorFields = []; this.errorMessages = undefined; this.formFailedSubmit = false; } - - handleError(error: HttpErrorResponse) { - if (typeof error.error?.error === "string" && typeof error.error?.message === "string") { - this.errorMessage = error.error?.message; - } else { - const errors = this.errorMessageService.handleErrorMessageWithFields(error); - this.errorFields = errors.errorFields; - this.errorMessages = errors.errorMessages; - } - } } diff --git a/src/app/admin/users/user-detail/user-detail.component.html b/src/app/admin/users/user-detail/user-detail.component.html index ce9ccbec5..683b980df 100644 --- a/src/app/admin/users/user-detail/user-detail.component.html +++ b/src/app/admin/users/user-detail/user-detail.component.html @@ -1,58 +1,62 @@ -
- -
-
-
-
-

{{ "USERS.DETAIL.HEADLINE" | translate }}

-

- {{ "USERS.DETAIL.EMAIL" | translate }}{{ user.email }} -

- -

- {{ "USERS.DETAIL.STATUS" | translate }}{{ user.active | activeDeactive }} -

-

- {{ "API-KEY.EXPIRES-ON" | translate }} - {{ (user.expiresOn) | dateOnly }} -

-

- {{ "USERS.DETAIL.LAST-LOGIN" | translate }}{{ user?.lastLogin | dkTime }}

- +@if (user) { +
+ +
+
+
+
+

{{ "USERS.DETAIL.HEADLINE" | translate }}

+

+ {{ "USERS.DETAIL.EMAIL" | translate }}{{ user.email }} +

+ +

+ {{ "USERS.DETAIL.STATUS" | translate }}{{ user.active | activeDeactive }} +

+ @if (user.expiresOn) { +

+ {{ "API-KEY.EXPIRES-ON" | translate }} + {{ (user.expiresOn) | dateOnly }} +

+ } @if (user.lastLogin) { +

+ {{ "USERS.DETAIL.LAST-LOGIN" | translate }}{{ user?.lastLogin | dkTime }}

+ } @else {

{{ "USERS.DETAIL.LAST-LOGIN" | translate }}{{ "USERS.DETAIL.NO-LOGIN" | translate }}

- -

- {{ "USERS.DETAIL.GLOBALADMIN" | translate }} - {{ - ((user.permissions | isGlobalAdmin) ? "USERS.GLOBAL_ADMIN.TRUE" : "USERS.GLOBAL_ADMIN.FALSE") | translate - }} -

+ } +

+ {{ "USERS.DETAIL.GLOBALADMIN" | translate }} + {{ + ((user.permissions | isGlobalAdmin) ? "USERS.GLOBAL_ADMIN.TRUE" : "USERS.GLOBAL_ADMIN.FALSE") | translate + }} +

+
-
-
-
-
-

- {{ "USERS.DETAIL.PERMISSIONS" | translate }} -

- +
+
+
+

+ {{ "USERS.DETAIL.PERMISSIONS" | translate }} +

+ +
-
+} diff --git a/src/app/admin/users/user-detail/user-detail.component.ts b/src/app/admin/users/user-detail/user-detail.component.ts index 91ff95840..194398735 100644 --- a/src/app/admin/users/user-detail/user-detail.component.ts +++ b/src/app/admin/users/user-detail/user-detail.component.ts @@ -17,6 +17,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-user-detail", templateUrl: "./user-detail.component.html", styleUrls: ["./user-detail.component.scss"], + standalone: false, }) export class UserDetailComponent implements OnInit, OnDestroy { isLoadingResults = true; @@ -24,8 +25,6 @@ export class UserDetailComponent implements OnInit, OnDestroy { public pageTotal: number; public pageOffset = 0; public applications: Application[]; - private applicationsSubscription: Subscription; - organisation: OrganisationResponse; user: UserResponse; public backButton: BackButton = { @@ -46,6 +45,7 @@ export class UserDetailComponent implements OnInit, OnDestroy { id: number; subscription: Subscription; canEdit: boolean; + private applicationsSubscription: Subscription; constructor( public translate: TranslateService, @@ -73,13 +73,6 @@ export class UserDetailComponent implements OnInit, OnDestroy { this.canEdit = this.meService.hasAccessToTargetOrganization(OrganizationAccessScope.UserAdministrationWrite); } - private getUser(id: number) { - this.subscription = this.userService.getOne(id, true).subscribe(response => { - this.user = response; - this.isLoadingResults = false; - }); - } - onEditUser() { this.router.navigate(["edit-user"], { relativeTo: this.route }); } @@ -90,4 +83,11 @@ export class UserDetailComponent implements OnInit, OnDestroy { this.applicationsSubscription.unsubscribe(); } } + + private getUser(id: number) { + this.subscription = this.userService.getOne(id, true).subscribe(response => { + this.user = response; + this.isLoadingResults = false; + }); + } } diff --git a/src/app/admin/users/user-edit/user-edit.component.html b/src/app/admin/users/user-edit/user-edit.component.html index efb9c83ab..a09577d1e 100644 --- a/src/app/admin/users/user-edit/user-edit.component.html +++ b/src/app/admin/users/user-edit/user-edit.component.html @@ -1,15 +1,21 @@ -
-
    -
  • - {{ error | translate }} -
  • -
  • - {{ errorMessage | translate }} -
  • -
-
+ @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } + @if (errorMessage) { +
  • + {{ errorMessage | translate }} +
  • + } +
+
+ }
@@ -90,9 +96,11 @@ class="form-control" name="permissions" > - - {{ permission.name }} - + @for (permission of permissions; track permission) { + + {{ permission.name }} + + }
@@ -114,23 +122,25 @@
- + {{ "USERS.FORM.ACTIVE" | translate }}
-
- - {{ "USERS.FORM.GLOBAL-ADMIN" | translate }} - -
+ @if (isGlobalAdmin) { +
+ + {{ "USERS.FORM.GLOBAL-ADMIN" | translate }} + +
+ }
- +
diff --git a/src/app/admin/users/user-edit/user-edit.component.ts b/src/app/admin/users/user-edit/user-edit.component.ts index e1fc0cc07..1bb7a35db 100644 --- a/src/app/admin/users/user-edit/user-edit.component.ts +++ b/src/app/admin/users/user-edit/user-edit.component.ts @@ -17,6 +17,7 @@ import { SharedVariableService } from "@shared/shared-variable/shared-variable.s selector: "app-user-edit", templateUrl: "./user-edit.component.html", styleUrls: ["./user-edit.component.scss"], + standalone: false, }) export class UserEditComponent implements OnInit, OnDestroy { public user = new UserRequest(); @@ -117,26 +118,26 @@ export class UserEditComponent implements OnInit, OnDestroy { private create(): void { this.user.expiresOn = this.serializedExpirationDate.value; - this.userService.post(this.user).subscribe( - () => { + this.userService.post(this.user).subscribe({ + next: () => { this.routeBack(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.showError(error); - } - ); + }, + }); } private update(): void { this.user.expiresOn = this.serializedExpirationDate.value; - this.userService.put(this.user, this.id).subscribe( - response => { + this.userService.put(this.user, this.id).subscribe({ + next: () => { this.routeBack(); }, - error => { + error: error => { this.showError(error); - } - ); + }, + }); } private showError(error: HttpErrorResponse) { diff --git a/src/app/admin/users/user-list/awaiting-user-tab/awaiting-users-table-tab.component.ts b/src/app/admin/users/user-list/awaiting-user-tab/awaiting-users-table-tab.component.ts index 4298becd8..2aa16cd5c 100644 --- a/src/app/admin/users/user-list/awaiting-user-tab/awaiting-users-table-tab.component.ts +++ b/src/app/admin/users/user-list/awaiting-user-tab/awaiting-users-table-tab.component.ts @@ -5,6 +5,7 @@ import { SharedVariableService } from "@shared/shared-variable/shared-variable.s selector: "app-awaiting-user-tab", templateUrl: "./awaiting-users-table-tab.component.html", styleUrls: ["./awaiting-users-table-tab.component.scss"], + standalone: false, }) export class AwaitingUsersTableTabComponent implements OnInit { organizationId: number; diff --git a/src/app/admin/users/user-list/awaiting-users-table/awaiting-users-table.component.html b/src/app/admin/users/user-list/awaiting-users-table/awaiting-users-table.component.html index f973f334c..c93c8e41a 100644 --- a/src/app/admin/users/user-list/awaiting-users-table/awaiting-users-table.component.html +++ b/src/app/admin/users/user-list/awaiting-users-table/awaiting-users-table.component.html @@ -1,70 +1,75 @@
-
- -
-
+ @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ } @if (errorMessage) { +
{{ errorMessage | translate }}
- +} +
- - - - - - + - - + +
+ {{ "USERS.NAME" | translate }} +

{{ element.name }}

+ {{ "USERS.EMAIL" | translate }} +

{{ element.email }}

+
diff --git a/src/app/admin/users/user-list/awaiting-users-table/awaiting-users-table.component.ts b/src/app/admin/users/user-list/awaiting-users-table/awaiting-users-table.component.ts index 8928d6001..d5e11daee 100644 --- a/src/app/admin/users/user-list/awaiting-users-table/awaiting-users-table.component.ts +++ b/src/app/admin/users/user-list/awaiting-users-table/awaiting-users-table.component.ts @@ -21,6 +21,7 @@ import { MeService } from "@shared/services/me.service"; selector: "app-awaiting-users-table", templateUrl: "./awaiting-users-table.component.html", styleUrls: ["./awaiting-users-table.component.scss"], + standalone: false, }) export class AwaitingUsersTableComponent implements AfterViewInit { displayedColumns: string[] = ["name", "email", "menu"]; diff --git a/src/app/admin/users/user-list/user-list.component.html b/src/app/admin/users/user-list/user-list.component.html index de6ee5b2e..1265cddf9 100644 --- a/src/app/admin/users/user-list/user-list.component.html +++ b/src/app/admin/users/user-list/user-list.component.html @@ -1,26 +1,27 @@ - -
-
- -
-
+ +
+
+
+ + + + +
+
+
diff --git a/src/app/admin/users/user-list/user-list.component.ts b/src/app/admin/users/user-list/user-list.component.ts index ed726d105..3b7060e90 100644 --- a/src/app/admin/users/user-list/user-list.component.ts +++ b/src/app/admin/users/user-list/user-list.component.ts @@ -3,13 +3,13 @@ import { Title } from "@angular/platform-browser"; import { TranslateService } from "@ngx-translate/core"; import { OrganizationAccessScope } from "@shared/enums/access-scopes"; import { MeService } from "@shared/services/me.service"; -import { SharedVariableService } from "@shared/shared-variable/shared-variable.service"; import { Router } from "@angular/router"; @Component({ selector: "app-user-list", templateUrl: "./user-list.component.html", styleUrls: ["./user-list.component.scss"], + standalone: false, }) export class UserListComponent implements OnInit { public navTabs: any[] = [ diff --git a/src/app/admin/users/user-list/user-table-tab/user-table-tab.component.html b/src/app/admin/users/user-list/user-table-tab/user-table-tab.component.html index 280aab019..08b628c66 100644 --- a/src/app/admin/users/user-list/user-table-tab/user-table-tab.component.html +++ b/src/app/admin/users/user-list/user-table-tab/user-table-tab.component.html @@ -1,4 +1,6 @@
- + @if (organizationId) { + + }
diff --git a/src/app/admin/users/user-list/user-table-tab/user-table-tab.component.ts b/src/app/admin/users/user-list/user-table-tab/user-table-tab.component.ts index df99c98f1..973aa8eec 100644 --- a/src/app/admin/users/user-list/user-table-tab/user-table-tab.component.ts +++ b/src/app/admin/users/user-list/user-table-tab/user-table-tab.component.ts @@ -5,6 +5,7 @@ import { SharedVariableService } from "@shared/shared-variable/shared-variable.s selector: "app-user-table-tab", templateUrl: "./user-table-tab.component.html", styleUrls: ["./user-table-tab.component.scss"], + standalone: false, }) export class UserTableTabComponent implements OnInit { organizationId: number; diff --git a/src/app/admin/users/user-list/user-table/user-table.component.html b/src/app/admin/users/user-list/user-table/user-table.component.html index 8c9e66e79..a3cc76654 100644 --- a/src/app/admin/users/user-list/user-table/user-table.component.html +++ b/src/app/admin/users/user-list/user-table/user-table.component.html @@ -1,7 +1,11 @@
-
- -
+ @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ } @@ -65,12 +69,13 @@ {{ "USERS.LOGIN" | translate }} @@ -83,7 +88,7 @@ [attr.aria-label]="'APPLICATION-TABLE-ROW.SHOW-OPTIONS' | translate" aria-expanded="false" class="applicationRow__edit dropdown-toggle" - data-toggle="dropdown" + data-bs-toggle="dropdown" href="#" id="tableRowDropdown-{{ element.id }}" role="button" diff --git a/src/app/admin/users/user-list/user-table/user-table.component.ts b/src/app/admin/users/user-list/user-table/user-table.component.ts index 8176a7c6e..9cbbb377d 100644 --- a/src/app/admin/users/user-list/user-table/user-table.component.ts +++ b/src/app/admin/users/user-list/user-table/user-table.component.ts @@ -14,6 +14,7 @@ import { MeService } from "@shared/services/me.service"; selector: "app-user-table", templateUrl: "./user-table.component.html", styleUrls: ["./user-table.component.scss"], + standalone: false, }) export class UserTableComponent implements AfterViewInit { displayedColumns: string[] = ["name", "email", "global", "status", "expiresOn", "lastLogin", "menu"]; diff --git a/src/app/admin/users/user-page/user-page.component.html b/src/app/admin/users/user-page/user-page.component.html index 009749d9f..ef757a499 100644 --- a/src/app/admin/users/user-page/user-page.component.html +++ b/src/app/admin/users/user-page/user-page.component.html @@ -1,62 +1,75 @@ -
-
-
-
-

- {{ "USER_PAGE.AWAITING_CONFIRMATION" | translate }} -

- -

- {{ "USER_PAGE.APPLY_ORGANISATIONS" | translate }} -

-
-

{{ "USER_PAGE.APPLIED_ORGANISATIONS" | translate }}

-

- {{ org.name }} -

-

- {{ "USER_PAGE.NO_APPLIED_ORGS" | translate }} -

-
- {{ "USER_PAGE.QUESTION_APPLY_ORGANISATIONS" | translate }} -
-
- -
-
-
    -
  • - {{ error | translate }} -
  • -
-
-
- - - - {{ - org.name - }} - -
-
- +@if (userInfo.user.email) { +
+
+
+
+ @if (awaitingConfirmation) { +

+ {{ "USER_PAGE.AWAITING_CONFIRMATION" | translate }} +

+ } @if (awaitingConfirmation) { + + } +

+ {{ "USER_PAGE.APPLY_ORGANISATIONS" | translate }} +

+
+

{{ "USER_PAGE.APPLIED_ORGANISATIONS" | translate }}

+ @for (org of requestedUserOrganizations; track org) { +

+ {{ org.name }} +

+ } @if (checkForNoUserOrganizations) { +

+ {{ "USER_PAGE.NO_APPLIED_ORGS" | translate }} +

+ } +
+ {{ "USER_PAGE.QUESTION_APPLY_ORGANISATIONS" | translate }} +
- +
+ @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ } +
+ + + @for (org of filteredOrganisations | async | sortBy : 'name'; track org) { + {{ + org.name + }} + + } + +
+
+ +
+ +
-
+} diff --git a/src/app/admin/users/user-page/user-page.component.scss b/src/app/admin/users/user-page/user-page.component.scss index fac1b736a..439a8ac57 100644 --- a/src/app/admin/users/user-page/user-page.component.scss +++ b/src/app/admin/users/user-page/user-page.component.scss @@ -1,6 +1,7 @@ .newOrganisationsHeadLine { margin-top: 15px; } + .noOrgs { font-style: italic; font-size: 15px; diff --git a/src/app/admin/users/user-page/user-page.component.ts b/src/app/admin/users/user-page/user-page.component.ts index 35fdd97bc..cc6bb6ba6 100644 --- a/src/app/admin/users/user-page/user-page.component.ts +++ b/src/app/admin/users/user-page/user-page.component.ts @@ -16,6 +16,7 @@ import { takeUntil } from "rxjs/operators"; selector: "app-user-page", templateUrl: "./user-page.component.html", styleUrls: ["./user-page.component.scss"], + standalone: false, }) export class UserPageComponent implements OnInit { public updateUserOrgs: UpdateUserOrgsDto = new UpdateUserOrgsDto(); @@ -24,7 +25,7 @@ export class UserPageComponent implements OnInit { public formFailedSubmit = false; public backButtonTitle: string; public errorFields: string[]; - public errorMessages: unknown; + public errorMessages: any[]; public title: string; public awaitingConfirmation: boolean; public requestOrganizationsList: Organisation[]; @@ -79,23 +80,6 @@ export class UserPageComponent implements OnInit { this.filterOrganisations(); }); } - private filterOrganisations() { - if (!this.requestOrganizationsList) { - return; - } - // get the search keyword - let search = this.organisationsFilterCtrl?.value?.trim(); - if (!search) { - this.filteredOrganisations.next(this.requestOrganizationsList.slice()); - return; - } else { - search = search.toLowerCase(); - } - const filtered = this.requestOrganizationsList.filter(org => { - return org.name.toLocaleLowerCase().indexOf(search) > -1; - }); - this.filteredOrganisations.next(filtered); - } public compareRequestedAndAlreadyJoinedOrganizations( requestedOrganizations: Organisation[], @@ -160,27 +144,47 @@ export class UserPageComponent implements OnInit { this.resetErrors(); this.mapToDto(this.updateUserOrgsFromFrontend); - this.userService.updateUserOrgs(this.updateUserOrgs).subscribe( - () => { + this.userService.updateUserOrgs(this.updateUserOrgs).subscribe({ + next: () => { window.location.reload(); this.pressed = false; }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.handleError(error); this.formFailedSubmit = true; this.pressed = false; - } - ); + }, + }); } } - private resetErrors() { - this.errorFields = []; - this.errorMessages = undefined; - this.formFailedSubmit = false; - } + handleError(error: HttpErrorResponse) { const errors = this.errorMessageService.handleErrorMessageWithFields(error); this.errorFields = errors.errorFields; this.errorMessages = errors.errorMessages; } + + private filterOrganisations() { + if (!this.requestOrganizationsList) { + return; + } + // get the search keyword + let search = this.organisationsFilterCtrl?.value?.trim(); + if (!search) { + this.filteredOrganisations.next(this.requestOrganizationsList.slice()); + return; + } else { + search = search.toLowerCase(); + } + const filtered = this.requestOrganizationsList.filter(org => { + return org.name.toLocaleLowerCase().indexOf(search) > -1; + }); + this.filteredOrganisations.next(filtered); + } + + private resetErrors() { + this.errorFields = []; + this.errorMessages = undefined; + this.formFailedSubmit = false; + } } diff --git a/src/app/admin/users/user.service.ts b/src/app/admin/users/user.service.ts index 804e78480..53f58f732 100644 --- a/src/app/admin/users/user.service.ts +++ b/src/app/admin/users/user.service.ts @@ -5,12 +5,12 @@ import { map } from "rxjs/operators"; import { Organisation } from "../organisation/organisation.model"; import { UserMinimalService } from "./user-minimal.service"; import { - UserResponse, - UserRequest, - UserGetManyResponse, CreateNewKombitUserDto, - UpdateUserOrgsDto, RejectUserDto, + UpdateUserOrgsDto, + UserGetManyResponse, + UserRequest, + UserResponse, } from "./user.model"; @Injectable({ diff --git a/src/app/admin/users/users.component.ts b/src/app/admin/users/users.component.ts index 2a0d9074f..35c8b20d8 100644 --- a/src/app/admin/users/users.component.ts +++ b/src/app/admin/users/users.component.ts @@ -3,6 +3,7 @@ import { Component, OnInit } from "@angular/core"; @Component({ selector: "app-users", templateUrl: "./users.component.html", + standalone: false, }) export class UsersComponent implements OnInit { constructor() {} diff --git a/src/app/app.component.html b/src/app/app.component.html index 11334b163..c18ab69aa 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,7 +1,9 @@ -
- -
-
+@if (isLoggedIn) { +
+ +
+} +
diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 06672b9ed..6e522b8f8 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -5,19 +5,20 @@ import { LoggedInService } from "@shared/services/loggedin.service"; selector: "app-root", templateUrl: "./app.component.html", styleUrls: ["./app.component.scss"], + standalone: false, }) export class AppComponent { title = "OS2IoT-frontend"; isLoggedIn = true; isNavVisible = true; - onNavToggle(isVisible: boolean) { - this.isNavVisible = isVisible; - } - constructor(private loggedInService: LoggedInService) { loggedInService.changeEmitted?.subscribe(change => { this.isLoggedIn = change; }); } + + onNavToggle(isVisible: boolean) { + this.isNavVisible = isVisible; + } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 526131d34..8c453f20f 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,5 +1,5 @@ import { NgIf } from "@angular/common"; -import { HTTP_INTERCEPTORS, HttpClient, HttpClientModule } from "@angular/common/http"; +import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from "@angular/common/http"; import { NgModule } from "@angular/core"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { MatInputModule } from "@angular/material/input"; @@ -9,15 +9,15 @@ import { BrowserModule, Title } from "@angular/platform-browser"; import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; import { JwtModule } from "@auth0/angular-jwt"; import { NgbModule } from "@ng-bootstrap/ng-bootstrap"; -import { TranslateLoader, TranslateModule } from "@ngx-translate/core"; -import { TranslateHttpLoader } from "@ngx-translate/http-loader"; +import { provideTranslateService, TranslateDirective, TranslateModule, TranslatePipe } from "@ngx-translate/core"; +import { provideTranslateHttpLoader } from "@ngx-translate/http-loader"; import { MatSelectSearchModule } from "@shared/components/mat-select-search/mat-select-search.module"; import { WelcomeDialogModule } from "@shared/components/welcome-dialog/welcome-dialog.module"; import { AuthJwtInterceptor } from "@shared/helpers/auth-jwt.interceptor"; import { MatPaginatorIntlDa } from "@shared/helpers/mat-paginator-intl-da"; import { NGMaterialModule } from "@shared/Modules/materiale.module"; import { PipesModule } from "@shared/pipes/pipes.module"; -import { SAVER, getSaver } from "@shared/providers/saver.provider"; +import { getSaver, SAVER } from "@shared/providers/saver.provider"; import { SharedVariableModule } from "@shared/shared-variable/shared-variable.module"; import { SharedModule } from "@shared/shared.module"; import { CookieService } from "ngx-cookie-service"; @@ -33,32 +33,25 @@ import { NavbarModule } from "./navbar/navbar.module"; import { ProfilesModule } from "./profiles/profiles.module"; import { SearchModule } from "./search/search.module"; -export function HttpLoaderFactory(http: HttpClient) { - return new TranslateHttpLoader(http, "./assets/i18n/", ".json"); -} - export function tokenGetter() { return localStorage.getItem("id_token"); } @NgModule({ declarations: [AppComponent, ErrorPageComponent, NewUserComponent, UserPageComponent], + bootstrap: [AppComponent], + exports: [TranslatePipe, TranslateDirective], imports: [ SharedVariableModule.forRoot(), AuthModule, BrowserModule, BrowserAnimationsModule, - HttpClientModule, AppRoutingModule, NavbarModule, ProfilesModule, TranslateModule.forRoot({ - defaultLanguage: "da", - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient], - }, + fallbackLang: "da", + loader: provideTranslateHttpLoader({ prefix: "./assets/i18n/", suffix: ".json" }), }), NgbModule, NgIf, @@ -70,7 +63,6 @@ export function tokenGetter() { MatSelectSearchModule, SearchModule, SharedModule, - HttpClientModule, MatInputModule, MatTooltipModule, JwtModule.forRoot({ @@ -82,8 +74,6 @@ export function tokenGetter() { WelcomeDialogModule, PipesModule, ], - bootstrap: [AppComponent], - exports: [TranslateModule], providers: [ // use these two providers only in dev environment //{ provide: ErrorHandler, useClass: GlobalErrorHandler }, @@ -93,6 +83,11 @@ export function tokenGetter() { { provide: SAVER, useFactory: getSaver }, { provide: MatPaginatorIntl, useClass: MatPaginatorIntlDa }, { provide: CookieService }, + provideHttpClient(withInterceptorsFromDi()), + provideTranslateService({ + fallbackLang: "da", + loader: provideTranslateHttpLoader({ prefix: "./assets/i18n/", suffix: ".json" }), + }), ], }) export class AppModule {} diff --git a/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.html b/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.html index 100d0b3d7..7c6413640 100644 --- a/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.html +++ b/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.html @@ -2,44 +2,50 @@

{{ "APPLICATION.CHANGE-ORGANIZATION.TITLE" | translate }}

+ "APPLICATION.CHANGE-ORGANIZATION.CHOOSE-ORGANIZATION" | translate + }} - - {{ organization.name }} - + @for (organization of filteredOrganizations | async; track organization) { + + {{ organization.name }} + + } -
- - - {{ permission.name }} - - - {{ "APPLICATION.CHANGE-ORGANIZATION.USER-GROUP-AUTO-SELECT" | translate }} -
+ "APPLICATION.CHANGE-ORGANIZATION.CHOOSE-USER-GROUPS" | translate + }} + @if (permissions.length > 0) { +
+ + @for (permission of filteredPermissionsMulti | async; track permission) { + + {{ permission.name }} + + } + + {{ "APPLICATION.CHANGE-ORGANIZATION.USER-GROUP-AUTO-SELECT" | translate }} +
+ }
-
+
-
diff --git a/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.ts b/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.ts index a38f69d97..28d09bb58 100644 --- a/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.ts +++ b/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.ts @@ -1,10 +1,9 @@ import { Component, Inject, OnInit } from "@angular/core"; -import { UntypedFormControl } from "@angular/forms"; import { MAT_DIALOG_DATA, MatDialogRef } from "@angular/material/dialog"; import { MatSnackBar } from "@angular/material/snack-bar"; import { Organisation } from "@app/admin/organisation/organisation.model"; import { OrganisationService } from "@app/admin/organisation/organisation.service"; -import { PermissionResponse, PermissionsSlimDto } from "@app/admin/permission/permission.model"; +import { PermissionsSlimDto } from "@app/admin/permission/permission.model"; import { PermissionService } from "@app/admin/permission/permission.service"; import { Application, UpdateApplicationOrganization } from "@applications/application.model"; import { ApplicationService } from "@applications/application.service"; @@ -17,6 +16,7 @@ import { ReplaySubject, Subscription } from "rxjs"; selector: "app-change-organization-dialog", templateUrl: "./application-change-organization-dialog.component.html", styleUrls: ["./application-change-organization-dialog.component.scss"], + standalone: false, }) export class ApplicationChangeOrganizationDialogComponent implements OnInit { public applicationsSubscription: Subscription; diff --git a/src/app/applications/application-detail/application-detail.component.html b/src/app/applications/application-detail/application-detail.component.html index 53a57b1cc..1bff90fdd 100644 --- a/src/app/applications/application-detail/application-detail.component.html +++ b/src/app/applications/application-detail/application-detail.component.html @@ -1,84 +1,92 @@ -
- - -
-
-
-
-
- {{ errorMessage | translate }} +@if (application) { +
+ + +
+
+
+
+ @if (errorMessage) { +
+ {{ errorMessage | translate }} +
+ } +

{{ "APPLICATION.DETAILS" | translate }}

+ + @if (application.description) { +

+ {{ "APPLICATION.DESCRIPTION" | translate }} +

+ } +

{{ application.description }}

+
-

{{ "APPLICATION.DETAILS" | translate }}

- -

- {{ "APPLICATION.DESCRIPTION" | translate }} -

-

{{application.description}}

-
-
-
-
-
- -
-
-
- IoTDeviceMarker -

  IoT-Enhed

-
-
- InactiveGatewayMarker -

  Inaktiv gateway

-
-
- ActiveGatewayMarker -

  Aktiv gateway

+
+
+ @if (devices && gateways) { +
+ +
+ } +
+
+ IoTDeviceMarker +

  IoT-Enhed

+
+
+ InactiveGatewayMarker +

  Inaktiv gateway

+
+
+ ActiveGatewayMarker +

  Aktiv gateway

+
+ + + +
- - - - -
-
+} diff --git a/src/app/applications/application-detail/application-detail.component.ts b/src/app/applications/application-detail/application-detail.component.ts index 537c12a77..31282f4cc 100644 --- a/src/app/applications/application-detail/application-detail.component.ts +++ b/src/app/applications/application-detail/application-detail.component.ts @@ -25,6 +25,7 @@ import moment from "moment/moment"; selector: "app-application", templateUrl: "./application-detail.component.html", styleUrls: ["./application-detail.component.scss"], + standalone: false, }) export class ApplicationDetailComponent implements OnInit, OnDestroy, AfterViewInit { @Output() deleteApplication = new EventEmitter(); diff --git a/src/app/applications/application-edit/application-edit.component.ts b/src/app/applications/application-edit/application-edit.component.ts index 7a35fa048..fa1a96862 100644 --- a/src/app/applications/application-edit/application-edit.component.ts +++ b/src/app/applications/application-edit/application-edit.component.ts @@ -7,6 +7,7 @@ import { BackButton } from "@shared/models/back-button.model"; selector: "app-application-edit", templateUrl: "./application-edit.component.html", styleUrls: ["./application-edit.component.scss"], + standalone: false, }) export class ApplicationEditComponent implements OnInit { public backButton: BackButton = { label: "", routerLink: "applications" }; diff --git a/src/app/applications/applications-list/application-filter/application-filter.component.html b/src/app/applications/applications-list/application-filter/application-filter.component.html index 931174f9d..d386fac7f 100644 --- a/src/app/applications/applications-list/application-filter/application-filter.component.html +++ b/src/app/applications/applications-list/application-filter/application-filter.component.html @@ -2,10 +2,12 @@
{{ "APPLICATION-FILTER.STATUS" | translate }}
- - - {{ option.label | translate }} - + + @for (option of statusOptions; track option) { + + {{ option.label | translate }} + + }
@@ -13,10 +15,12 @@
{{ "APPLICATION-FILTER.STATE" | translate }}
- - - {{ option.label | translate }} - + + @for (option of stateOptions; track option) { + + {{ option.label | translate }} + + }
@@ -24,21 +28,23 @@
{{ "APPLICATION-FILTER.OWNER" | translate }}
- + {{ "APPLICATION-FILTER.ALL" | translate }} - - {{ option.label }} - + @for (option of ownerOptions; track option) { + + {{ option.label }} + + }
-
@@ -209,34 +217,37 @@ diff --git a/src/app/applications/applications-list/applications-table/applications-table.component.ts b/src/app/applications/applications-list/applications-table/applications-table.component.ts index 0af1bd666..191ec654d 100644 --- a/src/app/applications/applications-list/applications-table/applications-table.component.ts +++ b/src/app/applications/applications-list/applications-table/applications-table.component.ts @@ -127,6 +127,7 @@ const columnDefinitions: TableColumn[] = [ styleUrls: ["./applications-table.component.scss"], templateUrl: "./applications-table.component.html", encapsulation: ViewEncapsulation.None, + standalone: false, }) export class ApplicationsTableComponent implements AfterViewInit, OnInit { @Input() organizationId: number; diff --git a/src/app/applications/applications.component.ts b/src/app/applications/applications.component.ts index 202cc7488..e62659c84 100644 --- a/src/app/applications/applications.component.ts +++ b/src/app/applications/applications.component.ts @@ -3,6 +3,7 @@ import { Component, OnInit } from "@angular/core"; @Component({ selector: "app-applications", templateUrl: "./applications.component.html", + standalone: false, }) export class ApplicationsComponent implements OnInit { constructor() {} diff --git a/src/app/applications/applications.module.ts b/src/app/applications/applications.module.ts index 4ccf03a7f..9420ed577 100644 --- a/src/app/applications/applications.module.ts +++ b/src/app/applications/applications.module.ts @@ -3,7 +3,7 @@ import { NgModule } from "@angular/core"; import { ReactiveFormsModule } from "@angular/forms"; import { RouterModule } from "@angular/router"; import { FontAwesomeModule } from "@fortawesome/angular-fontawesome"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslatePipe } from "@ngx-translate/core"; import { BasicInformationBoxComponent } from "@shared/components/basic-information-box/basic-information-box.component"; import { FormModule } from "@shared/components/forms/form.module"; import { OptionFieldComponent } from "@shared/components/option-field/option-field.component"; @@ -44,7 +44,7 @@ import { BasicTabSwitchComponent } from "@shared/components/basic-tab-switch/bas imports: [ CommonModule, RouterModule, - TranslateModule, + TranslatePipe, IotDevicesModule, DatatargetModule, DirectivesModule, diff --git a/src/app/applications/bulk-import/bulk-import.component.html b/src/app/applications/bulk-import/bulk-import.component.html index c5e60c2c5..e78b60df2 100644 --- a/src/app/applications/bulk-import/bulk-import.component.html +++ b/src/app/applications/bulk-import/bulk-import.component.html @@ -2,39 +2,44 @@
- - -
-
-
    - {{ - "APPLICATION.BULK.FILEFORMATERRORMESSAGE" | translate - }} -
+ @if (download$ | async; as download) { + + + }
+ @if (fileFormatErrorMessage) { +
+
    + {{ + "APPLICATION.BULK.FILEFORMATERRORMESSAGE" | translate + }} +
+
+ }
- @@ -42,67 +47,73 @@
-
-

{{ file }}

- -
+ @for (file of files; track file; let i = $index) { +
+

{{ file }}

+ +
+ }
- + @if (isLoading) { + + }
-
-
-

{{ element.lastLogin | tableDatePipe }}

-
- -

Ikke logget på endnu

-
+ @if (element.lastLogin) { +
+

{{ element.lastLogin | tableDatePipe }}

+
+ } @else { +

Ikke logget på endnu

+ }
- + @if (application.personalData) { + + } {{ !application.personalData ? "-" : "" }} - + @if (element?.id | canEditApplication) { + + }
+
- - + + - - + + - - + + - - + - - + +
{{ "APPLICATION.BULK.NAME" | translate }}{{ element.device?.name }}{{ "APPLICATION.BULK.NAME" | translate }}{{ element.device?.name }} {{ "APPLICATION.BULK.TYPE" | translate }}{{ "IOT-DEVICE-TYPES." + element.device?.type | translate }}{{ "APPLICATION.BULK.TYPE" | translate }}{{ "IOT-DEVICE-TYPES." + element.device?.type | translate }} {{ "APPLICATION.BULK.IMPORTSTATUS" | translate }}{{ element.importStatus }}{{ "APPLICATION.BULK.IMPORTSTATUS" | translate }}{{ element.importStatus }} {{ "APPLICATION.BULK.ERROR" | translate }} + {{ "APPLICATION.BULK.ERROR" | translate }}
    -
  • - {{ error | translate }} -
  • + @for (error of element.errorMessages; track error) { +
  • + {{ error | translate }} +
  • + }
diff --git a/src/app/applications/bulk-import/bulk-import.component.ts b/src/app/applications/bulk-import/bulk-import.component.ts index 1bf1f84b4..959b829d8 100644 --- a/src/app/applications/bulk-import/bulk-import.component.ts +++ b/src/app/applications/bulk-import/bulk-import.component.ts @@ -22,6 +22,7 @@ import { BulkMapping } from "./bulk-mapping"; selector: "app-bulk-import", templateUrl: "./bulk-import.component.html", styleUrls: ["./bulk-import.component.scss"], + standalone: false, }) export class BulkImportComponent implements OnInit { displayedColumns: string[] = ["name", "type", "importStatus", "errorMessages"]; @@ -55,8 +56,8 @@ export class BulkImportComponent implements OnInit { }, ]; download$: Observable; - private bulkMapper = new BulkMapping(); public backButtonTitle: string; + private bulkMapper = new BulkMapping(); private applicationId; constructor( @@ -128,6 +129,23 @@ export class BulkImportComponent implements OnInit { }; } + addIoTDevice() { + // Subscribe to subject in service, Emit the index of next item in the array to be previous + // The emit will activate the subscription which should call the updateIoTDevice + const { newDevices, updatedDevices } = this.splitDevices(); + + this.postBulkImportPayload( + newDevices, + this.bulkImportService.nextCreateIotDeviceBatchIndex$, + this.iotDeviceService.createIoTDevices.bind(this.iotDeviceService) + ); + this.postBulkImportPayload( + updatedDevices, + this.bulkImportService.nextUpdateDeviceBatchIndex$, + this.iotDeviceService.updateIoTDevices.bind(this.iotDeviceService) + ); + } + private validateFile(name: string) { const ext = name.substring(name.lastIndexOf(".") + 1); if (ext.toLowerCase() === "csv") { @@ -150,23 +168,6 @@ export class BulkImportComponent implements OnInit { }); } - addIoTDevice() { - // Subscribe to subject in service, Emit the index of next item in the array to be previous - // The emit will activate the subscription which should call the updateIoTDevice - const { newDevices, updatedDevices } = this.splitDevices(); - - this.postBulkImportPayload( - newDevices, - this.bulkImportService.nextCreateIotDeviceBatchIndex$, - this.iotDeviceService.createIoTDevices.bind(this.iotDeviceService) - ); - this.postBulkImportPayload( - updatedDevices, - this.bulkImportService.nextUpdateDeviceBatchIndex$, - this.iotDeviceService.updateIoTDevices.bind(this.iotDeviceService) - ); - } - private postBulkImportPayload( bulkDevices: BulkImport[][], batchIndex$: Subject, @@ -179,19 +180,19 @@ export class BulkImportComponent implements OnInit { let batchIndex = 0; // takeWhile() will unsubscribe once the condition is false - batchIndex$.pipe(takeWhile(() => batchIndex in bulkDevices)).subscribe( - () => { + batchIndex$.pipe(takeWhile(() => batchIndex in bulkDevices)).subscribe({ + next: () => { const requestItems = bulkDevices[batchIndex]; const devices: IotDeviceImportRequest = { data: requestItems.map(bulkResult => bulkResult.device), }; - importDevices(devices).subscribe( - response => { + importDevices(devices).subscribe({ + next: response => { this.onSuccessfulImport(response, requestItems); ++batchIndex; batchIndex$.next(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { requestItems.forEach(item => { item.errorMessages = this.errorMessageService.handleErrorMessageWithFields(error).errorMessages; item.importStatus = "Failed"; @@ -200,16 +201,16 @@ export class BulkImportComponent implements OnInit { ++batchIndex; batchIndex$.next(); } - ); + }); }, - (_error: HttpErrorResponse) => { + error: (_error: HttpErrorResponse) => { // Should not happen }, - () => { + complete: () => { // Process any devices whose status hasn't been set and mark them as errors. this.onCompleteImport(bulkDevices); - } - ); + }, + }); // Trigger our listener batchIndex$.next(); diff --git a/src/app/applications/bulk-import/bulk-mapping.ts b/src/app/applications/bulk-import/bulk-mapping.ts index 78c826f57..72c207d7a 100644 --- a/src/app/applications/bulk-import/bulk-mapping.ts +++ b/src/app/applications/bulk-import/bulk-mapping.ts @@ -1,6 +1,5 @@ import { IotDevice } from "@applications/iot-devices/iot-device.model"; import { DeviceType } from "@shared/enums/device-type"; -import { Buffer } from "buffer"; export class BulkMapping { public dataMapper(data: IotDevice, applicationId: number): IotDevice { diff --git a/src/app/applications/datatarget/datatarget-detail/datatarget-detail-type-selector.directive.spec.ts b/src/app/applications/datatarget/datatarget-detail/datatarget-detail-type-selector.directive.spec.ts index 8adac488e..08fc069b9 100644 --- a/src/app/applications/datatarget/datatarget-detail/datatarget-detail-type-selector.directive.spec.ts +++ b/src/app/applications/datatarget/datatarget-detail/datatarget-detail-type-selector.directive.spec.ts @@ -2,6 +2,7 @@ import { ViewContainerRef } from "@angular/core"; import { DatatargetDetailTypeSelectorDirective } from "./datatarget-detail-type-selector.directive"; + let viewContainerRef: ViewContainerRef; describe("Directive: DatatargetDetailTypeSelector", () => { it("should create an instance", () => { diff --git a/src/app/applications/datatarget/datatarget-detail/datatarget-detail-type-selector.directive.ts b/src/app/applications/datatarget/datatarget-detail/datatarget-detail-type-selector.directive.ts index 1123b63b2..3efba70c3 100644 --- a/src/app/applications/datatarget/datatarget-detail/datatarget-detail-type-selector.directive.ts +++ b/src/app/applications/datatarget/datatarget-detail/datatarget-detail-type-selector.directive.ts @@ -2,6 +2,7 @@ import { Directive, ViewContainerRef } from "@angular/core"; @Directive({ selector: "[detail-component]", + standalone: false, }) export class DatatargetDetailTypeSelectorDirective { constructor(public viewContainerRef: ViewContainerRef) {} diff --git a/src/app/applications/datatarget/datatarget-detail/datatarget-detail.component.ts b/src/app/applications/datatarget/datatarget-detail/datatarget-detail.component.ts index 8601c18da..86971578c 100644 --- a/src/app/applications/datatarget/datatarget-detail/datatarget-detail.component.ts +++ b/src/app/applications/datatarget/datatarget-detail/datatarget-detail.component.ts @@ -12,6 +12,7 @@ import { DatatargetDetailTypeSelectorDirective } from "./datatarget-detail-type- selector: "app-datatarget-detail", templateUrl: "./datatarget-detail.component.html", styleUrls: ["./datatarget-detail.component.scss"], + standalone: false, }) export class DatatargetDetailComponent implements OnDestroy { @ViewChild(DatatargetDetailTypeSelectorDirective, { static: true }) diff --git a/src/app/applications/datatarget/datatarget-edit/datatarget-edit-type-selector.directive.spec.ts b/src/app/applications/datatarget/datatarget-edit/datatarget-edit-type-selector.directive.spec.ts index 6ac0cc50d..1cbc8ba64 100644 --- a/src/app/applications/datatarget/datatarget-edit/datatarget-edit-type-selector.directive.spec.ts +++ b/src/app/applications/datatarget/datatarget-edit/datatarget-edit-type-selector.directive.spec.ts @@ -2,6 +2,7 @@ import { ViewContainerRef } from "@angular/core"; import { DatatargetEditTypeSelectorDirective } from "./datatarget-edit-type-selector.directive"; + let viewContainerRef: ViewContainerRef; describe("Directive: DatatargetEditTypeSelector", () => { it("should create an instance", () => { diff --git a/src/app/applications/datatarget/datatarget-edit/datatarget-edit-type-selector.directive.ts b/src/app/applications/datatarget/datatarget-edit/datatarget-edit-type-selector.directive.ts index 00b934d4b..3e78e7ee9 100644 --- a/src/app/applications/datatarget/datatarget-edit/datatarget-edit-type-selector.directive.ts +++ b/src/app/applications/datatarget/datatarget-edit/datatarget-edit-type-selector.directive.ts @@ -2,6 +2,7 @@ import { Directive, ViewContainerRef } from "@angular/core"; @Directive({ selector: "[edit-component]", + standalone: false, }) export class DatatargetEditTypeSelectorDirective { constructor(public viewContainerRef: ViewContainerRef) {} diff --git a/src/app/applications/datatarget/datatarget-edit/datatarget-edit.component.ts b/src/app/applications/datatarget/datatarget-edit/datatarget-edit.component.ts index 3827896a6..fe63a10bf 100644 --- a/src/app/applications/datatarget/datatarget-edit/datatarget-edit.component.ts +++ b/src/app/applications/datatarget/datatarget-edit/datatarget-edit.component.ts @@ -1,4 +1,4 @@ -import { Component, ComponentFactoryResolver, OnDestroy, OnInit, Type, ViewChild } from "@angular/core"; +import { Component, OnDestroy, OnInit, Type, ViewChild } from "@angular/core"; import { ActivatedRoute } from "@angular/router"; import { DataTargetType } from "@shared/enums/datatarget-type"; import { DatatargetTypesService } from "../datatarget-types.service"; @@ -11,6 +11,7 @@ import { DatatargetEditTypeSelectorDirective } from "./datatarget-edit-type-sele selector: "app-datatarget-edit", templateUrl: "./datatarget-edit.component.html", styleUrls: ["./datatarget-edit.component.scss"], + standalone: false, }) export class DatatargetEditComponent implements OnInit, OnDestroy { @ViewChild(DatatargetEditTypeSelectorDirective, { static: true }) diff --git a/src/app/applications/datatarget/datatarget-log/datatarget-log.component.html b/src/app/applications/datatarget/datatarget-log/datatarget-log.component.html index ccea3ff8f..d4c6c79ad 100644 --- a/src/app/applications/datatarget/datatarget-log/datatarget-log.component.html +++ b/src/app/applications/datatarget/datatarget-log/datatarget-log.component.html @@ -1,43 +1,48 @@
-
- + @if (isLoadingResults) { +
+
+ } - - - - - - +
{{ "GATEWAY.STATS-TIMESTAMP" | translate }}{{ element.createdAt | date:'dd-MM-yyyy - HH:mm:ss' }}
+ + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - -
{{ "GATEWAY.STATS-TIMESTAMP" | translate }}{{ element.createdAt | date:'dd-MM-yyyy - HH:mm:ss' }}{{ "DATATARGET-TABLE.TYPE" | translate }} - - - {{ ('DATATARGET.RESPONSE_TYPE.' + element.type) | translate }} - {{ "DATATARGET-TABLE.TYPE" | translate }} + @if (element.type === 'OK') { + + } @if (element.type === 'ERROR') { + + } + {{ ('DATATARGET.RESPONSE_TYPE.' + element.type) | translate }} + {{ "GEN.MESSAGE" | translate }}{{ element.statusCode }} {{ element.message }}{{ "GEN.MESSAGE" | translate }}{{ element.statusCode }} {{ element.message }}{{ "GEN.DEVICE" | translate }}{{ element.iotDevice?.name }}{{ "GEN.DEVICE" | translate }}{{ element.iotDevice?.name }}
+ + + + - - - -
\ No newline at end of file + + + +
diff --git a/src/app/applications/datatarget/datatarget-log/datatarget-log.component.scss b/src/app/applications/datatarget/datatarget-log/datatarget-log.component.scss index 0f0aeca5c..46ff93096 100644 --- a/src/app/applications/datatarget/datatarget-log/datatarget-log.component.scss +++ b/src/app/applications/datatarget/datatarget-log/datatarget-log.component.scss @@ -2,9 +2,11 @@ .datatarget-log-container { margin: 2em; } + .fa-ok { color: green !important; } + .fa-error { color: red !important; } diff --git a/src/app/applications/datatarget/datatarget-log/datatarget-log.component.spec.ts b/src/app/applications/datatarget/datatarget-log/datatarget-log.component.spec.ts index d579851f3..645977909 100644 --- a/src/app/applications/datatarget/datatarget-log/datatarget-log.component.spec.ts +++ b/src/app/applications/datatarget/datatarget-log/datatarget-log.component.spec.ts @@ -1,23 +1,22 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ComponentFixture, TestBed } from "@angular/core/testing"; -import { DatatargetLogComponent } from './datatarget-log.component'; +import { DatatargetLogComponent } from "./datatarget-log.component"; -describe('DatatargetLogComponent', () => { +describe("DatatargetLogComponent", () => { let component: DatatargetLogComponent; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [DatatargetLogComponent] - }) - .compileComponents(); - + imports: [DatatargetLogComponent], + }).compileComponents(); + fixture = TestBed.createComponent(DatatargetLogComponent); component = fixture.componentInstance; fixture.detectChanges(); }); - it('should create', () => { + it("should create", () => { expect(component).toBeTruthy(); }); }); diff --git a/src/app/applications/datatarget/datatarget-log/datatarget-log.component.ts b/src/app/applications/datatarget/datatarget-log/datatarget-log.component.ts index 4a2270136..31d8fd7d7 100644 --- a/src/app/applications/datatarget/datatarget-log/datatarget-log.component.ts +++ b/src/app/applications/datatarget/datatarget-log/datatarget-log.component.ts @@ -14,6 +14,7 @@ import { DatatargetLogService } from "./datatarget-log.service"; selector: "app-datatarget-log", templateUrl: "./datatarget-log.component.html", styleUrl: "./datatarget-log.component.scss", + standalone: false, }) export class DatatargetLogComponent implements OnDestroy, AfterViewInit { @ViewChild(MatPaginator) paginator: MatPaginator; diff --git a/src/app/applications/datatarget/datatarget-new/datatarget-new.component.html b/src/app/applications/datatarget/datatarget-new/datatarget-new.component.html index 08f4c3d84..eeef119bc 100644 --- a/src/app/applications/datatarget/datatarget-new/datatarget-new.component.html +++ b/src/app/applications/datatarget/datatarget-new/datatarget-new.component.html @@ -1,39 +1,43 @@ - +
-
- - -
- - - -
- {{ dataTargetType.name | translate }} -
- - {{ dataTargetType.provider }} - -
- - {{ dataTargetType.description | translate }} - - - - - - - -
-
+ @for (dataTargetType of avaiableDataTargetTypes; track dataTargetType) { +
+ + @if (dataTargetType.icon) { + + } @if (!dataTargetType.icon) { +
+ } + + +
+ {{ dataTargetType.name | translate }} +
+ + {{ dataTargetType.provider }} + +
+ + {{ dataTargetType.description | translate }} + + + + @if (dataTargetType.readMoreUrl) { + + } + + +
+
+ }
diff --git a/src/app/applications/datatarget/datatarget-new/datatarget-new.component.spec.ts b/src/app/applications/datatarget/datatarget-new/datatarget-new.component.spec.ts index 467ea6c9e..f1bf7f446 100644 --- a/src/app/applications/datatarget/datatarget-new/datatarget-new.component.spec.ts +++ b/src/app/applications/datatarget/datatarget-new/datatarget-new.component.spec.ts @@ -1,7 +1,5 @@ /* tslint:disable:no-unused-variable */ import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; -import { By } from "@angular/platform-browser"; -import { DebugElement } from "@angular/core"; import { DatatargetNewComponent } from "./datatarget-new.component"; diff --git a/src/app/applications/datatarget/datatarget-new/datatarget-new.component.ts b/src/app/applications/datatarget/datatarget-new/datatarget-new.component.ts index 33f752cf3..54edcfd7e 100644 --- a/src/app/applications/datatarget/datatarget-new/datatarget-new.component.ts +++ b/src/app/applications/datatarget/datatarget-new/datatarget-new.component.ts @@ -8,6 +8,7 @@ import { DatatargetTypesService } from "../datatarget-types.service"; selector: "app-datatarget-new", templateUrl: "./datatarget-new.component.html", styleUrls: ["./datatarget-new.component.scss"], + standalone: false, }) export class DatatargetNewComponent implements OnInit { public title = ""; diff --git a/src/app/applications/datatarget/datatarget-tab/datatarget-tab.component.html b/src/app/applications/datatarget/datatarget-tab/datatarget-tab.component.html index d8153764c..fea9c14d2 100644 --- a/src/app/applications/datatarget/datatarget-tab/datatarget-tab.component.html +++ b/src/app/applications/datatarget/datatarget-tab/datatarget-tab.component.html @@ -2,18 +2,19 @@
-
- - -
- - - + @if (applicationService.canEdit) { +
+ + +
+ } @else { + + }
diff --git a/src/app/applications/datatarget/datatarget-tab/datatarget-tab.component.ts b/src/app/applications/datatarget/datatarget-tab/datatarget-tab.component.ts index f8b6b70a9..8ebaa872e 100644 --- a/src/app/applications/datatarget/datatarget-tab/datatarget-tab.component.ts +++ b/src/app/applications/datatarget/datatarget-tab/datatarget-tab.component.ts @@ -6,6 +6,7 @@ import { environment } from "@environments/environment"; selector: "app-datatarget-tab", templateUrl: "./datatarget-tab.component.html", styleUrls: ["./datatarget-tab.component.scss"], + standalone: false, }) export class DatatargetTabComponent implements OnInit { public pageLimit = environment.tablePageSize; diff --git a/src/app/applications/datatarget/datatarget-table/datatarget-table.component.html b/src/app/applications/datatarget/datatarget-table/datatarget-table.component.html index 0cb3f914f..696fc55d1 100644 --- a/src/app/applications/datatarget/datatarget-table/datatarget-table.component.html +++ b/src/app/applications/datatarget/datatarget-table/datatarget-table.component.html @@ -1,67 +1,78 @@
-
- -
- + @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ } +
- - - - - - - - + - - + +
+ {{ "DATATARGET-TABLE.NAME" | translate }} - {{ - element.name + + {{ + element.name }} + {{ "DATATARGET-TABLE.TYPE" | translate }} + {{ "DATATARGET." + element.type + ".TYPE" | translate }} + {{ "DATATARGET.24H_STATUS" | translate }} - - + + @if (!element.hasRecentErrors) { + + } @if (element.hasRecentErrors) { + + } - + + @if (canEdit) { + + }
- + -
\ No newline at end of file +
diff --git a/src/app/applications/datatarget/datatarget-table/datatarget-table.component.scss b/src/app/applications/datatarget/datatarget-table/datatarget-table.component.scss index ac2b9f2ee..e12ed2b89 100644 --- a/src/app/applications/datatarget/datatarget-table/datatarget-table.component.scss +++ b/src/app/applications/datatarget/datatarget-table/datatarget-table.component.scss @@ -2,6 +2,7 @@ .fa-ok { color: green !important; } + .fa-error { color: red !important; } diff --git a/src/app/applications/datatarget/datatarget-table/datatarget-table.component.ts b/src/app/applications/datatarget/datatarget-table/datatarget-table.component.ts index 2026942fa..05e2e26b7 100644 --- a/src/app/applications/datatarget/datatarget-table/datatarget-table.component.ts +++ b/src/app/applications/datatarget/datatarget-table/datatarget-table.component.ts @@ -19,6 +19,7 @@ import { DatatargetService } from "../datatarget.service"; selector: "app-datatarget-table", templateUrl: "./datatarget-table.component.html", styleUrls: ["./datatarget-table.component.scss"], + standalone: false, }) export class DatatargetTableComponent implements OnInit, AfterViewInit, OnDestroy { @ViewChild(MatPaginator) paginator: MatPaginator; diff --git a/src/app/applications/datatarget/datatarget-test-connection/datatarget-test-connection.component.html b/src/app/applications/datatarget/datatarget-test-connection/datatarget-test-connection.component.html index dfe7262f3..b8e08d54d 100644 --- a/src/app/applications/datatarget/datatarget-test-connection/datatarget-test-connection.component.html +++ b/src/app/applications/datatarget/datatarget-test-connection/datatarget-test-connection.component.html @@ -5,27 +5,33 @@

{{ "DATATARGET.TEST_CONNECTION.TEST-CONNECTION" | translate }}

-
- -
+ @if (loading) { +
+ +
+ }
-
- -

{{ "DATATARGET.TEST_CONNECTION.SEND-PING-TO-DATATARGET" | translate }}

- -
+ @if (dataTarget.type === DataTargetType.MQTT) { +
+ +

{{ "DATATARGET.TEST_CONNECTION.SEND-PING-TO-DATATARGET" | translate }}

+ +
+ }

{{ "DATATARGET.TEST_CONNECTION.SEND-LATEST-PACKAGE" | translate }}

- - {{ iotDevice.name }} - + @for (iotDevice of iotDevices; track iotDevice) { + + {{ iotDevice.name }} + + } {{ "DATATARGET.TEST_CONNECTION.TEST-CONNECTION" | translate }} {{ "QUESTION.DATATARGET.NO-PAYLOAD-DECODER-SELECTED" | translate }} - - {{ payloadDecoder.name }} - + @for (payloadDecoder of payloadDecoders; track payloadDecoder) { + + {{ payloadDecoder.name }} + + } -
diff --git a/src/app/applications/datatarget/fiware/fiware-edit/fiware-edit.component.spec.ts b/src/app/applications/datatarget/fiware/fiware-edit/fiware-edit.component.spec.ts index eb4faa06c..6848d294d 100644 --- a/src/app/applications/datatarget/fiware/fiware-edit/fiware-edit.component.spec.ts +++ b/src/app/applications/datatarget/fiware/fiware-edit/fiware-edit.component.spec.ts @@ -1,7 +1,5 @@ /* tslint:disable:no-unused-variable */ import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; -import { By } from "@angular/platform-browser"; -import { DebugElement } from "@angular/core"; import { FiwareEditComponent } from "./fiware-edit.component"; diff --git a/src/app/applications/datatarget/fiware/fiware-edit/fiware-edit.component.ts b/src/app/applications/datatarget/fiware/fiware-edit/fiware-edit.component.ts index f7b54bd12..8e6cf4b9a 100644 --- a/src/app/applications/datatarget/fiware/fiware-edit/fiware-edit.component.ts +++ b/src/app/applications/datatarget/fiware/fiware-edit/fiware-edit.component.ts @@ -30,6 +30,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-fiware-edit", templateUrl: "./fiware-edit.component.html", styleUrls: ["./fiware-edit.component.scss"], + standalone: false, }) export class FiwareEditComponent implements DatatargetEdit, OnInit, OnDestroy { public multiPage = false; @@ -149,16 +150,16 @@ export class FiwareEditComponent implements DatatargetEdit, OnInit, OnDestroy { updateDatatarget() { this.resetErrors(); this.counter = 1 + (this.payloadDeviceDatatarget?.length ? this.payloadDeviceDatatarget?.length : 0); - this.datatargetService.update(this.datatarget).subscribe( - (response: Datatarget) => { + this.datatargetService.update(this.datatarget).subscribe({ + next: (response: Datatarget) => { this.datatarget = response; this.countToRedirect(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.handleError(error); this.formFailedSubmit = true; - } - ); + }, + }); } addPayloadDeviceDatatarget() { @@ -169,23 +170,23 @@ export class FiwareEditComponent implements DatatargetEdit, OnInit, OnDestroy { }); this.payloadDeviceDatatarget.forEach(relation => { if (relation.id) { - this.payloadDeviceDataTargetService.put(relation).subscribe( - response => { + this.payloadDeviceDataTargetService.put(relation).subscribe({ + next: () => { this.countToRedirect(); }, - error => { + error: error => { this.handleError(error); - } - ); + }, + }); } else { - this.payloadDeviceDataTargetService.post(relation).subscribe( - (res: any) => { + this.payloadDeviceDataTargetService.post(relation).subscribe({ + next: () => { this.countToRedirect(); }, - error => { + error: error => { this.handleError(error); - } - ); + }, + }); } }); } @@ -209,18 +210,18 @@ export class FiwareEditComponent implements DatatargetEdit, OnInit, OnDestroy { createDatatarget() { this.resetErrors(); this.datatarget.applicationId = this.applicationId; - this.datatargetService.create(this.datatarget).subscribe( - (response: Datatarget) => { + this.datatargetService.create(this.datatarget).subscribe({ + next: (response: Datatarget) => { this.datatargetid = response.id; this.datatarget = response; this.showSavedSnack(); this.routeToCreatedDatatarget(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.handleError(error); this.formFailedSubmit = true; - } - ); + }, + }); } getDevices(): void { diff --git a/src/app/applications/datatarget/httppush/httppush-detail-tabs/httppush-detail-tabs.component.html b/src/app/applications/datatarget/httppush/httppush-detail-tabs/httppush-detail-tabs.component.html index 792d6d69a..0a06b8012 100644 --- a/src/app/applications/datatarget/httppush/httppush-detail-tabs/httppush-detail-tabs.component.html +++ b/src/app/applications/datatarget/httppush/httppush-detail-tabs/httppush-detail-tabs.component.html @@ -1,21 +1,27 @@ - - +@if (datatarget) { + + +} @if (datatarget?.type === dataTargetType.HTTPPUSH) { + +} - - - \ No newline at end of file + diff --git a/src/app/applications/datatarget/httppush/httppush-detail-tabs/httppush-detail-tabs.component.spec.ts b/src/app/applications/datatarget/httppush/httppush-detail-tabs/httppush-detail-tabs.component.spec.ts index ced4a7a5d..3deaaea10 100644 --- a/src/app/applications/datatarget/httppush/httppush-detail-tabs/httppush-detail-tabs.component.spec.ts +++ b/src/app/applications/datatarget/httppush/httppush-detail-tabs/httppush-detail-tabs.component.spec.ts @@ -1,23 +1,22 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ComponentFixture, TestBed } from "@angular/core/testing"; -import { HttppushDetailTabsComponent } from './httppush-detail-tabs.component'; +import { HttppushDetailTabsComponent } from "./httppush-detail-tabs.component"; -describe('HttppushDetailTabsComponent', () => { +describe("HttppushDetailTabsComponent", () => { let component: HttppushDetailTabsComponent; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [HttppushDetailTabsComponent] - }) - .compileComponents(); - + imports: [HttppushDetailTabsComponent], + }).compileComponents(); + fixture = TestBed.createComponent(HttppushDetailTabsComponent); component = fixture.componentInstance; fixture.detectChanges(); }); - it('should create', () => { + it("should create", () => { expect(component).toBeTruthy(); }); }); diff --git a/src/app/applications/datatarget/httppush/httppush-detail-tabs/httppush-detail-tabs.component.ts b/src/app/applications/datatarget/httppush/httppush-detail-tabs/httppush-detail-tabs.component.ts index c82f7efd0..072cdff8a 100644 --- a/src/app/applications/datatarget/httppush/httppush-detail-tabs/httppush-detail-tabs.component.ts +++ b/src/app/applications/datatarget/httppush/httppush-detail-tabs/httppush-detail-tabs.component.ts @@ -12,14 +12,11 @@ import { MeService } from "@shared/services/me.service"; selector: "app-httppush-detail-tabs", templateUrl: "./httppush-detail-tabs.component.html", styleUrl: "./httppush-detail-tabs.component.scss", + standalone: false, }) export class HttppushDetailTabsComponent extends DatatargetDetailTabsCommon implements OnDestroy { dataTargetType = DataTargetType; - protected override getDetailsLink() { - return "httppush-detail"; - } - constructor( route: ActivatedRoute, router: Router, @@ -35,4 +32,8 @@ export class HttppushDetailTabsComponent extends DatatargetDetailTabsCommon impl ngOnDestroy(): void { super.onDestroy(); } + + protected override getDetailsLink() { + return "httppush-detail"; + } } diff --git a/src/app/applications/datatarget/httppush/httppush-detail/httppush-detail.component.html b/src/app/applications/datatarget/httppush/httppush-detail/httppush-detail.component.html index ad83b7b28..75ddc84c9 100644 --- a/src/app/applications/datatarget/httppush/httppush-detail/httppush-detail.component.html +++ b/src/app/applications/datatarget/httppush/httppush-detail/httppush-detail.component.html @@ -1,96 +1,120 @@ -
-
-
-
-

{{ "DATATARGET.DETAILS" | translate }}

- -

- {{ "DATATARGET.LATEST_MESSAGE" | translate }}{{ datatarget.lastMessageDate | dkTime }} -

- - -

- {{ "DATATARGET.URL" | translate }}{{ datatarget.url }} -

-

- {{ "DATATARGET.TIMEOUT" | translate }}{{ datatarget.timeout }} -

-
-

- {{ "DATATARGET.TYPE" | translate }}{{ "DATATARGET." + datatarget.type + ".TYPE" | translate - }} -

- +@if (datatarget) { +
+
+
+
+

{{ "DATATARGET.DETAILS" | translate }}

+ + @if (datatarget.type !== dataTargetType.OPENDATADK) { +

+ {{ "DATATARGET.LATEST_MESSAGE" | translate }}{{ datatarget.lastMessageDate | dkTime }} +

+ } + @if (datatarget.type !== dataTargetType.OPENDATADK) { + +

+ {{ "DATATARGET.URL" | translate }}{{ datatarget.url }} +

+

+ {{ "DATATARGET.TIMEOUT" | translate }}{{ datatarget.timeout }} +

+
+ }

- {{ "DATATARGET.AUTHORIZATIONHEADER" | translate }} + {{ "DATATARGET.TYPE" | translate }}{{ + "DATATARGET." + datatarget.type + ".TYPE" | translate + }}

- -
{{
-                datatarget.authorizationHeader
-              }}
-
- -

{{ "DATATARGET.NO-AUTHORIZATIONHEADER" | translate }}

-
- -
-
-
-
-

{{ "DATATARGET.OPENDATA-DK.TYPE" | translate }}

-
- + @if (datatarget.type !== dataTargetType.OPENDATADK) { + + +

+ {{ "DATATARGET.AUTHORIZATIONHEADER" | translate }} +

+ + @if (datatarget.authorizationHeader) { +
{{
+                      datatarget.authorizationHeader
+                    }}
+ } @else { +

{{ "DATATARGET.NO-AUTHORIZATIONHEADER" | translate }}

+ } +
+
+ }
- -

{{ "DATATARGET.NO-OPENDATA-DK" | translate }}

-
-
-
- -
-
-
-
-

{{ "DATATARGET.RELATIONS" | translate }}

-
-

{{ "DATATARGET.NO-RELATIONS" | translate }}

+ @if (datatarget.type === dataTargetType.OPENDATADK) { +
+
+

{{ "DATATARGET.OPENDATA-DK.TYPE" | translate }}

+ @if (datatarget.setToOpendataDk) { +
+ +
+ } @else { +

{{ "DATATARGET.NO-OPENDATA-DK" | translate }}

+ }
-
-
-
-
-

- {{ "DATATARGET.PAYLOADEDECODER" | translate }} - {{ - relation.payloadDecoder.name - }} - - {{ "DATATARGET.NO-PAYLOADDECODER" | translate }} -

-
-
- -
-
-

- {{ "DATATARGET.IOTDEVICE" | translate }} - - , - {{ - device.name - }} - -

-
- +
+ } +
+
+
+
+
+

{{ "DATATARGET.RELATIONS" | translate }}

+ @if (dataTargetRelations?.length === 0) { +
+

{{ "DATATARGET.NO-RELATIONS" | translate }}

+ } @if (dataTargetRelations) { +
+ @for (relation of dataTargetRelations; track relation) { +
+
+
+

+ {{ "DATATARGET.PAYLOADEDECODER" | translate }}@if (relation.payloadDecoder) { + + {{ + relation.payloadDecoder.name + }} + + } @else { + {{ "DATATARGET.NO-PAYLOADDECODER" | translate }} + } +

+
+
+ +
+
+

+ {{ "DATATARGET.IOTDEVICE" | translate }} + @for (device of relation.iotDevices; track device; let first = $first) { + + @if (!first) { + , + } + {{ + device.name + }} + + } +

+
+ +
+
+ }
+ }
-
\ No newline at end of file +} diff --git a/src/app/applications/datatarget/httppush/httppush-detail/httppush-detail.component.spec.ts b/src/app/applications/datatarget/httppush/httppush-detail/httppush-detail.component.spec.ts index 0b1e7b922..4538af4bc 100644 --- a/src/app/applications/datatarget/httppush/httppush-detail/httppush-detail.component.spec.ts +++ b/src/app/applications/datatarget/httppush/httppush-detail/httppush-detail.component.spec.ts @@ -1,7 +1,5 @@ /* tslint:disable:no-unused-variable */ import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; -import { By } from "@angular/platform-browser"; -import { DebugElement } from "@angular/core"; import { HttppushDetailComponent } from "./httppush-detail.component"; diff --git a/src/app/applications/datatarget/httppush/httppush-detail/httppush-detail.component.ts b/src/app/applications/datatarget/httppush/httppush-detail/httppush-detail.component.ts index 54d30d324..d32bd13cc 100644 --- a/src/app/applications/datatarget/httppush/httppush-detail/httppush-detail.component.ts +++ b/src/app/applications/datatarget/httppush/httppush-detail/httppush-detail.component.ts @@ -13,6 +13,7 @@ import { DatatargetService } from "../../datatarget.service"; selector: "app-httppush-detail", templateUrl: "./httppush-detail.component.html", styleUrls: ["./httppush-detail.component.scss"], + standalone: false, }) export class HttppushDetailComponent implements DatatargetDetail, OnDestroy { dataTargetType = DataTargetType; diff --git a/src/app/applications/datatarget/httppush/httppush-edit/httppush-edit.component.html b/src/app/applications/datatarget/httppush/httppush-edit/httppush-edit.component.html index 40dc6ef3d..66f02bc5d 100644 --- a/src/app/applications/datatarget/httppush/httppush-edit/httppush-edit.component.html +++ b/src/app/applications/datatarget/httppush/httppush-edit/httppush-edit.component.html @@ -1,30 +1,34 @@ - + - -
-
    -
  • - {{ error | translate }} -
  • -
-
+ + @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ }
*
@@ -34,17 +38,17 @@ *
@@ -53,64 +57,69 @@ *
+ "QUESTION.GIVE-DATATARGET-AUTHORIZATIONHEADER" | translate + }}
-
-
{{ "QUESTION.DATATARGET.RELATIONS" | translate }}
-
-
+ @if (datatargetid === 0) { +
+
{{ "QUESTION.DATATARGET.RELATIONS" | translate }}
+
+ } @if (datatargetid > 0) { +
{{ "QUESTION.ADD-RELATIONS" | translate }} - + @if (devices && payloadDecoders && payloadDeviceDatatarget?.length > 0) { - + @for (element of payloadDeviceDatatarget; track element; let i = $index) { + + }
{{ "QUESTION.DATATARGET.SELECT-DEVICES" | translate }} - - - - {{ device.name }} + + + + @for (device of devices; track device) { + {{ device.name }} + }
@@ -119,13 +128,15 @@
{{ "QUESTION.DATATARGET.RELATIONS" | translate }}
{{ "QUESTION.DATATARGET.SELECT-PAYLOADDECODER" | translate }} - + {{ "QUESTION.DATATARGET.NO-PAYLOAD-DECODER-SELECTED" | translate }} - - {{ payloadDecoder.name }} - + @for (payloadDecoder of payloadDecoders; track payloadDecoder) { + + {{ payloadDecoder.name }} + + }
@@ -139,12 +150,14 @@
{{ "QUESTION.DATATARGET.RELATIONS" | translate }}
-
+ }
+}
- +
diff --git a/src/app/applications/datatarget/httppush/httppush-edit/httppush-edit.component.spec.ts b/src/app/applications/datatarget/httppush/httppush-edit/httppush-edit.component.spec.ts index e2d0a0205..5ebde1d52 100644 --- a/src/app/applications/datatarget/httppush/httppush-edit/httppush-edit.component.spec.ts +++ b/src/app/applications/datatarget/httppush/httppush-edit/httppush-edit.component.spec.ts @@ -1,7 +1,5 @@ /* tslint:disable:no-unused-variable */ import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; -import { By } from "@angular/platform-browser"; -import { DebugElement } from "@angular/core"; import { HttppushEditComponent } from "./httppush-edit.component"; diff --git a/src/app/applications/datatarget/httppush/httppush-edit/httppush-edit.component.ts b/src/app/applications/datatarget/httppush/httppush-edit/httppush-edit.component.ts index 6bec04cb5..8b45700ca 100644 --- a/src/app/applications/datatarget/httppush/httppush-edit/httppush-edit.component.ts +++ b/src/app/applications/datatarget/httppush/httppush-edit/httppush-edit.component.ts @@ -29,6 +29,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-httppush-edit", templateUrl: "./httppush-edit.component.html", styleUrls: ["./httppush-edit.component.scss"], + standalone: false, }) export class HttppushEditComponent implements DatatargetEdit, OnInit, OnDestroy { public multiPage = false; @@ -149,16 +150,16 @@ export class HttppushEditComponent implements DatatargetEdit, OnInit, OnDestroy updateDatatarget() { this.resetErrors(); this.counter = 1 + (this.payloadDeviceDatatarget?.length ?? 0); - this.datatargetService.update(this.datatarget).subscribe( - (response: Datatarget) => { + this.datatargetService.update(this.datatarget).subscribe({ + next: (response: Datatarget) => { this.datatarget = response; this.countToRedirect(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.handleError(error); this.formFailedSubmit = true; - } - ); + }, + }); } addPayloadDeviceDatatarget() { @@ -169,23 +170,23 @@ export class HttppushEditComponent implements DatatargetEdit, OnInit, OnDestroy }); this.payloadDeviceDatatarget.forEach(relation => { if (relation.id) { - this.payloadDeviceDataTargetService.put(relation).subscribe( - response => { + this.payloadDeviceDataTargetService.put(relation).subscribe({ + next: () => { this.countToRedirect(); }, - error => { + error: error => { this.handleError(error); - } - ); + }, + }); } else { - this.payloadDeviceDataTargetService.post(relation).subscribe( - (res: any) => { + this.payloadDeviceDataTargetService.post(relation).subscribe({ + next: () => { this.countToRedirect(); }, - error => { + error: error => { this.handleError(error); - } - ); + }, + }); } }); } @@ -209,18 +210,18 @@ export class HttppushEditComponent implements DatatargetEdit, OnInit, OnDestroy createDatatarget() { this.resetErrors(); this.datatarget.applicationId = this.applicationId; - this.datatargetService.create(this.datatarget).subscribe( - (response: Datatarget) => { + this.datatargetService.create(this.datatarget).subscribe({ + next: (response: Datatarget) => { this.datatargetid = response.id; this.datatarget = response; this.showSavedSnack(); this.routeToCreatedDatatarget(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.handleError(error); this.formFailedSubmit = true; - } - ); + }, + }); } getDevices(): void { diff --git a/src/app/applications/datatarget/mqtt/mqtt-detail-tabs/mqtt-detail-tabs.component.html b/src/app/applications/datatarget/mqtt/mqtt-detail-tabs/mqtt-detail-tabs.component.html index 8339ff821..8710f049f 100644 --- a/src/app/applications/datatarget/mqtt/mqtt-detail-tabs/mqtt-detail-tabs.component.html +++ b/src/app/applications/datatarget/mqtt/mqtt-detail-tabs/mqtt-detail-tabs.component.html @@ -1,18 +1,25 @@ - - +@if (datatarget) { + + +} -
@@ -138,16 +142,16 @@ *
@@ -157,16 +161,16 @@ *
@@ -176,48 +180,52 @@ *
-
-
{{ "QUESTION.DATATARGET.RELATIONS" | translate }}
-
- -
+ @if (!datatargetId) { +
+
{{ "QUESTION.DATATARGET.RELATIONS" | translate }}
+
+ } @if (datatargetId) { +
{{ "QUESTION.ADD-RELATIONS" | translate }} - + @if (devices && payloadDecoders && payloadDeviceDatatarget?.length > 0) { - + @for (element of payloadDeviceDatatarget; track element; let i = $index) { + + }
{{ "QUESTION.DATATARGET.SELECT-DEVICES" | translate }} - - - - - {{ device.name }} + @for (device of devices; track device) { + {{ device.name }} + }
@@ -226,13 +234,15 @@
{{ "QUESTION.DATATARGET.RELATIONS" | translate }}
{{ "QUESTION.DATATARGET.SELECT-PAYLOADDECODER" | translate }} - + {{ "QUESTION.DATATARGET.NO-PAYLOAD-DECODER-SELECTED" | translate }} - - {{ payloadDecoder.name }} - + @for (payloadDecoder of payloadDecoders; track payloadDecoder) { + + {{ payloadDecoder.name }} + + }
@@ -246,13 +256,15 @@
{{ "QUESTION.DATATARGET.RELATIONS" | translate }}
-
+ }
+}
- +
diff --git a/src/app/applications/datatarget/mqtt/mqtt-edit/mqtt-edit.component.ts b/src/app/applications/datatarget/mqtt/mqtt-edit/mqtt-edit.component.ts index 0a12f9626..9bcc4746b 100644 --- a/src/app/applications/datatarget/mqtt/mqtt-edit/mqtt-edit.component.ts +++ b/src/app/applications/datatarget/mqtt/mqtt-edit/mqtt-edit.component.ts @@ -27,6 +27,7 @@ import { Subscription } from "rxjs"; selector: "app-mqtt-edit", templateUrl: "./mqtt-edit.component.html", styleUrls: ["./mqtt-edit.component.scss"], + standalone: false, }) // TODO: Most of the code is duplicated from other datatarget edit components. // Same applies to the html file. One solution is extending a base datatarget-edit component @@ -208,32 +209,32 @@ export class MqttEditComponent implements DatatargetEdit, OnInit, OnDestroy { private updateDatatarget(): void { this.activeApiCalls += 1; - this.datatargetService.update(this.datatarget).subscribe( - (response: Datatarget) => { + this.datatargetService.update(this.datatarget).subscribe({ + next: (response: Datatarget) => { this.datatarget = response; this.countToRedirect(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.handleError(error); this.formFailedSubmit = true; - } - ); + }, + }); } private createDatatarget(): void { this.datatarget.applicationId = this.applicationId; - this.datatargetService.create(this.datatarget).subscribe( - (response: Datatarget) => { + this.datatargetService.create(this.datatarget).subscribe({ + next: (response: Datatarget) => { this.datatargetId = response.id; this.datatarget = response; this.snackService.showSavedSnack(); this.routeToCreatedDatatarget(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.handleError(error); this.formFailedSubmit = true; - } - ); + }, + }); } private addPayloadDeviceDatatarget() { @@ -246,23 +247,23 @@ export class MqttEditComponent implements DatatargetEdit, OnInit, OnDestroy { this.activeApiCalls += 1; if (relation.id) { - this.payloadDeviceDatatargetService.put(relation).subscribe( - () => { + this.payloadDeviceDatatargetService.put(relation).subscribe({ + next: () => { this.countToRedirect(); }, - error => { + error: error => { this.handleError(error); - } - ); + }, + }); } else { - this.payloadDeviceDatatargetService.post(relation).subscribe( - () => { + this.payloadDeviceDatatargetService.post(relation).subscribe({ + next: () => { this.countToRedirect(); }, - error => { + error: error => { this.handleError(error); - } - ); + }, + }); } }); } diff --git a/src/app/applications/datatarget/opendatadk/opendatadk-detail/opendatadk-detail.component.ts b/src/app/applications/datatarget/opendatadk/opendatadk-detail/opendatadk-detail.component.ts index 6719912b9..9fc6bf790 100644 --- a/src/app/applications/datatarget/opendatadk/opendatadk-detail/opendatadk-detail.component.ts +++ b/src/app/applications/datatarget/opendatadk/opendatadk-detail/opendatadk-detail.component.ts @@ -5,6 +5,7 @@ import { OpenDataDkDataset } from "../opendatadk-dataset.model"; selector: "app-opendatadk-detail", templateUrl: "./opendatadk-detail.component.html", styleUrls: ["./opendatadk-detail.component.scss"], + standalone: false, }) export class OpendatadkDetailComponent implements OnInit { @Input() openDataDkDataset: OpenDataDkDataset; diff --git a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.html b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.html index d1f119d28..81203fad0 100644 --- a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.html +++ b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.html @@ -1,4 +1,4 @@ - + @@ -14,16 +14,16 @@

{{ "GUIDE" | translate }}

{{ "OPENDATADK.INTRO.GUIDE1" | translate }} -

+

{{ "OPENDATADK.INTRO.GUIDE2" | translate }} -

+

{{ "OPENDATADK.INTRO.GUIDE3" | translate }} -

+

{{ "OPENDATADK.INTRO.GUIDE4" | translate }} {{ - "OPENDATADK.INTRO.GUIDE5" | translate - }} -

+ "OPENDATADK.INTRO.GUIDE5" | translate + }} +

@@ -58,14 +58,18 @@

{{ "GUIDE" | translate }}

-
+

{{ (datatargetId ? "FORM.EDIT-DATATARGET" : "FORM.CREATE-NEW-DATATARGET") | translate }}

-
-
    -
  • {{ error | translate }}
  • -
-
+ @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • {{ error | translate }}
  • + } +
+
+ }
@@ -73,26 +77,26 @@

{{ (datatargetId ? "FORM.EDIT-DATATARGET" : "FORM.CREATE-NEW-DATATARGET") |

@@ -105,26 +109,26 @@

{{ (datatargetId ? "FORM.EDIT-DATATARGET" : "FORM.CREATE-NEW-DATATARGET") |

@@ -137,26 +141,26 @@

{{ (datatargetId ? "FORM.EDIT-DATATARGET" : "FORM.CREATE-NEW-DATATARGET") |

@@ -168,17 +172,17 @@

{{ (datatargetId ? "FORM.EDIT-DATATARGET" : "FORM.CREATE-NEW-DATATARGET") | {{ "OPENDATADK.QUESTION.GIVE-OPENDATADK-DESCRIPTION" | translate }}*

@@ -191,25 +195,25 @@

{{ (datatargetId ? "FORM.EDIT-DATATARGET" : "FORM.CREATE-NEW-DATATARGET") |

@@ -221,17 +225,17 @@

{{ (datatargetId ? "FORM.EDIT-DATATARGET" : "FORM.CREATE-NEW-DATATARGET") | {{ "OPENDATADK.QUESTION.GIVE-OPENDATADK-AUTHOR-EMAIL" | translate }}*

@@ -243,19 +247,21 @@

{{ (datatargetId ? "FORM.EDIT-DATATARGET" : "FORM.CREATE-NEW-DATATARGET") | {{ "OPENDATADK.QUESTION.GIVE-OPENDATADK-KEYWORDS" | translate }} - {{ kw }} + @for (kw of selectableKeyword; track kw) { + {{ kw }} + }

@@ -275,76 +281,86 @@

{{ (datatargetId ? "FORM.EDIT-DATATARGET" : "FORM.CREATE-NEW-DATATARGET") |

-
{{ "QUESTION.DATATARGET.RELATIONS" | translate }}
+ @if (datatargetId === 0) { +
{{ "QUESTION.DATATARGET.RELATIONS" | translate }}
+ } -
- - {{ "QUESTION.ADD-RELATIONS" | translate }} - - - - - - - - + + + + } + +
-
- - {{ "QUESTION.DATATARGET.SELECT-DEVICES" | translate }} - - - - - - {{ device.name }} - - -
-
-
- - {{ "QUESTION.DATATARGET.SELECT-PAYLOADDECODER" | translate }} - - - {{ "QUESTION.DATATARGET.NO-PAYLOAD-DECODER-SELECTED" | translate }} - - - {{ payloadDecoder.name }} - - - -
-
- -
- -

{{ "DATATARGET.DELETE" | translate }}

+ @if (datatargetId > 0) { +
+ + {{ "QUESTION.ADD-RELATIONS" | translate }} + + @if (devices && payloadDecoders && payloadDeviceDatatarget?.length > 0) { + + + @for (element of payloadDeviceDatatarget; track element; let i = $index) { + + - - -
+
+ + {{ "QUESTION.DATATARGET.SELECT-DEVICES" | translate }} + + + + + + @for (device of devices; track device) { + {{ device.name }} + } + +
- -
- -
+
+
+ + {{ "QUESTION.DATATARGET.SELECT-PAYLOADDECODER" | translate }} + + + {{ "QUESTION.DATATARGET.NO-PAYLOAD-DECODER-SELECTED" | translate }} + + @for (payloadDecoder of payloadDecoders; track payloadDecoder) { + + {{ payloadDecoder.name }} + + } + + +
+
+ +
+ +

{{ "DATATARGET.DELETE" | translate }}

+
+
+
+ } +
+ }
-
diff --git a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.scss b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.scss index ee6841cec..5c9c151a1 100644 --- a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.scss +++ b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.scss @@ -8,14 +8,18 @@ width: fit-content; padding-right: 12px; } + .form-info-icon { margin-left: 5px; cursor: pointer; } + mat-expansion-panel { box-shadow: none !important; + ol { padding-left: 20px; + li { font-family: $font-name, system; display: list-item; diff --git a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.ts b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.ts index bbd0ebb10..abd3f5d97 100644 --- a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.ts +++ b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.ts @@ -34,6 +34,7 @@ import { OpenDataDkWarningDialogComponent } from "./opendatadk-warning-dialog/op selector: "app-opendatadk-edit", templateUrl: "./opendatadk-edit.component.html", styleUrls: ["./opendatadk-edit.component.scss"], + standalone: false, }) export class OpendatadkEditComponent implements DatatargetEdit, OnDestroy { faQuestionCircle = faQuestionCircle; @@ -204,20 +205,20 @@ export class OpendatadkEditComponent implements DatatargetEdit, OnDestroy { private updateDatatarget() { this.subscriptions.push( - this.datatargetService.update(this.datatarget).subscribe( - (response: Datatarget) => { + this.datatargetService.update(this.datatarget).subscribe({ + next: (response: Datatarget) => { this.datatarget = response; if (this.datatarget.openDataDkDataset != null) { this.datatarget.openDataDkDataset.acceptTerms = true; } this.countToRedirect(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.checkDataTargetModelOpendatadkdatasaet(); this.handleError(error); this.formFailedSubmit = true; - } - ) + }, + }) ); } @@ -228,17 +229,17 @@ export class OpendatadkEditComponent implements DatatargetEdit, OnDestroy { } if (relation.id) { this.subscriptions.push( - this.payloadDeviceDataTargetService.put(relation).subscribe( - () => this.countToRedirect(), - error => this.handleError(error) - ) + this.payloadDeviceDataTargetService.put(relation).subscribe({ + next: () => this.countToRedirect(), + error: error => this.handleError(error), + }) ); } else { this.subscriptions.push( - this.payloadDeviceDataTargetService.post(relation).subscribe( - () => this.countToRedirect(), - error => this.handleError(error) - ) + this.payloadDeviceDataTargetService.post(relation).subscribe({ + next: () => this.countToRedirect(), + error: error => this.handleError(error), + }) ); } }); @@ -258,8 +259,8 @@ export class OpendatadkEditComponent implements DatatargetEdit, OnDestroy { this.pendingRequestsCounter = 0; this.datatarget.applicationId = this.applicationId; this.subscriptions.push( - this.datatargetService.create(this.datatarget).subscribe( - (response: Datatarget) => { + this.datatargetService.create(this.datatarget).subscribe({ + next: (response: Datatarget) => { this.datatargetId = response.id; this.datatarget = response; if (this.datatarget.openDataDkDataset != null) { @@ -268,12 +269,12 @@ export class OpendatadkEditComponent implements DatatargetEdit, OnDestroy { this.saveSnackService.showSavedSnack(); this.showMailOrRedirect(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.checkDataTargetModelOpendatadkdatasaet(); this.handleError(error); this.formFailedSubmit = true; - } - ) + }, + }) ); } diff --git a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-mail-dialog/opendatadk-mail-dialog.html b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-mail-dialog/opendatadk-mail-dialog.html index 0a7c10e21..ff5bcaeb0 100644 --- a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-mail-dialog/opendatadk-mail-dialog.html +++ b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-mail-dialog/opendatadk-mail-dialog.html @@ -1,43 +1,45 @@ -

{{'OPENDATADK.MAIL.DIALOG_TITLE' | translate}}

+

{{ 'OPENDATADK.MAIL.DIALOG_TITLE' | translate }}

- {{'OPENDATADK.MAIL.DIALOG_TEXT1' | translate}} {{selectedOrganizationName ?? - ('OPENDATADK.MAIL.SELECTED_ORG_FALLBACK' | translate)}}{{'OPENDATADK.MAIL.DIALOG_TEXT2' | translate}} -

+ {{ 'OPENDATADK.MAIL.DIALOG_TEXT1' | translate }} {{ + selectedOrganizationName ?? + ('OPENDATADK.MAIL.SELECTED_ORG_FALLBACK' | translate) + }}{{ 'OPENDATADK.MAIL.DIALOG_TEXT2' | translate }} +

- +
-
- - +
diff --git a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-mail-dialog/opendatadk-mail-dialog.ts b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-mail-dialog/opendatadk-mail-dialog.ts index 72f3b2df9..780151372 100644 --- a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-mail-dialog/opendatadk-mail-dialog.ts +++ b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-mail-dialog/opendatadk-mail-dialog.ts @@ -7,6 +7,7 @@ import { SharedVariableService } from "@shared/shared-variable/shared-variable.s selector: "app-opendatadk-mail-dialog", templateUrl: "./opendatadk-mail-dialog.html", styleUrls: ["./opendatadk-mail-dialog.scss"], + standalone: false, }) export class OpenDataDkMailDialogComponent { sendAttempted: boolean = false; diff --git a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-warning-dialog/opendatadk-warning-dialog.html b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-warning-dialog/opendatadk-warning-dialog.html index aa627aa7c..15e050c25 100644 --- a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-warning-dialog/opendatadk-warning-dialog.html +++ b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-warning-dialog/opendatadk-warning-dialog.html @@ -1,17 +1,17 @@ -

{{'OPENDATADK.MAIL.WARNING' | translate}}

+

{{ 'OPENDATADK.MAIL.WARNING' | translate }}

- {{'OPENDATADK.MAIL.WARNING-TEXT' | translate}} -
+ {{ 'OPENDATADK.MAIL.WARNING-TEXT' | translate }} +

- {{ 'OPENDATADK.MAIL.NEVER-AGAIN' | translate }} + {{ 'OPENDATADK.MAIL.NEVER-AGAIN' | translate }}
-
- - +
+ +
diff --git a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-warning-dialog/opendatadk-warning-dialog.ts b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-warning-dialog/opendatadk-warning-dialog.ts index dba7e3a0f..7bfc612ef 100644 --- a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-warning-dialog/opendatadk-warning-dialog.ts +++ b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-warning-dialog/opendatadk-warning-dialog.ts @@ -5,6 +5,7 @@ import { MatDialogRef } from "@angular/material/dialog"; selector: "app-opendatadk-warning-dialog", templateUrl: "./opendatadk-warning-dialog.html", styleUrls: ["./opendatadk-warning-dialog.scss"], + standalone: false, }) export class OpenDataDkWarningDialogComponent { neverAgain: boolean = false; diff --git a/src/app/applications/iot-devices/iot-device-change-application-dialog/iot-device-change-application-dialog.component.html b/src/app/applications/iot-devices/iot-device-change-application-dialog/iot-device-change-application-dialog.component.html index 07edced87..08adcd4f5 100644 --- a/src/app/applications/iot-devices/iot-device-change-application-dialog/iot-device-change-application-dialog.component.html +++ b/src/app/applications/iot-devices/iot-device-change-application-dialog/iot-device-change-application-dialog.component.html @@ -12,9 +12,11 @@

{{ "IOTDEVICE.CHANGE-APPLICATION.TITLE" | translate }}

id="organizationSelect" panelClass="overflow-x-hidden" > - - {{ organization.name }} - + @for (organization of organizations | async; track organization) { + + {{ organization.name }} + + }
@@ -54,60 +60,65 @@

{{ "IOTDEVICE.CHANGE-APPLICATION.TITLE" | translate }}

{{ "IOTDEVICE.CHANGE-APPLICATION.CHOOSE-DATA-TARGET" | translate }} - + @if (payloadDecoders && iotDeviceUpdate.dataTargetToPayloadDecoderIds?.length > 0) { - - - - + + - + + + + }
-
- - {{ "IOTDEVICE.CHANGE-APPLICATION.ADD-DATA-TARGET" | translate }} - - {{ - dataTarget.name - }} - - - -
-
-
- - {{ "QUESTION.DATATARGET.SELECT-PAYLOADDECODER" | translate }} - - - {{ "QUESTION.DATATARGET.NO-PAYLOAD-DECODER-SELECTED" | translate }} - - - {{ payloadDecoder.name }} - - - -
-
- -
- -

{{ "DATATARGET.DELETE" | translate }}

+ @for (element of iotDeviceUpdate.dataTargetToPayloadDecoderIds; track element; let i = $index) { +
+
+ + {{ "IOTDEVICE.CHANGE-APPLICATION.ADD-DATA-TARGET" | translate }} + + @for (dataTarget of dataTargets; track dataTarget) { + {{ + dataTarget.name + }} + + } + + +
+
+
+ + {{ "QUESTION.DATATARGET.SELECT-PAYLOADDECODER" | translate }} + + + {{ "QUESTION.DATATARGET.NO-PAYLOAD-DECODER-SELECTED" | translate }} + + @for (payloadDecoder of payloadDecoders; track payloadDecoder) { + + {{ payloadDecoder.name }} + + } + +
- -
+ +
+ +

{{ "DATATARGET.DELETE" | translate }}

+
+
+
-
+ }
-
diff --git a/src/app/applications/iot-devices/iot-device-change-application-dialog/iot-device-change-application-dialog.component.ts b/src/app/applications/iot-devices/iot-device-change-application-dialog/iot-device-change-application-dialog.component.ts index bc69ff06f..b15b8668e 100644 --- a/src/app/applications/iot-devices/iot-device-change-application-dialog/iot-device-change-application-dialog.component.ts +++ b/src/app/applications/iot-devices/iot-device-change-application-dialog/iot-device-change-application-dialog.component.ts @@ -23,6 +23,7 @@ import { faTimesCircle } from "@fortawesome/free-solid-svg-icons"; selector: "app-iot-device-change-application-dialog", templateUrl: "./iot-device-change-application-dialog.component.html", styleUrls: ["./iot-device-change-application-dialog.component.scss"], + standalone: false, }) export class IoTDeviceChangeApplicationDialogComponent implements OnInit, OnDestroy { public iotDevice: IotDevice; diff --git a/src/app/applications/iot-devices/iot-device-copy/iot-device-copy.component.ts b/src/app/applications/iot-devices/iot-device-copy/iot-device-copy.component.ts index 5ef9b1bc8..211b54f96 100644 --- a/src/app/applications/iot-devices/iot-device-copy/iot-device-copy.component.ts +++ b/src/app/applications/iot-devices/iot-device-copy/iot-device-copy.component.ts @@ -4,6 +4,7 @@ import { Component, OnInit } from "@angular/core"; selector: "app-iot-device-copy", templateUrl: "./iot-device-copy.component.html", styleUrls: ["./iot-device-copy.component.scss"], + standalone: false, }) export class IotDeviceCopyComponent implements OnInit { constructor() {} diff --git a/src/app/applications/iot-devices/iot-device-detail/data-package/data-package.component.html b/src/app/applications/iot-devices/iot-device-detail/data-package/data-package.component.html index 54dd6a8f3..879fbae60 100644 --- a/src/app/applications/iot-devices/iot-device-detail/data-package/data-package.component.html +++ b/src/app/applications/iot-devices/iot-device-detail/data-package/data-package.component.html @@ -1,21 +1,21 @@ - - - -

- {{ "IOTDEVICE.LATEST-DATAPACKAGE" | translate }} - - {{ latestReceivedMessage.sentTime | tableDateWithSecondsPipe }} -

-
-
- - -
{{ latestReceivedMessage.rawData | json }}
-
-
-
- +@if (latestReceivedMessage) { + + + +

+ {{ "IOTDEVICE.LATEST-DATAPACKAGE" | translate }} + {{ latestReceivedMessage.sentTime | tableDateWithSecondsPipe }} +

+
+
+ @if (latestReceivedMessage.rawData) { + +
{{ latestReceivedMessage.rawData | json }}
+
+ } +
+} @else {

{{ "IOTDEVICE.NO-DATAPACKAGE" | translate }}

-
+} diff --git a/src/app/applications/iot-devices/iot-device-detail/data-package/data-package.component.scss b/src/app/applications/iot-devices/iot-device-detail/data-package/data-package.component.scss index 40cbb9c4a..516f599a5 100644 --- a/src/app/applications/iot-devices/iot-device-detail/data-package/data-package.component.scss +++ b/src/app/applications/iot-devices/iot-device-detail/data-package/data-package.component.scss @@ -1,3 +1,3 @@ -mat-expansion-panel{ +mat-expansion-panel { box-shadow: none !important; } diff --git a/src/app/applications/iot-devices/iot-device-detail/data-package/data-package.component.ts b/src/app/applications/iot-devices/iot-device-detail/data-package/data-package.component.ts index e6210273f..3f0470478 100644 --- a/src/app/applications/iot-devices/iot-device-detail/data-package/data-package.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/data-package/data-package.component.ts @@ -5,6 +5,7 @@ import { LatestReceivedMessage } from "@applications/iot-devices/latestReceivedM selector: "app-data-package", templateUrl: "./data-package.component.html", styleUrls: ["./data-package.component.scss"], + standalone: false, }) export class DataPackageComponent implements OnInit { @Input() latestReceivedMessage: LatestReceivedMessage; diff --git a/src/app/applications/iot-devices/iot-device-detail/data-packages-timestamp/data-packages-timestamp.component.html b/src/app/applications/iot-devices/iot-device-detail/data-packages-timestamp/data-packages-timestamp.component.html index 4f76b6357..af04db987 100644 --- a/src/app/applications/iot-devices/iot-device-detail/data-packages-timestamp/data-packages-timestamp.component.html +++ b/src/app/applications/iot-devices/iot-device-detail/data-packages-timestamp/data-packages-timestamp.component.html @@ -8,14 +8,18 @@
-

- {{ i + 1 }} -

+ @for (metadata of sortedMetadata; track metadata; let i = $index) { +

+ {{ i + 1 }} +

+ }
-

- {{ metadata.sentTime | tableDateWithSecondsPipe }} -

+ @for (metadata of sortedMetadata; track metadata; let i = $index) { +

+ {{ metadata.sentTime | tableDateWithSecondsPipe }} +

+ }
diff --git a/src/app/applications/iot-devices/iot-device-detail/data-packages-timestamp/data-packages-timestamp.component.ts b/src/app/applications/iot-devices/iot-device-detail/data-packages-timestamp/data-packages-timestamp.component.ts index 653c9a784..39860cd71 100644 --- a/src/app/applications/iot-devices/iot-device-detail/data-packages-timestamp/data-packages-timestamp.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/data-packages-timestamp/data-packages-timestamp.component.ts @@ -6,6 +6,7 @@ import { ReceivedMessageMetadata } from "@shared/models/received-message-metadat selector: "app-data-packages-timestamp", templateUrl: "./data-packages-timestamp.component.html", styleUrls: ["./data-packages-timestamp.component.scss"], + standalone: false, }) export class DataPackagesTimestampComponent implements OnInit, OnChanges { @Input() receivedMessagesMetadata: ReceivedMessageMetadata[] = []; diff --git a/src/app/applications/iot-devices/iot-device-detail/device-model/device-model.component.html b/src/app/applications/iot-devices/iot-device-detail/device-model/device-model.component.html index 5d72120ac..81be1c713 100644 --- a/src/app/applications/iot-devices/iot-device-detail/device-model/device-model.component.html +++ b/src/app/applications/iot-devices/iot-device-detail/device-model/device-model.component.html @@ -1,12 +1,12 @@

{{ "IOTDEVICE.DEVICEMODEL" | translate }}

- - - +@if (deviceModel) { + + +} @else {

{{ "IOTDEVICE.DEVICEMODEL-ERROR" | translate }}

-
+} diff --git a/src/app/applications/iot-devices/iot-device-detail/device-model/device-model.component.ts b/src/app/applications/iot-devices/iot-device-detail/device-model/device-model.component.ts index 3d18017a0..312aa6808 100644 --- a/src/app/applications/iot-devices/iot-device-detail/device-model/device-model.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/device-model/device-model.component.ts @@ -6,6 +6,7 @@ import { IotDevice } from "@applications/iot-devices/iot-device.model"; selector: "app-device-model", templateUrl: "./device-model.component.html", styleUrls: ["./device-model.component.scss"], + standalone: false, }) export class DeviceModelComponent implements OnInit, OnChanges { @Input() device: IotDevice; diff --git a/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-dialog/downlink-dialog.component.html b/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-dialog/downlink-dialog.component.html index 26bc6e396..358d6a323 100644 --- a/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-dialog/downlink-dialog.component.html +++ b/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-dialog/downlink-dialog.component.html @@ -3,10 +3,10 @@

{{ "IOTDEVICE.DOWNLINK.FLUSH-QUEUE" | translate }}

{{ "IOTDEVICE.DOWNLINK.DIALOG-MESSAGE" | translate }}
- -
diff --git a/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-dialog/downlink-dialog.component.scss b/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-dialog/downlink-dialog.component.scss index 3a030c3f1..1a18cab19 100644 --- a/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-dialog/downlink-dialog.component.scss +++ b/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-dialog/downlink-dialog.component.scss @@ -1,13 +1,16 @@ .mat-mdc-dialog-title { padding-left: 20px; } + .mat-mdc-dialog-content { padding-left: 20px !important; } + .mat-mdc-dialog-actions { padding-left: 20px !important; gap: 8px; } + .mat-mdc-button { margin-left: 0px !important; } diff --git a/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-dialog/downlink-dialog.component.ts b/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-dialog/downlink-dialog.component.ts index a8684b1d3..84f072696 100644 --- a/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-dialog/downlink-dialog.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-dialog/downlink-dialog.component.ts @@ -7,6 +7,7 @@ import { DownlinkComponent } from "../downlinks/downlink.component"; selector: "app-downlink-dialog", templateUrl: "./downlink-dialog.component.html", styleUrls: ["./downlink-dialog.component.scss"], + standalone: false, }) export class DownlinkDialogComponent implements OnInit { constructor(private translate: TranslateService, public dialog: MatDialogRef) {} diff --git a/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-tables/downlink-tables.component.html b/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-tables/downlink-tables.component.html index 13a26f3bf..7c277fa3e 100644 --- a/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-tables/downlink-tables.component.html +++ b/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-tables/downlink-tables.component.html @@ -1,145 +1,142 @@ -
-

{{ "IOTDEVICE.DOWNLINK.DOWNLINKQUEUE" | translate }}

-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- {{ "IOTDEVICE.CREATED" | translate }} - - {{ element.createdAt | dkTimeWithSecondsNoPrefix }} - {{ "USERS.STATUS" | translate }} - {{ getStatus(element) }} - {{ "IOTDEVICE.DOWNLINK.PAYLOADTITLE" | translate }} - {{ element.payload }} - {{ "IOTDEVICE.MQTT.PORT" | translate }} - {{ element.port }} -
+@if (device.type === 'LORAWAN') { +
+

{{ "IOTDEVICE.DOWNLINK.DOWNLINKQUEUE" | translate }}

+
+ + @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ } + + + + + + + + + + + + + + + + + + + + + + +
+ {{ "IOTDEVICE.CREATED" | translate }} + + {{ element.createdAt | dkTimeWithSecondsNoPrefix }} + {{ "USERS.STATUS" | translate }} + {{ getStatus(element) }} + {{ "IOTDEVICE.DOWNLINK.PAYLOADTITLE" | translate }} + {{ element.payload }} + {{ "IOTDEVICE.MQTT.PORT" | translate }} + {{ element.port }} +
+
+
+ + +
-
- - - +} @if (device.type === 'LORAWAN') { +
+

{{ "IOTDEVICE.DOWNLINK.HISTORICQUEUE" | translate }}

+
+ + @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ {{ "IOTDEVICE.CREATED" | translate }} + + {{ element.createdAt | dkTimeWithSecondsNoPrefix }} + + {{ "IOTDEVICE.DOWNLINK.SENDAT" | translate }} + + {{ element.sendAt | dkTimeWithSecondsNoPrefix }} + {{ "IOTDEVICE.DOWNLINK.RECEIVEDAT" | translate }} + {{ + element.acknowledgedAt + ? (element.acknowledgedAt | dkTimeWithSecondsNoPrefix) + : ("IOTDEVICE.DOWNLINK.NOT-RECEIVED" | translate) + }} + {{ "USERS.STATUS" | translate }} + {{ getStatus(element) }} + {{ "IOTDEVICE.DOWNLINK.FRAMECOUNTER" | translate }} + {{ element.fCntDown }} + {{ "IOTDEVICE.DOWNLINK.CONFIRMED" | translate }} + {{ isAcknowledged(element) }} + {{ "IOTDEVICE.DOWNLINK.PAYLOADTITLE" | translate }} + {{ element.payload }} + {{ "IOTDEVICE.MQTT.PORT" | translate }} + {{ element.port }} +
+
+
+ +
-
- -
-

{{ "IOTDEVICE.DOWNLINK.HISTORICQUEUE" | translate }}

-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- {{ "IOTDEVICE.CREATED" | translate }} - - {{ element.createdAt | dkTimeWithSecondsNoPrefix }} - - {{ "IOTDEVICE.DOWNLINK.SENDAT" | translate }} - - {{ element.sendAt | dkTimeWithSecondsNoPrefix }} - {{ "IOTDEVICE.DOWNLINK.RECEIVEDAT" | translate }} - {{ - element.acknowledgedAt - ? (element.acknowledgedAt | dkTimeWithSecondsNoPrefix) - : ("IOTDEVICE.DOWNLINK.NOT-RECEIVED" | translate) - }} - {{ "USERS.STATUS" | translate }} - {{ getStatus(element) }} - {{ "IOTDEVICE.DOWNLINK.FRAMECOUNTER" | translate }} - {{ element.fCntDown }} - {{ "IOTDEVICE.DOWNLINK.CONFIRMED" | translate }} - {{ isAcknowledged(element) }} - {{ "IOTDEVICE.DOWNLINK.PAYLOADTITLE" | translate }} - {{ element.payload }} - {{ "IOTDEVICE.MQTT.PORT" | translate }} - {{ element.port }} -
-
-
- -
-
+} diff --git a/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-tables/downlink-tables.component.ts b/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-tables/downlink-tables.component.ts index c78496947..7948c8627 100644 --- a/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-tables/downlink-tables.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/downlink/downlink-tables/downlink-tables.component.ts @@ -13,6 +13,7 @@ import { DownlinkQueueDto } from "../downlink-queue-dto"; selector: "app-downlink-tables", templateUrl: "./downlink-tables.component.html", styleUrls: ["./downlink-tables.component.scss"], + standalone: false, }) export class DownlinkTablesComponent implements OnInit { @Input() device: IotDevice; @@ -49,30 +50,30 @@ export class DownlinkTablesComponent implements OnInit { getDownlinksQueue() { this.isLoadingResults = true; - this.downlinkService.getDownlinkQueue(this.device.id).subscribe( - (response: DownlinkQueueDto[]) => { + this.downlinkService.getDownlinkQueue(this.device.id).subscribe({ + next: (response: DownlinkQueueDto[]) => { this.downlinkQueue = response; this.isLoadingResults = false; }, - error => { + error: error => { this.handleError(error); this.isLoadingResults = false; - } - ); + }, + }); } getHistoricalDownlinksQueue() { this.isLoadingResults = true; - this.downlinkService.getHistoricalDownlinkQueue(this.device.id).subscribe( - (response: DownlinkQueueDto[]) => { + this.downlinkService.getHistoricalDownlinkQueue(this.device.id).subscribe({ + next: (response: DownlinkQueueDto[]) => { this.downlinkHistoryQueue = response; this.isLoadingResults = false; }, - error => { + error: error => { this.handleError(error); this.isLoadingResults = false; - } - ); + }, + }); } handleReload() { @@ -84,10 +85,6 @@ export class DownlinkTablesComponent implements OnInit { this.openDownlinkDialog(); } - private handleError(error: HttpErrorResponse) { - this.errorMessages = this.errorMessageService.handleErrorMessage(error); - } - openDownlinkDialog() { const dialog = this.dialog.open(DownlinkDialogComponent, { width: "300px", @@ -96,8 +93,8 @@ export class DownlinkTablesComponent implements OnInit { dialog.afterClosed().subscribe(result => { if (result === true) { - this.downlinkService.flushQueue(this.device.id).subscribe( - response => { + this.downlinkService.flushQueue(this.device.id).subscribe({ + next: response => { this.snackBar.open( this.translate.instant("IOTDEVICE.DOWNLINK.QUEUE-FLUSHED"), this.translate.instant("DIALOG.OK"), @@ -107,10 +104,10 @@ export class DownlinkTablesComponent implements OnInit { ); this.getDownlinksQueue(); }, - error => { + error: error => { this.handleError(error); - } - ); + }, + }); } }); } @@ -129,4 +126,8 @@ export class DownlinkTablesComponent implements OnInit { isAcknowledged(downlink: DownlinkQueueDto) { return !downlink.acknowledged ? this.translate.instant("false") : this.translate.instant("true"); } + + private handleError(error: HttpErrorResponse) { + this.errorMessages = this.errorMessageService.handleErrorMessage(error); + } } diff --git a/src/app/applications/iot-devices/iot-device-detail/downlink/downlinks/downlink.component.html b/src/app/applications/iot-devices/iot-device-detail/downlink/downlinks/downlink.component.html index 99635c8cd..39dc35e8c 100644 --- a/src/app/applications/iot-devices/iot-device-detail/downlink/downlinks/downlink.component.html +++ b/src/app/applications/iot-devices/iot-device-detail/downlink/downlinks/downlink.component.html @@ -1,66 +1,79 @@
-
-
-
    -
  • - {{ error | translate }} -
  • -
+ @if (device.type === 'LORAWAN' || device.type === 'SIGFOX') { +
+ @if (errorMessages && errorMessages?.length !== 0) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ } +

{{ "IOTDEVICE.DOWNLINK.STARTDOWNLINK" | translate }}

+ @if (device.type === 'LORAWAN') { +
+ {{ "IOTDEVICE.DOWNLINK.CONFIRMEDDOWNLINK" | translate }} + + +
+ } + @if (device.type === 'LORAWAN') { +
+ + +
+ } +
+ + +
+ @if (device.type === 'SIGFOX') { +
+

{{ "IOTDEVICE.DOWNLINK.SIGFOX-PAYLOAD-LENGTH" | translate }}

+
+ } +
+ +
-

{{ "IOTDEVICE.DOWNLINK.STARTDOWNLINK" | translate }}

-
- {{ "IOTDEVICE.DOWNLINK.CONFIRMEDDOWNLINK" | translate }} - - -
-
- - -
-
- - -
-
-

{{ "IOTDEVICE.DOWNLINK.SIGFOX-PAYLOAD-LENGTH" | translate }}

-
-
- -
-
- - + } @else {

{{ "IOTDEVICE.DOWNLINK.NOTIMPLEMENTED" | translate }}

-
+ } +
diff --git a/src/app/applications/iot-devices/iot-device-detail/downlink/downlinks/downlink.component.ts b/src/app/applications/iot-devices/iot-device-detail/downlink/downlinks/downlink.component.ts index 339f71d09..be9b58fbb 100644 --- a/src/app/applications/iot-devices/iot-device-detail/downlink/downlinks/downlink.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/downlink/downlinks/downlink.component.ts @@ -14,6 +14,7 @@ import { DownlinkQueueDto } from "../downlink-queue-dto"; selector: "app-downlink", templateUrl: "./downlink.component.html", styleUrls: ["./downlink.component.scss"], + standalone: false, }) export class DownlinkComponent implements OnInit { @Input() device: IotDevice; @@ -38,17 +39,17 @@ export class DownlinkComponent implements OnInit { } getDownlinksQueue() { - this.downlinkService.getDownlinkQueue(this.device.id).subscribe( - (response: DownlinkQueueDto[]) => { + this.downlinkService.getDownlinkQueue(this.device.id).subscribe({ + next: (response: DownlinkQueueDto[]) => { this.downlinkQueue = response; this.isLoadingResults = false; }, - error => { + error: error => { this.handleError(error); console.log(error); this.isLoadingResults = false; - } - ); + }, + }); } handleQueueDownlink() { @@ -57,6 +58,20 @@ export class DownlinkComponent implements OnInit { } } + addToErrorMessage(text: string) { + this.translate.get([text]).subscribe(translations => { + this.errorMessages.push(translations[text]); + }); + } + + getMaxDownloadLength(): number { + if (this.device.type === DeviceType.SIGFOX) { + return 16; + } else { + return 256; + } + } + private handleError(error: HttpErrorResponse) { if (error?.error?.chirpstackError?.error == "f_port must be > 0") { this.errorMessages = ["port must be > 0"]; @@ -67,16 +82,16 @@ export class DownlinkComponent implements OnInit { private startDownlink() { this.errorMessages = []; - this.downlinkService.postDownlink(this.downlink, this.device.id).subscribe( - response => { + this.downlinkService.postDownlink(this.downlink, this.device.id).subscribe({ + next: () => { this.snackBar.open("Element sat i kø", "Downlink", { duration: 10000, }); }, - error => { + error: error => { this.handleError(error); - } - ); + }, + }); this.getDownlinksQueue(); } @@ -97,18 +112,4 @@ export class DownlinkComponent implements OnInit { } return validator; } - - addToErrorMessage(text: string) { - this.translate.get([text]).subscribe(translations => { - this.errorMessages.push(translations[text]); - }); - } - - getMaxDownloadLength(): number { - if (this.device.type === DeviceType.SIGFOX) { - return 16; - } else { - return 256; - } - } } diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-data-packets-tab/iot-device-data-packets-tab.component.html b/src/app/applications/iot-devices/iot-device-detail/iot-device-data-packets-tab/iot-device-data-packets-tab.component.html index e82e7f38e..de02fb0a1 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-data-packets-tab/iot-device-data-packets-tab.component.html +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-data-packets-tab/iot-device-data-packets-tab.component.html @@ -1,13 +1,12 @@
- - + @if (device.latestReceivedMessage) { + - - -

- {{ "IOTDEVICE.NO-DATAPACKAGE" | translate }} -

-
+ } @else { +

+ {{ "IOTDEVICE.NO-DATAPACKAGE" | translate }} +

+}
diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-data-packets-tab/iot-device-data-packets-tab.component.ts b/src/app/applications/iot-devices/iot-device-detail/iot-device-data-packets-tab/iot-device-data-packets-tab.component.ts index 7758e4d6f..b5aba28f9 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-data-packets-tab/iot-device-data-packets-tab.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-data-packets-tab/iot-device-data-packets-tab.component.ts @@ -6,6 +6,7 @@ import { IotDeviceDetailsService } from "@applications/iot-devices/iot-device-de selector: "app-iot-device-data-packets-tab", templateUrl: "./iot-device-data-packets-tab.component.html", styleUrls: ["./iot-device-data-packets-tab.component.scss"], + standalone: false, }) export class IotDeviceDataPacketsTabComponent implements OnInit { device: IotDevice; diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-generic/iot-device-detail-generic.component.html b/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-generic/iot-device-detail-generic.component.html index ab8a85585..ebfdcc28c 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-generic/iot-device-detail-generic.component.html +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-generic/iot-device-detail-generic.component.html @@ -2,21 +2,21 @@

{{ "IOTDEVICE.DETAIL" | translate }}

-

+

{{ "IOT-TABLE.APPLICATION" | translate }}{{ device.application.name }}

- + @if (device.type === DeviceType.LORAWAN) {
-

+

{{ "IOT-TABLE.BATTERY" | translate }}

-
+ } @@ -25,87 +25,91 @@

{{ "IOTDEVICE.DETAIL" | translate }}

>{{ "IOT-DEVICE-TYPES." + device.type | translate }}

- + @if (device.type === DeviceType.LORAWAN && device.lorawanSettings) { - + } - + @if (device.type === DeviceType.SIGFOX && device.sigfoxSettings) { - - - -

- {{ "IOTDEVICE.GENERIC_HTTP.APIKEY" | translate }} - {{ httpDeviceUrl }} -

-
- - - - -

+ } @if (device.type === DeviceType.GENERIC_HTTP) { + +

+ {{ "IOTDEVICE.GENERIC_HTTP.APIKEY" | translate }} + {{ httpDeviceUrl }} +

+ } @if (device.type === DeviceType.MQTT_INTERNAL_BROKER) { + + } @if (device.type === DeviceType.MQTT_EXTERNAL_BROKER) { + @if (device.mqttExternalBrokerSettings.invalidMqttConfig) { +

{{ "IOTDEVICE.MQTT.NOCONNECTION" | translate }}

- -
+ } + + }

{{ "IOTDEVICE.COMMENT" | translate }} - - {{ device.comment }} - - - {{ "IOTDEVICE.NOCOMMENT" | translate }} - + @if (device.comment) { + + {{ device.comment }} + + } @else { + {{ "IOTDEVICE.NOCOMMENT" | translate }} + }

- + @if (metadataTags.length) {

{{ "QUESTION.METADATA" | translate }}

-

- {{ i + 1 }}: {{ tag.key }} - {{ tag.value }} -

-
+ @for (tag of metadataTags; track tag; let i = $index) { +

+ {{ i + 1 }}: {{ tag.key }} + {{ tag.value }} +

+ } + }

{{ "IOTDEVICE.LOCATION" | translate }}

-
-
- -
-
-
-

- {{ "IOTDEVICE.LATITUDE" | translate }}{{ latitude | number : "2.1-9" }} -

+ @if (device.location) { +
+
+
-
-

- {{ "IOTDEVICE.LONGITUDE" | translate }}{{ longitude | number : "2.1-9" }} -

+
+
+

+ {{ "IOTDEVICE.LATITUDE" | translate }}{{ latitude | number : "2.1-9" }} +

+
+
+

+ {{ "IOTDEVICE.LONGITUDE" | translate }}{{ longitude | number : "2.1-9" }} +

+
-
- -

{{ "IOTDEVICE.NOLOCATION" | translate }}

-
+ } @else { +

{{ "IOTDEVICE.NOLOCATION" | translate }}

+ }

{{ "IOTDEVICE.COMMENTONLOCATION" | translate }} - - {{ device.commentOnLocation }} - - - {{ "IOTDEVICE.NOCOMMENTONLOCATION" | translate }} - + @if (device.commentOnLocation) { + + {{ device.commentOnLocation }} + + } @else { + {{ "IOTDEVICE.NOCOMMENTONLOCATION" | translate }} + }

diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-generic/iot-device-detail-generic.component.ts b/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-generic/iot-device-detail-generic.component.ts index 451d3452c..60dfbe2ff 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-generic/iot-device-detail-generic.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-generic/iot-device-detail-generic.component.ts @@ -12,6 +12,7 @@ import { DeviceType } from "@shared/enums/device-type"; selector: "app-iot-device-detail-generic", templateUrl: "./iot-device-detail-generic.component.html", styleUrls: ["./iot-device-detail-generic.component.scss"], + standalone: false, }) export class IotDeviceDetailGenericComponent implements OnInit, OnChanges, OnDestroy { batteryStatusColor = "green"; @@ -23,7 +24,7 @@ export class IotDeviceDetailGenericComponent implements OnInit, OnChanges, OnDes deleteDevice = new EventEmitter(); baseUrl: string = environment.baseUrl; httpDeviceUrl: string; - + protected readonly DeviceType = DeviceType; private readonly CHIRPSTACK_BATTERY_NOT_AVAILIBLE = 255; constructor( @@ -45,6 +46,7 @@ export class IotDeviceDetailGenericComponent implements OnInit, OnChanges, OnDes routeBack(): void { this.location.back(); } + getCoordinates() { return { longitude: this.longitude, @@ -55,6 +57,8 @@ export class IotDeviceDetailGenericComponent implements OnInit, OnChanges, OnDes }; } + ngOnDestroy(): void {} + private getBatteryProcentage(): number { if (this.device?.lorawanSettings?.deviceStatusBattery === this.CHIRPSTACK_BATTERY_NOT_AVAILIBLE) { return null; @@ -65,8 +69,4 @@ export class IotDeviceDetailGenericComponent implements OnInit, OnChanges, OnDes private getGenericHttpDeviceUrl(): string { return `${this.baseUrl}receive-data?apiKey=${this.device.apiKey}`; } - - ngOnDestroy(): void {} - - protected readonly DeviceType = DeviceType; } diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-lorawan/iot-device-detail-lorawan.component.html b/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-lorawan/iot-device-detail-lorawan.component.html index 0f96b1b64..cd63b15a5 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-lorawan/iot-device-detail-lorawan.component.html +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-lorawan/iot-device-detail-lorawan.component.html @@ -6,13 +6,12 @@ {{ "IOTDEVICE.LORA.DEVICEPROFILE" | translate }}{{ deviceProfileName }}

- +@if (OTAA) {

{{ "IOTDEVICE.LORA.OTAAAPPLICATIONKEY" | translate }}{{ device.lorawanSettings?.OTAAapplicationKey }}

-
- +} @if (!OTAA) {

{{ "IOTDEVICE.LORA.DEVADDR" | translate }}{{ device.lorawanSettings?.devAddr }} @@ -33,7 +32,7 @@ {{ "IOTDEVICE.LORA.NFCNTDOWN" | translate }}{{ device.lorawanSettings?.nFCntDown }}

-
+}

{{ "IOTDEVICE.LORA.SKIPFCNTCHECK" | translate }}{{ device.lorawanSettings?.skipFCntCheck | yesNo }} diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-lorawan/iot-device-detail-lorawan.component.ts b/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-lorawan/iot-device-detail-lorawan.component.ts index 91c8ef3b6..632a69d14 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-lorawan/iot-device-detail-lorawan.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-lorawan/iot-device-detail-lorawan.component.ts @@ -7,6 +7,7 @@ import { Subscription } from "rxjs"; selector: "app-iot-device-detail-lorawan", templateUrl: "./iot-device-detail-lorawan.component.html", styleUrls: ["./iot-device-detail-lorawan.component.scss"], + standalone: false, }) export class IotDeviceDetailLorawanComponent implements OnInit { @Input() device: IotDevice; diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-sigfox/iot-device-detail-sigfox.component.ts b/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-sigfox/iot-device-detail-sigfox.component.ts index f793dba79..e09ae22ce 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-sigfox/iot-device-detail-sigfox.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-detail-sigfox/iot-device-detail-sigfox.component.ts @@ -5,6 +5,7 @@ import { IotDevice } from "@applications/iot-devices/iot-device.model"; selector: "app-iot-device-detail-sigfox", templateUrl: "./iot-device-detail-sigfox.component.html", styleUrls: ["./iot-device-detail-sigfox.component.scss"], + standalone: false, }) export class IotDeviceDetailSigfoxComponent implements OnInit { @Input() device: IotDevice; diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-detail.component.html b/src/app/applications/iot-devices/iot-device-detail/iot-device-detail.component.html index 8140e697a..b9fc52ed5 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-detail.component.html +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-detail.component.html @@ -1,27 +1,30 @@ -

- - - - - - -
+ + + + + +
+} diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-detail.component.ts b/src/app/applications/iot-devices/iot-device-detail/iot-device-detail.component.ts index b89028b0d..7231d043c 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-detail.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-detail.component.ts @@ -22,6 +22,7 @@ import { IoTDeviceApplicationDialogModel } from "@shared/models/dialog.model"; selector: "app-iot-device", templateUrl: "./iot-device-detail.component.html", styleUrls: ["./iot-device-detail.component.scss"], + standalone: false, }) export class IoTDeviceDetailComponent implements OnInit, OnDestroy { public navTabs: any[] = [ @@ -53,9 +54,9 @@ export class IoTDeviceDetailComponent implements OnInit, OnDestroy { public iotDeviceSubscription: Subscription; public errorMessages: string[]; - private deleteDialogSubscription: Subscription; public dropdownButton: DropdownButton; public canEdit = false; + private deleteDialogSubscription: Subscription; private copyDeviceButtonId = "COPY-DEVICE"; private resetApiKeyId = "RESET-API-KEY"; @@ -105,7 +106,7 @@ export class IoTDeviceDetailComponent implements OnInit, OnDestroy { "IOTDEVICE-TABLE-ROW.RESET-API-KEY", "IOTDEVICE.GENERIC_HTTP.RESET-API-KEY", "GEN.CANCEL", - "GEN.BACK" + "GEN.BACK", ]) .subscribe(translations => { this.backButton.label = translations["GEN.BACK"]; diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-external-broker/iot-device-details-mqtt-external-broker.component.html b/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-external-broker/iot-device-details-mqtt-external-broker.component.html index b1c04d548..5ccdde261 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-external-broker/iot-device-details-mqtt-external-broker.component.html +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-external-broker/iot-device-details-mqtt-external-broker.component.html @@ -10,29 +10,26 @@ {{ "IOTDEVICE.MQTT.TOPIC_NAME" | translate }}{{ device.mqttExternalBrokerSettings.mqtttopicname }}

- +@if (device.mqttExternalBrokerSettings.authenticationType === AuthenticationType.PASSWORD) {

{{ "QUESTION.MQTT.USERNAME-LABEL" | translate }}{{ device.mqttExternalBrokerSettings.mqttusername }}

-
- +} @else {

{{ "QUESTION.MQTT.CA-CERTIFICATE" | translate }} + >

{{ "QUESTION.MQTT.DEVICE-CERTIFICATE" | translate }}

{{ "QUESTION.MQTT.DEVICE-CERTIFICATE-KEY" | translate }}

-
+} diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-external-broker/iot-device-details-mqtt-external-broker.component.ts b/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-external-broker/iot-device-details-mqtt-external-broker.component.ts index 2e28baef9..39075e809 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-external-broker/iot-device-details-mqtt-external-broker.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-external-broker/iot-device-details-mqtt-external-broker.component.ts @@ -6,13 +6,13 @@ import { AuthenticationType } from "@shared/enums/authentication-type"; selector: "app-iot-device-details-mqtt-external-broker", templateUrl: "./iot-device-details-mqtt-external-broker.component.html", styleUrls: ["./iot-device-details-mqtt-external-broker.component.scss"], + standalone: false, }) export class IotDeviceDetailsMqttExternalBrokerComponent implements OnInit { @Input() device: IotDevice; + protected readonly AuthenticationType = AuthenticationType; constructor() {} ngOnInit(): void {} - - protected readonly AuthenticationType = AuthenticationType; } diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-internal-broker/iot-device-details-mqtt-internal-broker.component.html b/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-internal-broker/iot-device-details-mqtt-internal-broker.component.html index 8094c461e..4b6c80d21 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-internal-broker/iot-device-details-mqtt-internal-broker.component.html +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-internal-broker/iot-device-details-mqtt-internal-broker.component.html @@ -11,37 +11,37 @@ >{{ device.mqttInternalBrokerSettings.mqtttopicname }}

- +@if (device.mqttInternalBrokerSettings.authenticationType === AuthenticationType.PASSWORD) {

{{ "QUESTION.MQTT.USERNAME-LABEL" | translate }}{{ device.mqttInternalBrokerSettings.mqttusername }}

-
+}

{{ "QUESTION.MQTT.CA-CERTIFICATE" | translate }} - - +

- +@if (device.mqttInternalBrokerSettings.authenticationType === AuthenticationType.CERTIFICATE) {

{{ "QUESTION.MQTT.DEVICE-CERTIFICATE" | translate }} - +

{{ "QUESTION.MQTT.DEVICE-CERTIFICATE-KEY" | translate }} @@ -49,13 +49,13 @@ {{ "IOTDEVICE.MQTT.COPY-TO-CLIPBOARD" | translate }} - +

-
+} diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-internal-broker/iot-device-details-mqtt-internal-broker.component.ts b/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-internal-broker/iot-device-details-mqtt-internal-broker.component.ts index 726536290..031a31881 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-internal-broker/iot-device-details-mqtt-internal-broker.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-details-mqtt-internal-broker/iot-device-details-mqtt-internal-broker.component.ts @@ -7,16 +7,16 @@ import { simpleDownload } from "@shared/helpers/download.helper"; selector: "app-iot-device-details-mqtt-internal-broker", templateUrl: "./iot-device-details-mqtt-internal-broker.component.html", styleUrls: ["./iot-device-details-mqtt-internal-broker.component.scss"], + standalone: false, }) export class IotDeviceDetailsMqttInternalBrokerComponent implements OnInit { @Input() device: IotDevice; + protected readonly AuthenticationType = AuthenticationType; constructor() {} ngOnInit(): void {} - protected readonly AuthenticationType = AuthenticationType; - downloadCaCertificate(caCertificate: string, filename: string) { simpleDownload(caCertificate, filename); } diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-details-tab/iot-device-details-tab.component.html b/src/app/applications/iot-devices/iot-device-detail/iot-device-details-tab/iot-device-details-tab.component.html index 9e9ea0570..ddd9c7a19 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-details-tab/iot-device-details-tab.component.html +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-details-tab/iot-device-details-tab.component.html @@ -1,5 +1,5 @@
- +
diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-details-tab/iot-device-details-tab.component.ts b/src/app/applications/iot-devices/iot-device-detail/iot-device-details-tab/iot-device-details-tab.component.ts index 953842227..3a11dcd12 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-details-tab/iot-device-details-tab.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-details-tab/iot-device-details-tab.component.ts @@ -6,6 +6,7 @@ import { IotDeviceDetailsService } from "@applications/iot-devices/iot-device-de selector: "app-iot-device-details-tab", templateUrl: "./iot-device-details-tab.component.html", styleUrls: ["./iot-device-details-tab.component.scss"], + standalone: false, }) export class IotDeviceDetailsTabComponent implements OnInit { device: IotDevice; diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-downlink-tab/iot-device-downlink-tab.component.ts b/src/app/applications/iot-devices/iot-device-detail/iot-device-downlink-tab/iot-device-downlink-tab.component.ts index e604919ec..46b437643 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-downlink-tab/iot-device-downlink-tab.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-downlink-tab/iot-device-downlink-tab.component.ts @@ -6,6 +6,7 @@ import { IotDeviceDetailsService } from "@applications/iot-devices/iot-device-de selector: "app-iot-device-downlink-tab", templateUrl: "./iot-device-downlink-tab.component.html", styleUrls: ["./iot-device-downlink-tab.component.scss"], + standalone: false, }) export class IotDeviceDownlinkTabComponent implements OnInit { device: IotDevice; diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-history-tab/iot-device-history-tab.component.html b/src/app/applications/iot-devices/iot-device-detail/iot-device-history-tab/iot-device-history-tab.component.html index 366a2331c..87cb70746 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-history-tab/iot-device-history-tab.component.html +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-history-tab/iot-device-history-tab.component.html @@ -1,42 +1,44 @@ - +@if (device.type === 'LORAWAN' || device.type === 'SIGFOX') {
- - + @if (device.type === 'SIGFOX' || device.type === 'LORAWAN') { + + + }
- - + @if (device.type === 'SIGFOX' || device.type === 'LORAWAN') { + + + }
- + @if (device.type === 'LORAWAN') { + + }
-
- +} @else {

{{ "IOTDEVICE.HISTORY-TAB.HISTORY-NOT-SUPPORTED" | translate }}

-
+} diff --git a/src/app/applications/iot-devices/iot-device-detail/iot-device-history-tab/iot-device-history-tab.component.ts b/src/app/applications/iot-devices/iot-device-detail/iot-device-history-tab/iot-device-history-tab.component.ts index 7726bdc45..4c586b1b8 100644 --- a/src/app/applications/iot-devices/iot-device-detail/iot-device-history-tab/iot-device-history-tab.component.ts +++ b/src/app/applications/iot-devices/iot-device-detail/iot-device-history-tab/iot-device-history-tab.component.ts @@ -17,6 +17,7 @@ const dataRateColors = ["#F57A2F", "#FFA620", "#F6CE06", "#FFEB3B", "#CDDC39", " selector: "app-iot-device-history-tab", templateUrl: "./iot-device-history-tab.component.html", styleUrls: ["./iot-device-history-tab.component.scss"], + standalone: false, }) export class IotDeviceHistoryTabComponent implements OnInit { device: IotDevice; diff --git a/src/app/applications/iot-devices/iot-device-edit/iot-device-edit.component.html b/src/app/applications/iot-devices/iot-device-edit/iot-device-edit.component.html index 06b8f8e72..4ef20d611 100644 --- a/src/app/applications/iot-devices/iot-device-edit/iot-device-edit.component.html +++ b/src/app/applications/iot-devices/iot-device-edit/iot-device-edit.component.html @@ -1,55 +1,59 @@ -
-
    -
  • - {{ error | translate }} -
  • -
-
+ @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ }
- -
-

{{ "IOTDEVICE.LORAWANSETUP" | translate }}

-
- -
- - +
+

{{ "IOTDEVICE.LORAWANSETUP" | translate }}

+
+
+ + -
- - -
- * - - - -
-
- -
- -

{{ "QUESTION.OTAA" | translate }}

-

{{ "QUESTION.OTAA-ABP-CONFIG-HELP" | translate }}

-
- - + {{ deviceProfile.name }} + + } + +
+ } +
+ @if (OTAA) { +

{{ "QUESTION.OTAA" | translate }}

+

{{ "QUESTION.OTAA-ABP-CONFIG-HELP" | translate }}

+
+ + -
- - - + [placeholder]="'QUESTION.OTAAAPPLICATIONKEY-PLACEHOLDER' | translate" + class="form-control" + id="OTAAapplicationKey" + maxLength="32" + name="OTAAapplicationKey" + type="text" + /> +
+ } @if (!OTAA) {

{{ "QUESTION.ABP" | translate }}

{{ "QUESTION.OTAA-ABP-CONFIG-HELP" | translate }}

-
-
{{ "QUESTION.APPLICATIONSESSIONKEY" | translate }}*
-
-
-
-
+ } +
+
+ +
+ + {{ "QUESTION.SKIPFCNTCHECK-YES" | translate }} + +
+
+
+ } @if (iotDevice.type == sigfoxDevice) { + + +} @if (iotDevice.type.toString().includes('MQTT')) { + + +} +
+

{{ "QUESTION.METADATA" | translate }}

+ +
+ @if (isDeviceCopy) {
- +
- + {{ "QUESTION.SKIPFCNTCHECK-YES" | translate }}
- - - - - - - - - - - - -
-

{{ "QUESTION.METADATA" | translate }}

- -
-
- -
- - {{ "QUESTION.SKIPFCNTCHECK-YES" | translate }} - -
-
+ }
- +
diff --git a/src/app/applications/iot-devices/iot-device-edit/iot-device-edit.component.ts b/src/app/applications/iot-devices/iot-device-edit/iot-device-edit.component.ts index a14437d95..622546cf5 100644 --- a/src/app/applications/iot-devices/iot-device-edit/iot-device-edit.component.ts +++ b/src/app/applications/iot-devices/iot-device-edit/iot-device-edit.component.ts @@ -29,6 +29,7 @@ import { PayloadDeviceDatatargetGetManyResponse } from "@payload-decoder/payload selector: "app-iot-device-edit", templateUrl: "./iot-device-edit.component.html", styleUrls: ["./iot-device-edit.component.scss"], + standalone: false, }) export class IotDeviceEditComponent implements OnInit, OnDestroy { @Input() isDeviceCopy: boolean = false; @@ -37,7 +38,6 @@ export class IotDeviceEditComponent implements OnInit, OnDestroy { public errorFields: string[]; public formFailedSubmit = false; public application: Application; - private deviceId: number; public disableChoseApplication = true; public loraDevice = DeviceType.LORAWAN; public sigfoxDevice = DeviceType.SIGFOX; @@ -49,10 +49,11 @@ export class IotDeviceEditComponent implements OnInit, OnDestroy { metadataTags: { key?: string; value?: string }[] = []; errorMetadataFieldId: string | undefined; public deviceSubscription: Subscription; + canEdit: boolean; + private deviceId: number; private applicationsSubscription: Subscription; private deviceProfileSubscription: Subscription; private devicesProfileSubscription: Subscription; - canEdit: boolean; constructor( private route: ActivatedRoute, @@ -140,10 +141,10 @@ export class IotDeviceEditComponent implements OnInit, OnDestroy { this.iotDevice.longitude = device.location.coordinates[0]; this.iotDevice.latitude = device.location.coordinates[1]; } - this.OTAA = this.iotDevice.lorawanSettings?.OTAAapplicationKey ? true : false; + this.OTAA = !!this.iotDevice.lorawanSettings?.OTAAapplicationKey; if (device.sigfoxSettings) { } - if (!device.deviceModelId || device.deviceModelId === null) { + if (!device.deviceModelId) { this.iotDevice.deviceModelId = 0; } if (device.metadata) { @@ -244,6 +245,112 @@ export class IotDeviceEditComponent implements OnInit, OnDestroy { } } + setActivationType() { + if (this.OTAA) { + this.iotDevice.lorawanSettings.activationType = ActivationType.OTAA; + } else { + this.iotDevice.lorawanSettings.activationType = ActivationType.ABP; + } + } + + postIoTDevice() { + // Sanitize devEUI + if (this.iotDevice.type === DeviceType.LORAWAN && this.iotDevice.lorawanSettings.devEUI) { + this.iotDevice.lorawanSettings.devEUI = this.iotDevice.lorawanSettings.devEUI.replace(/[^0-9A-Fa-f]/g, ""); + } + + //First create the device + this.iotDeviceService.createIoTDevice(this.iotDevice).subscribe({ + next: (createdDevice: IotDevice) => { + if (!this.copyPayloadAndDatatarget) { + this.navigateToDeviceDetails(createdDevice); + return; + } + + //If it's the copy device flow, then get all datatargets from the device that we want to copy. + this.datatargetPayloadService.getByIoTDevice(this.deviceId).subscribe({ + next: (result: PayloadDeviceDatatargetGetManyResponse) => { + //For each of these datatargets, append the copied device to that datatarget. First we make the observables + const appendToDatatargetObservables = result.data.map(element => + this.datatargetPayloadService.appendCopiedIoTDevice(element.id, { deviceId: createdDevice.id }) + ); + + if (appendToDatatargetObservables.length === 0) { + this.navigateToDeviceDetails(createdDevice); + return; + } + + //Forkjoin is running all observables in parallel and when all are done it returns. + forkJoin(appendToDatatargetObservables).subscribe({ + next: () => this.navigateToDeviceDetails(createdDevice), + error: this.formFailedSubmitHandleError, + }); + }, + error: this.formFailedSubmitHandleError, + }); + }, + error: this.formFailedSubmitHandleError, + }); + } + + formFailedSubmitHandleError(error: HttpErrorResponse) { + this.handleError(error); + this.formFailedSubmit = true; + } + + updateIoTDevice(id: number) { + this.iotDevice.applicationId = Number(this.iotDevice.applicationId); + this.iotDeviceService.updateIoTDevice(this.iotDevice, id).subscribe({ + next: () => { + this.routeBack(); + }, + error: (error: HttpErrorResponse) => { + this.formFailedSubmitHandleError(error); + }, + }); + } + + routeBack(): void { + this.location.back(); + } + + handleError(error: Pick) { + if (error?.error?.message === "MESSAGE.OTAA-INFO-MISSING") { + this.errorFields = ["OTAAapplicationKey"]; + this.errorMessages = [error?.error?.message]; + } else if (error?.error?.message === "MESSAGE.ID-INVALID-OR-ALREADY-IN-USE") { + this.errorFields = ["devEUI"]; + this.errorMessages = [error?.error?.message]; + } else { + const errorMessage: ErrorMessage = this.errorMessageService.handleErrorMessageWithFields(error); + this.errorFields = errorMessage.errorFields; + this.errorMessages = errorMessage.errorMessages; + } + this.scrollToTopService.scrollToTop(); + } + + onCoordinateKey(event: any) { + if (event.target.value.length > event.target.maxLength) { + event.target.value = event.target.value.slice(0, event.target.maxLength); + } + } + + ngOnDestroy() { + // prevent memory leak by unsubscribing + if (this.applicationsSubscription) { + this.applicationsSubscription.unsubscribe(); + } + if (this.deviceSubscription) { + this.deviceSubscription.unsubscribe(); + } + if (this.deviceProfileSubscription) { + this.deviceProfileSubscription.unsubscribe(); + } + if (this.devicesProfileSubscription) { + this.devicesProfileSubscription.unsubscribe(); + } + } + private handleMetadataError(invalidKey: string) { this.handleError({ error: { @@ -259,14 +366,6 @@ export class IotDeviceEditComponent implements OnInit, OnDestroy { this.formFailedSubmit = true; } - setActivationType() { - if (this.OTAA) { - this.iotDevice.lorawanSettings.activationType = ActivationType.OTAA; - } else { - this.iotDevice.lorawanSettings.activationType = ActivationType.ABP; - } - } - private adjustModelBasedOnType() { if (this.iotDevice.deviceModelId === 0) { this.iotDevice.deviceModelId = null; @@ -325,98 +424,4 @@ export class IotDeviceEditComponent implements OnInit, OnDestroy { private navigateToDeviceDetails(device: IotDevice) { this.router.navigate(["applications/" + this.iotDevice.applicationId + "/iot-device/" + device.id + "/details"]); } - - postIoTDevice() { - // Sanitize devEUI - if (this.iotDevice.type === DeviceType.LORAWAN && this.iotDevice.lorawanSettings.devEUI) { - this.iotDevice.lorawanSettings.devEUI = this.iotDevice.lorawanSettings.devEUI.replace(/[^0-9A-Fa-f]/g, ""); - } - - //First create the device - this.iotDeviceService.createIoTDevice(this.iotDevice).subscribe((createdDevice: IotDevice) => { - if (!this.copyPayloadAndDatatarget) { - this.navigateToDeviceDetails(createdDevice); - return; - } - - //If it's the copy device flow, then get all datatargets from the device that we want to copy. - this.datatargetPayloadService - .getByIoTDevice(this.deviceId) - .subscribe((result: PayloadDeviceDatatargetGetManyResponse) => { - //For each of these datatargets, append the copied device to that datatarget. First we make the observables - const appendToDatatargetObservables = result.data.map(element => - this.datatargetPayloadService.appendCopiedIoTDevice(element.id, { deviceId: createdDevice.id }) - ); - - if (appendToDatatargetObservables.length === 0) { - this.navigateToDeviceDetails(createdDevice); - return; - } - - //Forkjoin is running all observables in parallel and when all are done it returns. - forkJoin(appendToDatatargetObservables).subscribe( - () => this.navigateToDeviceDetails(createdDevice), - this.formFailedSubmitHandleError - ); - }, this.formFailedSubmitHandleError); - }, this.formFailedSubmitHandleError); - } - - formFailedSubmitHandleError(error: HttpErrorResponse) { - this.handleError(error); - this.formFailedSubmit = true; - } - - updateIoTDevice(id: number) { - this.iotDevice.applicationId = Number(this.iotDevice.applicationId); - this.iotDeviceService.updateIoTDevice(this.iotDevice, id).subscribe( - () => { - this.routeBack(); - }, - (error: HttpErrorResponse) => { - this.formFailedSubmitHandleError(error); - } - ); - } - - routeBack(): void { - this.location.back(); - } - - handleError(error: Pick) { - if (error?.error?.message === "MESSAGE.OTAA-INFO-MISSING") { - this.errorFields = ["OTAAapplicationKey"]; - this.errorMessages = [error?.error?.message]; - } else if (error?.error?.message === "MESSAGE.ID-INVALID-OR-ALREADY-IN-USE") { - this.errorFields = ["devEUI"]; - this.errorMessages = [error?.error?.message]; - } else { - const errorMessage: ErrorMessage = this.errorMessageService.handleErrorMessageWithFields(error); - this.errorFields = errorMessage.errorFields; - this.errorMessages = errorMessage.errorMessages; - } - this.scrollToTopService.scrollToTop(); - } - - onCoordinateKey(event: any) { - if (event.target.value.length > event.target.maxLength) { - event.target.value = event.target.value.slice(0, event.target.maxLength); - } - } - - ngOnDestroy() { - // prevent memory leak by unsubscribing - if (this.applicationsSubscription) { - this.applicationsSubscription.unsubscribe(); - } - if (this.deviceSubscription) { - this.deviceSubscription.unsubscribe(); - } - if (this.deviceProfileSubscription) { - this.deviceProfileSubscription.unsubscribe(); - } - if (this.devicesProfileSubscription) { - this.devicesProfileSubscription.unsubscribe(); - } - } } diff --git a/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-authentication-select/mqtt-authentication-select.component.html b/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-authentication-select/mqtt-authentication-select.component.html index fea14de5e..36b254c47 100644 --- a/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-authentication-select/mqtt-authentication-select.component.html +++ b/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-authentication-select/mqtt-authentication-select.component.html @@ -1,68 +1,70 @@
- +@if (settings.authenticationType === AuthenticationType.PASSWORD) {
-
+} diff --git a/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-authentication-select/mqtt-authentication-select.component.ts b/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-authentication-select/mqtt-authentication-select.component.ts index 67d4cc19c..473acd9ad 100644 --- a/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-authentication-select/mqtt-authentication-select.component.ts +++ b/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-authentication-select/mqtt-authentication-select.component.ts @@ -7,17 +7,17 @@ import { MqttSharedSettings } from "@shared/models/mqtt-shared-settings.model"; selector: "app-mqtt-authentication-select", templateUrl: "./mqtt-authentication-select.component.html", styleUrls: ["./mqtt-authentication-select.component.scss"], + standalone: false, }) export class MqttAuthenticationSelectComponent implements OnInit { @Input() settings: MqttSharedSettings; @Input() editMode: boolean = false; @Input() formFailedSubmit: boolean = false; @Input() errorFields: string[]; + protected readonly AuthenticationType = AuthenticationType; + protected readonly faQuestionCircle = faQuestionCircle; constructor() {} ngOnInit(): void {} - - protected readonly AuthenticationType = AuthenticationType; - protected readonly faQuestionCircle = faQuestionCircle; } diff --git a/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-device-edit.component.html b/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-device-edit.component.html index 5806c0591..a302e4432 100644 --- a/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-device-edit.component.html +++ b/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-device-edit.component.html @@ -6,184 +6,182 @@

{{ "QUESTION.MQTT.TITLE" | translate }}

- + @if (iotDevice.type === DeviceType.MQTT_INTERNAL_BROKER) { - - - -
- - + + -
-
- - +
+
+ + -
-
- - +
+
+ + -
- - -
- - - - -
-
- - - - +
+
+ + + + -
-
- - - - +
+
+ + + + -
-
-
+ [placeholder]="'QUESTION.MQTT.DEVICE-CERTIFICATE-KEY-PLACEHOLDER' | translate" + class="form-control" + id="deviceCertificateKey" + name="deviceCertificateKey" + required + type="text" + > +
+ } +} @if (iotDevice.mqttInternalBrokerSettings?.authenticationType === AuthenticationType.PASSWORD) {
OBS!

{{ "QUESTION.MQTT.CERTIFICATE-OBS" | translate }}

+} @if (iotDevice.mqttExternalBrokerSettings?.authenticationType || +iotDevice.mqttInternalBrokerSettings?.authenticationType) {

{{ "QUESTION.MQTT.CONFIG-HELP" | translate }}

+} diff --git a/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-device-edit.component.ts b/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-device-edit.component.ts index b4a922949..db15dc7bc 100644 --- a/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-device-edit.component.ts +++ b/src/app/applications/iot-devices/iot-device-edit/mqtt-device-edit/mqtt-device-edit.component.ts @@ -9,6 +9,7 @@ import { faQuestionCircle } from "@fortawesome/free-solid-svg-icons"; selector: "app-mqtt-device-edit", templateUrl: "./mqtt-device-edit.component.html", styleUrls: ["./mqtt-device-edit.component.scss"], + standalone: false, }) export class MqttDeviceEditComponent implements OnInit { @Input() iotDevice: IotDevice; @@ -16,6 +17,9 @@ export class MqttDeviceEditComponent implements OnInit { @Input() errorFields: string[]; @Input() editMode: boolean = false; public mqttDeviceTypes = [DeviceType.MQTT_INTERNAL_BROKER, DeviceType.MQTT_EXTERNAL_BROKER]; + protected readonly DeviceType = DeviceType; + protected readonly AuthenticationType = AuthenticationType; + protected readonly faQuestionCircle = faQuestionCircle; constructor(public translate: TranslateService) {} @@ -25,8 +29,4 @@ export class MqttDeviceEditComponent implements OnInit { this.editMode = true; } } - - protected readonly DeviceType = DeviceType; - protected readonly AuthenticationType = AuthenticationType; - protected readonly faQuestionCircle = faQuestionCircle; } diff --git a/src/app/applications/iot-devices/iot-device-edit/sigfox-device-edit/sigfox-device-edit.component.html b/src/app/applications/iot-devices/iot-device-edit/sigfox-device-edit/sigfox-device-edit.component.html index 0e405f320..6acce055d 100644 --- a/src/app/applications/iot-devices/iot-device-edit/sigfox-device-edit/sigfox-device-edit.component.html +++ b/src/app/applications/iot-devices/iot-device-edit/sigfox-device-edit/sigfox-device-edit.component.html @@ -5,169 +5,191 @@

{{ "QUESTION.SIGFOX.TITLE" | translate }}

-
-
- - {{ "QUESTION.SIGFOX.CONNECTTOEXISTINGDEVICEINBACKEND" | translate }} -
-
-
- - - - -
-
- - + @for (deviceType of sigfoxDeviceTypes; track deviceType) { + + } + +
+
+ + -
-
- - +
+
+ + -
-
- - +
+
+ + -
-
- - - -

{{ "QUESTION.SIGFOX.ENDPRODUCTCERTIFICATE-HELP-TITLE" | translate }}

-
-
-
- - {{ "QUESTION.SIGFOX.ENDPRODUCTCERTIFICATE-HELP-TEXT" | translate }} - + [placeholder]="'QUESTION.SIGFOX.ENDPRODUCTCERTIFICATE-PLACEHOLDER' | translate" + class="form-control" + id="endProductCertificate" + maxLength="16" + name="endProductCertificate" + type="text" + />
-
- -
- - {{ "QUESTION.SIGFOX.PROTOTYPE" | translate }} -
+
+ + + +

{{ "QUESTION.SIGFOX.ENDPRODUCTCERTIFICATE-HELP-TITLE" | translate }}

+
+
+ + @if (!iotDevice.sigfoxSettings.endProductCertificate) { +
+ +
+ + {{ "QUESTION.SIGFOX.PROTOTYPE" | translate }} + +
+
+ } +
- -
-
-
-
- - - - + [value]="iotDevice.sigfoxSettings.deviceId" + class="form-select" + id="deviceId" + name="deviceId" + required + > + @for (element of sigfoxDevices; track element) { + + } + +
+
+ } + @if (!iotDevice.sigfoxSettings.groupId) { +
+

{{ "QUESTION.SIGFOX.SELECTGROUPFIRST" | translate }}

+
+ } +
+ {{ "QUESTION.SIGFOX.DISCLAIMER" | translate }} + + {{ "QUESTION.SIGFOX.DISCLAIMER-CLICK" | translate }} +
-
-

{{ "QUESTION.SIGFOX.SELECTGROUPFIRST" | translate }}

-
-
- {{ "QUESTION.SIGFOX.DISCLAIMER" | translate }} - - {{ "QUESTION.SIGFOX.DISCLAIMER-CLICK" | translate }} - -
-
+ } diff --git a/src/app/applications/iot-devices/iot-device-edit/sigfox-device-edit/sigfox-device-edit.component.ts b/src/app/applications/iot-devices/iot-device-edit/sigfox-device-edit/sigfox-device-edit.component.ts index 3ce39dede..a39fa13df 100644 --- a/src/app/applications/iot-devices/iot-device-edit/sigfox-device-edit/sigfox-device-edit.component.ts +++ b/src/app/applications/iot-devices/iot-device-edit/sigfox-device-edit/sigfox-device-edit.component.ts @@ -6,21 +6,23 @@ import { SigfoxService } from "@shared/services/sigfox.service"; import { SharedVariableService } from "@shared/shared-variable/shared-variable.service"; import { SigfoxDeviceType, SigfoxDeviceTypeResponse } from "@shared/models/sigfox-device-type.model"; import { SigfoxDevice, SigfoxDevicesResponse } from "@app/sigfox/sigfox-device.model"; + @Component({ selector: "app-sigfox-device-edit", templateUrl: "./sigfox-device-edit.component.html", styleUrls: ["./sigfox-device-edit.component.scss"], + standalone: false, }) export class SigfoxDeviceEditComponent implements OnInit { @Input() iotDevice: IotDevice; @Input() errorFields: string[]; @Input() formFailedSubmit = false; public errorMessages: any; - private organizationId: number; public sigfoxGroups: SigfoxGroup[] = []; public sigfoxDevices: SigfoxDevice[]; public sigfoxDeviceTypes: SigfoxDeviceType[] = []; public editMode = false; + private organizationId: number; constructor( public translate: TranslateService, diff --git a/src/app/applications/iot-devices/iot-device.service.ts b/src/app/applications/iot-devices/iot-device.service.ts index 82362803e..291b97a7b 100644 --- a/src/app/applications/iot-devices/iot-device.service.ts +++ b/src/app/applications/iot-devices/iot-device.service.ts @@ -2,9 +2,9 @@ import { Injectable } from "@angular/core"; import { Observable } from "rxjs"; import { IotDevice, - IoTDevicesMinimalResponse, - IotDevicesImportResponse, IotDeviceImportRequest, + IotDevicesImportResponse, + IoTDevicesMinimalResponse, IoTDeviceStatsResponse, UpdateIoTDeviceApplication, } from "./iot-device.model"; diff --git a/src/app/applications/iot-devices/iot-devices-tab/export-csv-dialog/export-csv-dialog.component.html b/src/app/applications/iot-devices/iot-devices-tab/export-csv-dialog/export-csv-dialog.component.html index d33baab5b..e78893dfc 100644 --- a/src/app/applications/iot-devices/iot-devices-tab/export-csv-dialog/export-csv-dialog.component.html +++ b/src/app/applications/iot-devices/iot-devices-tab/export-csv-dialog/export-csv-dialog.component.html @@ -2,11 +2,11 @@

{{ "DIALOG.EXPORT-CSV.TITLE" | translate }}

{{ "DIALOG.EXPORT-CSV.BODY" | translate }}
-
- -
diff --git a/src/app/applications/iot-devices/iot-devices-tab/export-csv-dialog/export-csv-dialog.component.ts b/src/app/applications/iot-devices/iot-devices-tab/export-csv-dialog/export-csv-dialog.component.ts index 533152a02..bc8ea9268 100644 --- a/src/app/applications/iot-devices/iot-devices-tab/export-csv-dialog/export-csv-dialog.component.ts +++ b/src/app/applications/iot-devices/iot-devices-tab/export-csv-dialog/export-csv-dialog.component.ts @@ -6,6 +6,7 @@ import { DialogModel } from "@shared/models/dialog.model"; selector: "export-csv-dialog", templateUrl: "./export-csv-dialog.component.html", styleUrls: ["./export-csv-dialog.component.scss"], + standalone: false, }) export class ExportCsvDialogComponent implements OnInit { constructor( diff --git a/src/app/applications/iot-devices/iot-devices-tab/iot-devices-tab.component.html b/src/app/applications/iot-devices/iot-devices-tab/iot-devices-tab.component.html index 776801f13..17853f1db 100644 --- a/src/app/applications/iot-devices/iot-devices-tab/iot-devices-tab.component.html +++ b/src/app/applications/iot-devices/iot-devices-tab/iot-devices-tab.component.html @@ -3,30 +3,32 @@
- - + @if (download$ | async; as download) { + + + }
-
- - -
- - - + @if (applicationService.canEdit) { +
+ + +
+ } @else { + + }
diff --git a/src/app/applications/iot-devices/iot-devices-tab/iot-devices-tab.component.ts b/src/app/applications/iot-devices/iot-devices-tab/iot-devices-tab.component.ts index 2a1a073b5..da4cc4ebc 100644 --- a/src/app/applications/iot-devices/iot-devices-tab/iot-devices-tab.component.ts +++ b/src/app/applications/iot-devices/iot-devices-tab/iot-devices-tab.component.ts @@ -2,7 +2,6 @@ import { Component, OnInit } from "@angular/core"; import { ApplicationService } from "@applications/application.service"; import { MatDialog } from "@angular/material/dialog"; import { ExportCsvDialogComponent } from "@applications/iot-devices/iot-devices-tab/export-csv-dialog/export-csv-dialog.component"; -import { RestService } from "@shared/services/rest.service"; import { Download } from "@shared/helpers/download.helper"; import { DownloadService } from "@shared/services/download.service"; import { environment } from "@environments/environment"; @@ -12,6 +11,7 @@ import { Observable } from "rxjs"; selector: "app-iot-devices-tab", templateUrl: "./iot-devices-tab.component.html", styleUrls: ["./iot-devices-tab.component.scss"], + standalone: false, }) export class IotDevicesTabComponent implements OnInit { download$: Observable; @@ -22,14 +22,15 @@ export class IotDevicesTabComponent implements OnInit { private dialog: MatDialog, private downloader: DownloadService ) {} - ngOnInit(): void { - this.applicationId = this.applicationService.id; - } get openDialogFunc() { return this.openExportCsvDialog.bind(this); } + ngOnInit(): void { + this.applicationId = this.applicationService.id; + } + public openExportCsvDialog() { const dialog = this.dialog.open(ExportCsvDialogComponent); diff --git a/src/app/applications/iot-devices/iot-devices-table/iot-devices-table.component.html b/src/app/applications/iot-devices/iot-devices-table/iot-devices-table.component.html index 37d54ee89..df487f0f0 100644 --- a/src/app/applications/iot-devices/iot-devices-table/iot-devices-table.component.html +++ b/src/app/applications/iot-devices/iot-devices-table/iot-devices-table.component.html @@ -6,9 +6,13 @@ >
-
- -
+ @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ } - - {{ "IOTDEVICE-TABLE-ROW.NOT-SUPPORTED-SHORT" | translate }} - - - {{ "IOTDEVICE-TABLE-ROW.NOT-AVAILABLE" | translate }} - @@ -31,12 +29,12 @@
{{ "APPLICATION-TABLE.NAME" | translate }}
- +
@@ -46,7 +44,7 @@
{{ "IOT-TABLE.NETWORK-TECHNOLOGY" | translate }}
- + @@ -58,7 +56,7 @@ > {{ "GATEWAY.PLACEMENT-LABEL" | translate }} - + @@ -82,7 +80,7 @@ > {{ "IOTDEVICE.LORA.DEVICEPROFILE" | translate }} - + @@ -92,7 +90,7 @@
{{ "IOT-TABLE.DEV-EUI" | translate }}
- + @@ -104,7 +102,7 @@ > {{ "IOT-TABLE.APP-KEY" | translate }} - + @@ -115,14 +113,20 @@
{{ "IOT-TABLE.RSSI" | translate }}
- + @@ -132,14 +136,20 @@
{{ "IOT-TABLE.SNR" | translate }}
- + @@ -148,7 +158,7 @@
{{ "APPLICATION-TABLE.DATA-TARGETS" | translate }}
- + @@ -159,15 +169,16 @@ {{ "IOT-TABLE.BATTERY" | translate }} @@ -177,7 +188,7 @@
{{ "IOT-TABLE.ACTIVE" | translate }}
- + @@ -185,37 +196,42 @@ diff --git a/src/app/applications/iot-devices/iot-devices-table/iot-devices-table.component.scss b/src/app/applications/iot-devices/iot-devices-table/iot-devices-table.component.scss index c8718451c..c731a39f1 100644 --- a/src/app/applications/iot-devices/iot-devices-table/iot-devices-table.component.scss +++ b/src/app/applications/iot-devices/iot-devices-table/iot-devices-table.component.scss @@ -1,4 +1,5 @@ @import "../../../../assets/scss/setup/variables"; + .column-title-color { color: $color-link; font-weight: bold; diff --git a/src/app/applications/iot-devices/iot-devices-table/iot-devices-table.component.ts b/src/app/applications/iot-devices/iot-devices-table/iot-devices-table.component.ts index 2a409b075..a760450a9 100644 --- a/src/app/applications/iot-devices/iot-devices-table/iot-devices-table.component.ts +++ b/src/app/applications/iot-devices/iot-devices-table/iot-devices-table.component.ts @@ -107,6 +107,7 @@ const columnDefinitions: TableColumn[] = [ templateUrl: "./iot-devices-table.component.html", styleUrls: ["./iot-devices-table.component.scss"], encapsulation: ViewEncapsulation.None, + standalone: false, }) export class IotDevicesTableComponent implements AfterViewInit, OnInit { @Input() applicationId: number; diff --git a/src/app/applications/iot-devices/iot-devices.module.ts b/src/app/applications/iot-devices/iot-devices.module.ts index 314493626..ee0516d4b 100644 --- a/src/app/applications/iot-devices/iot-devices.module.ts +++ b/src/app/applications/iot-devices/iot-devices.module.ts @@ -7,7 +7,7 @@ import { GraphModule } from "@app/graph/graph.module"; import { IotDeviceDetailsMqttExternalBrokerComponent } from "@applications/iot-devices/iot-device-detail/iot-device-details-mqtt-external-broker/iot-device-details-mqtt-external-broker.component"; import { IotDeviceDetailsMqttInternalBrokerComponent } from "@applications/iot-devices/iot-device-detail/iot-device-details-mqtt-internal-broker/iot-device-details-mqtt-internal-broker.component"; import { FontAwesomeModule } from "@fortawesome/angular-fontawesome"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslatePipe } from "@ngx-translate/core"; import { FormModule } from "@shared/components/forms/form.module"; import { TableSortIconComponent } from "@shared/components/table-sort-icon/table-sort-icon.component"; import { NGMaterialModule } from "@shared/Modules/materiale.module"; @@ -71,7 +71,7 @@ import { IotDeviceCopyComponent } from "./iot-device-copy/iot-device-copy.compon SharedModule, CommonModule, RouterModule, - TranslateModule, + TranslatePipe, FormModule, NGMaterialModule, FormsModule, diff --git a/src/app/applications/multicast/multicast-detail/multicast-detail.component.html b/src/app/applications/multicast/multicast-detail/multicast-detail.component.html index 0840f657c..0984b2574 100644 --- a/src/app/applications/multicast/multicast-detail/multicast-detail.component.html +++ b/src/app/applications/multicast/multicast-detail/multicast-detail.component.html @@ -1,120 +1,130 @@ -
- -
-
-
-

{{ "MULTICAST.BASIC-DETAILS" | translate }}

- -

- {{ "MULTICAST.GROUPNAME" | translate }}{{ multicast.name | translate }} -

- -

{{ "MULTICAST.LORAWAN-DETAILS" | translate }}

- -

- {{ "MULTICAST.ADDRESS" | translate }}{{ multicast.mcAddr | translate }} -

-

- {{ "MULTICAST.NETWORK-KEY" | translate }}{{ multicast.mcNwkSKey | translate }} -

-

- {{ "MULTICAST.APPLICATION-KEY" | translate }}{{ multicast.mcAppSKey | translate }} -

-

- {{ "MULTICAST.FRAMECOUNTER" | translate }}{{ multicast.fCnt }} -

-

- {{ "MULTICAST.DATARATE" | translate }}{{ multicast.dr }} -

-

- {{ "MULTICAST.FREQUENCY" | translate }}{{ multicast.frequency }} -

-

- {{ "MULTICAST.GROUPTYPE" | translate }}{{ multicast.groupType }} -

- -
-
- -
-
-

{{ "APPLICATION.ATTACHED-IOT" | translate }}

-
+@if (multicast) { +
+ +
+
+
+

{{ "MULTICAST.BASIC-DETAILS" | translate }}

+ +

+ {{ "MULTICAST.GROUPNAME" | translate }}{{ multicast.name | translate }} +

+ +

{{ "MULTICAST.LORAWAN-DETAILS" | translate }}

+ +

+ {{ "MULTICAST.ADDRESS" | translate }}{{ multicast.mcAddr | translate }} +

+

+ {{ "MULTICAST.NETWORK-KEY" | translate }}{{ multicast.mcNwkSKey | translate }} +

+

+ {{ "MULTICAST.APPLICATION-KEY" | translate }}{{ multicast.mcAppSKey | translate }} +

- {{ "MULTICAST.IOTDEVICE" | translate }}: - - , - {{ - device.name - }} - + {{ "MULTICAST.FRAMECOUNTER" | translate }}{{ multicast.fCnt }}

+

+ {{ "MULTICAST.DATARATE" | translate }}{{ multicast.dr }} +

+

+ {{ "MULTICAST.FREQUENCY" | translate }}{{ multicast.frequency }} +

+

+ {{ "MULTICAST.GROUPTYPE" | translate }}{{ multicast.groupType }} +

+
-
-
-
-

Downlink

-
-
    -
  • - {{ error | translate }} -
  • -
+
+
+

{{ "APPLICATION.ATTACHED-IOT" | translate }}

+
+

+ {{ "MULTICAST.IOTDEVICE" | translate }}: + @for (device of multicast.iotDevices; track device; let first = $first) { + + @if (!first) { + , + } + {{ + device.name + }} + + } +

+
-
- - +
+

Downlink

+ @if (errorMessages && errorMessages?.length !== 0) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ } +
+ + -
-
- - -
-
- + class="form-control" + id="port" + name="port" + required + type="number" + /> +
+
+ + +
+
+ +
-
+} diff --git a/src/app/applications/multicast/multicast-detail/multicast-detail.component.ts b/src/app/applications/multicast/multicast-detail/multicast-detail.component.ts index 334e27eee..6244fdb4d 100644 --- a/src/app/applications/multicast/multicast-detail/multicast-detail.component.ts +++ b/src/app/applications/multicast/multicast-detail/multicast-detail.component.ts @@ -21,16 +21,17 @@ import { Downlink } from "@applications/iot-devices/iot-device-detail/downlink/d selector: "app-multicast-detail", templateUrl: "./multicast-detail.component.html", styleUrls: ["./multicast-detail.component.scss"], + standalone: false, }) export class MulticastDetailComponent implements OnInit, OnDestroy { public multicast: Multicast; public backButton: BackButton = { label: "", routerLink: undefined }; - private deleteDialogSubscription: Subscription; public dropdownButton: DropdownButton; public formFailedSubmit = false; - private applicationId: number; public downlink = new Downlink(); @Input() errorMessages: string[]; + private deleteDialogSubscription: Subscription; + private applicationId: number; constructor( private route: ActivatedRoute, @@ -97,12 +98,6 @@ export class MulticastDetailComponent implements OnInit, OnDestroy { keyPressedHex(event); } - private handleError(error: HttpErrorResponse) { - const errors = this.errorMessageService.handleErrorMessageWithFields(error); - this.errorMessages = errors.errorFields; - this.errorMessages = errors.errorMessages; - } - clickDownlink() { if (this.multicast.iotDevices.length > 0) { if (this.validateHex(this.downlink.data)) { @@ -118,6 +113,7 @@ export class MulticastDetailComponent implements OnInit, OnDestroy { this.downlinkService.showSendDownlinkFailNoDevices(); } } + openDownlinkDialog() { const dialog = this.dialog.open(DownlinkDialogComponent, {}); @@ -128,16 +124,32 @@ export class MulticastDetailComponent implements OnInit, OnDestroy { }); } + addToErrorMessage(text: string) { + this.translate.get([text]).subscribe(translations => { + this.errorMessages.push(translations[text]); + }); + } + + ngOnDestroy(): void { + this.deleteDialogSubscription?.unsubscribe(); + } + + private handleError(error: HttpErrorResponse) { + const errors = this.errorMessageService.handleErrorMessageWithFields(error); + this.errorMessages = errors.errorFields; + this.errorMessages = errors.errorMessages; + } + private startDownlink() { this.errorMessages = []; - this.multicastService.multicastPost(this.downlink, this.multicast.id).subscribe( - () => { + this.multicastService.multicastPost(this.downlink, this.multicast.id).subscribe({ + next: () => { this.snackService.showInQueueSnack(); }, - error => { + error: error => { this.handleError(error); - } - ); + }, + }); } private validateHex(input: string): boolean { @@ -150,14 +162,4 @@ export class MulticastDetailComponent implements OnInit, OnDestroy { return false; } } - - addToErrorMessage(text: string) { - this.translate.get([text]).subscribe(translations => { - this.errorMessages.push(translations[text]); - }); - } - - ngOnDestroy(): void { - this.deleteDialogSubscription?.unsubscribe(); - } } diff --git a/src/app/applications/multicast/multicast-edit/multicast-edit.component.html b/src/app/applications/multicast/multicast-edit/multicast-edit.component.html index b713f017c..b384b6e02 100644 --- a/src/app/applications/multicast/multicast-edit/multicast-edit.component.html +++ b/src/app/applications/multicast/multicast-edit/multicast-edit.component.html @@ -1,31 +1,35 @@ -
-
-
    -
  • - {{ error | translate }} -
  • -
-
+ + @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ }
*
@@ -33,20 +37,20 @@ *
@@ -121,17 +125,17 @@ *
+ + + + {{periodicity}} + + +
-->
@@ -197,27 +203,30 @@ - - - {{ - device.name - }} + @for (device of filteredDevicesMulti | async | filterDevices; track device) { + {{ + device.name + }} + + }
@@ -226,7 +235,7 @@ -
diff --git a/src/app/applications/multicast/multicast-edit/multicast-edit.component.ts b/src/app/applications/multicast/multicast-edit/multicast-edit.component.ts index 2d19d5990..7c964d79f 100644 --- a/src/app/applications/multicast/multicast-edit/multicast-edit.component.ts +++ b/src/app/applications/multicast/multicast-edit/multicast-edit.component.ts @@ -19,26 +19,27 @@ import { takeUntil } from "rxjs/operators"; selector: "app-multicast-edit", templateUrl: "./multicast-edit.component.html", styleUrls: ["./multicast-edit.component.scss"], + standalone: false, }) export class MulticastEditComponent implements OnInit, OnDestroy { public title: string; public multicastId: number; - public errorMessages: unknown; - private multicastSubscription: Subscription; + public errorMessages: any[]; public searchDevices: UntypedFormControl = new UntypedFormControl(); public errorFields: string[]; public iotDevices: IotDevice[] = []; @Input() submitButton: string; public backButtonTitle: string; public multicast: Multicast = new Multicast(); - private applicationId: number; - private onDestroy = new Subject(); public formFailedSubmit = false; public multicastTypes: string[] = Object.values(MulticastType); // Class-B: { public periodicities: number[] = [2, 4, 8, 16, 32, 64, 128]; // used for classB if it has to be used in the future } public deviceCtrl: UntypedFormControl = new UntypedFormControl(); public deviceFilterCtrl: UntypedFormControl = new UntypedFormControl(); public filteredDevicesMulti: ReplaySubject = new ReplaySubject(1); + private multicastSubscription: Subscription; + private applicationId: number; + private onDestroy = new Subject(); constructor( private translate: TranslateService, @@ -79,24 +80,6 @@ export class MulticastEditComponent implements OnInit, OnDestroy { }); } - private filterDevicesMulti() { - if (!this.iotDevices) { - return; - } - // get the search keyword - let search = this.deviceFilterCtrl?.value?.trim(); - if (!search) { - this.filteredDevicesMulti.next(this.iotDevices.slice()); - return; - } else { - search = search.toLowerCase(); - } - const filtered = this.iotDevices.filter(device => { - return device.name.toLocaleLowerCase().indexOf(search) > -1; - }); - this.filteredDevicesMulti.next(filtered); - } - onSubmit(): void { if (this.multicastId) { // if already created, only update @@ -121,45 +104,40 @@ export class MulticastEditComponent implements OnInit, OnDestroy { }); } - // only if classB can be used - // showPeriodicity(): boolean { - // if (this.multicast.groupType === MulticastType.ClassB) { - // return true; - // } else return false; - // } - updateMulticast(): void { this.resetErrors(); this.multicast.applicationID = this.applicationId; - this.multicastService.update(this.multicast).subscribe( - () => { + this.multicastService.update(this.multicast).subscribe({ + next: () => { this.snackService.showUpdatedSnack(); this.routeBack(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.snackService.showFailSnack(); this.handleError(error); this.formFailedSubmit = true; - } - ); + }, + }); } + createMulticast(): void { this.resetErrors(); this.multicast.applicationID = this.applicationId; - this.multicastService.create(this.multicast).subscribe( - () => { + this.multicastService.create(this.multicast).subscribe({ + next: () => { this.snackService.showSavedSnack(); this.routeBack(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.snackService.showFailSnack(); this.handleError(error); this.formFailedSubmit = true; - } - ); + }, + }); } + public compare(o1: IotDevice | undefined, o2: IotDevice | undefined): boolean { return o1?.id === o2?.id; } @@ -167,6 +145,7 @@ export class MulticastEditComponent implements OnInit, OnDestroy { selectAll() { this.multicast.iotDevices = this.iotDevices; } + unSelectAll() { this.multicast.iotDevices = []; } @@ -174,21 +153,43 @@ export class MulticastEditComponent implements OnInit, OnDestroy { routeBack(): void { this.router.navigate(["applications", this.applicationId.toString()]); } + keyPressHexadecimal(event) { keyPressedHex(event); } - private resetErrors() { - this.errorFields = []; - this.errorMessages = undefined; - this.formFailedSubmit = false; - } + handleError(error: HttpErrorResponse) { const errors = this.errorMessageService.handleErrorMessageWithFields(error); this.errorFields = errors.errorFields; this.errorMessages = errors.errorMessages; this.scrollToTopService.scrollToTop(); } + ngOnDestroy(): void { this.multicastSubscription?.unsubscribe(); } + + private filterDevicesMulti() { + if (!this.iotDevices) { + return; + } + // get the search keyword + let search = this.deviceFilterCtrl?.value?.trim(); + if (!search) { + this.filteredDevicesMulti.next(this.iotDevices.slice()); + return; + } else { + search = search.toLowerCase(); + } + const filtered = this.iotDevices.filter(device => { + return device.name.toLocaleLowerCase().indexOf(search) > -1; + }); + this.filteredDevicesMulti.next(filtered); + } + + private resetErrors() { + this.errorFields = []; + this.errorMessages = undefined; + this.formFailedSubmit = false; + } } diff --git a/src/app/applications/multicast/multicast-tab/multicast-tab.component.html b/src/app/applications/multicast/multicast-tab/multicast-tab.component.html index 314e3b729..08adc05fb 100644 --- a/src/app/applications/multicast/multicast-tab/multicast-tab.component.html +++ b/src/app/applications/multicast/multicast-tab/multicast-tab.component.html @@ -2,18 +2,19 @@
-
- - -
- - - + @if (applicationService.canEdit) { +
+ + +
+ } @else { + + }
diff --git a/src/app/applications/multicast/multicast-tab/multicast-tab.component.ts b/src/app/applications/multicast/multicast-tab/multicast-tab.component.ts index 2ca08290b..2ce32f75a 100644 --- a/src/app/applications/multicast/multicast-tab/multicast-tab.component.ts +++ b/src/app/applications/multicast/multicast-tab/multicast-tab.component.ts @@ -5,6 +5,7 @@ import { ApplicationService } from "@applications/application.service"; selector: "app-multicast-tab", templateUrl: "./multicast-tab.component.html", styleUrls: ["./multicast-tab.component.scss"], + standalone: false, }) export class MulticastTabComponent implements OnInit { constructor(public applicationService: ApplicationService) {} diff --git a/src/app/applications/multicast/multicast-table/multicast-table.component.html b/src/app/applications/multicast/multicast-table/multicast-table.component.html index 631dca068..50909c0a1 100644 --- a/src/app/applications/multicast/multicast-table/multicast-table.component.html +++ b/src/app/applications/multicast/multicast-table/multicast-table.component.html @@ -1,10 +1,14 @@
-
- -
+ @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ }
{{ - iotDevice.name - }} + iotDevice.name + }} {{ "IOT-DEVICE-TYPES." + iotDevice.type | translate }} {{ iotDevice.commentOnLocation ? truncateText(iotDevice.commentOnLocation) : "-" }} @@ -70,7 +68,7 @@
{{ "IOTDEVICE.DEVICEMODEL" | translate }}
- +
{{ iotDevice.deviceModel?.body?.name ?? "-" }} {{ iotDevice.deviceProfileName ?? "-" }} {{ iotDevice.deviceEUI ?? "-" }} {{ iotDevice.OTAAapplicationKey ?? "-" }} - -
- {{ iotDevice.latestReceivedMessage.rssi }} -
-
+ @if (iotDevice.type === 'LORAWAN' || iotDevice.type === 'SIGFOX') { + @if (iotDevice.latestReceivedMessage?.rssi) { +
+ {{ iotDevice.latestReceivedMessage.rssi }} +
+ } @else { + {{ "IOTDEVICE-TABLE-ROW.NOT-AVAILABLE" | translate }} + } + } @else { + {{ "IOTDEVICE-TABLE-ROW.NOT-SUPPORTED-SHORT" | translate }} + }
- -
- {{ iotDevice.latestReceivedMessage?.snr }} -
-
+ @if (iotDevice.type === 'LORAWAN' || iotDevice.type === 'SIGFOX') { + @if (iotDevice.latestReceivedMessage?.snr) { +
+ {{ iotDevice.latestReceivedMessage?.snr }} +
+ } @else { + {{ "IOTDEVICE-TABLE-ROW.NOT-AVAILABLE" | translate }} + } + } @else { + {{ "IOTDEVICE-TABLE-ROW.NOT-SUPPORTED-SHORT" | translate }} + }
{{ iotDevice.connections?.length ?? 0 }} -
- - -
- + @if (iotDevice.type === 'LORAWAN') { +
+ + +
+ } @else {
{{ "IOTDEVICE-TABLE-ROW.NOT-SUPPORTED-SHORT" | translate }}
-
+ }
{{ lastActive(iotDevice) }} - + + + @if (iotDevice.type !== deviceTypes.SIGFOX) { + + } + @if (iotDevice.type !== deviceTypes.SIGFOX) { + + } + + + + }
- - - - - - + - - + +
+ {{ "MULTICAST-TABLE.NAME" | translate }} - {{ - element.groupName - }} + + {{ + element.groupName + }} + {{ "MULTICAST-TABLE.TYPE" | translate }} + {{ element.lorawanMulticastDefinition.groupType }} - + + @if (canEdit) { + + }
diff --git a/src/app/applications/multicast/multicast-table/multicast-table.component.ts b/src/app/applications/multicast/multicast-table/multicast-table.component.ts index 48ade424c..87e815424 100644 --- a/src/app/applications/multicast/multicast-table/multicast-table.component.ts +++ b/src/app/applications/multicast/multicast-table/multicast-table.component.ts @@ -7,7 +7,7 @@ import { TranslateService } from "@ngx-translate/core"; import { DeleteDialogService } from "@shared/components/delete-dialog/delete-dialog.service"; import { MeService } from "@shared/services/me.service"; import { SnackService } from "@shared/services/snack.service"; -import { merge, Observable, Subscription, of as observableOf } from "rxjs"; +import { merge, Observable, of as observableOf, Subscription } from "rxjs"; import { catchError, map, startWith, switchMap } from "rxjs/operators"; import { Multicast, MulticastData } from "../multicast.model"; import { MulticastService } from "../multicast.service"; @@ -18,6 +18,7 @@ import { DefaultPageSizeOptions } from "@shared/constants/page.constants"; selector: "app-multicast-table", templateUrl: "./multicast-table.component.html", styleUrls: ["./multicast-table.component.scss"], + standalone: false, }) export class MulticastTableComponent implements OnInit, AfterViewInit, OnDestroy { @ViewChild(MatPaginator) paginator: MatPaginator; diff --git a/src/app/applications/multicast/multicast.module.ts b/src/app/applications/multicast/multicast.module.ts index 12dc8c8ff..1d15cd2e5 100644 --- a/src/app/applications/multicast/multicast.module.ts +++ b/src/app/applications/multicast/multicast.module.ts @@ -5,7 +5,7 @@ import { MulticastDetailComponent } from "./multicast-detail/multicast-detail.co import { MulticastEditComponent } from "./multicast-edit/multicast-edit.component"; import { MulticastTableComponent } from "./multicast-table/multicast-table.component"; import { RouterModule } from "@angular/router"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslatePipe } from "@ngx-translate/core"; import { NGMaterialModule } from "@shared/Modules/materiale.module"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { FontAwesomeModule } from "@fortawesome/angular-fontawesome"; @@ -18,7 +18,7 @@ import { MulticastTabComponent } from "./multicast-tab/multicast-tab.component"; imports: [ CommonModule, RouterModule, - TranslateModule, + TranslatePipe, NGMaterialModule, FontAwesomeModule, ReactiveFormsModule, diff --git a/src/app/auth/auth.component.html b/src/app/auth/auth.component.html index eb4ee786b..264b1e177 100644 --- a/src/app/auth/auth.component.html +++ b/src/app/auth/auth.component.html @@ -1,57 +1,63 @@
-
-
    -
  • - {{ error | translate }} -
  • -
-
-
+ @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ } @if (isLoading) { +
- + } @if (!isLoading) { +
- +
+ }
diff --git a/src/app/auth/auth.component.ts b/src/app/auth/auth.component.ts index 5d68e925c..47946ffd0 100644 --- a/src/app/auth/auth.component.ts +++ b/src/app/auth/auth.component.ts @@ -12,6 +12,7 @@ import { UserMinimalService } from "@app/admin/users/user-minimal.service"; selector: "app-auth", templateUrl: "./auth.component.html", styleUrls: ["./auth.component.scss"], + standalone: false, }) export class AuthComponent implements OnInit { public errorMessage: string; @@ -67,17 +68,17 @@ export class AuthComponent implements OnInit { const password = form.value.password; this.isLoading = true; - this.authService.login(username, password).subscribe( - (x: any) => { + this.authService.login(username, password).subscribe({ + next: (x: any) => { if (x.accessToken) { this.success(); } else { this.fail(); } }, - err => { + error: err => { console.log(err); - } - ); + }, + }); } } diff --git a/src/app/auth/auth.service.ts b/src/app/auth/auth.service.ts index d4df20390..9363eca48 100644 --- a/src/app/auth/auth.service.ts +++ b/src/app/auth/auth.service.ts @@ -2,7 +2,7 @@ import { Injectable } from "@angular/core"; import { catchError, shareReplay, tap } from "rxjs/operators"; import { HttpClient, HttpErrorResponse } from "@angular/common/http"; import { environment } from "@environments/environment"; -import jwtDecode from "jwt-decode"; +import { jwtDecode } from "jwt-decode"; import moment from "moment"; import { RestService } from "@shared/services/rest.service"; import { Observable, of } from "rxjs"; diff --git a/src/app/dashboard/dashboard.component.html b/src/app/dashboard/dashboard.component.html index ac7be9dae..d0c357f70 100644 --- a/src/app/dashboard/dashboard.component.html +++ b/src/app/dashboard/dashboard.component.html @@ -35,33 +35,35 @@

{{ "DASHBOARD.WELCOME-SUB" | translate }}

{{ "DASHBOARD.SUB-HEADER-1" | translate }}

- {{ "DASHBOARD.WELCOME-MESSAGE" | translate + {{ + "DASHBOARD.WELCOME-MESSAGE" | translate }}{{ "DASHBOARD.LINK-1" | translate }}{{ "DASHBOARD.WELCOME-MESSAGE-3" | translate }} + >{{ "DASHBOARD.LINK-1" | translate }}{{ "DASHBOARD.WELCOME-MESSAGE-3" | translate }}

{{ "DASHBOARD.SUB-HEADER-2" | translate }}

- {{ "DASHBOARD.WELCOME-MESSAGE-2" | translate + {{ + "DASHBOARD.WELCOME-MESSAGE-2" | translate }}{{ - "DASHBOARD.LINK-2" | translate - }} + >{{ + "DASHBOARD.LINK-2" | translate + }}

-
+
{{ "DASHBOARD.BUTTON" | translate }}{{ "DASHBOARD.BUTTON" | translate }}
diff --git a/src/app/device-model/device-model-detail/device-model-detail.component.html b/src/app/device-model/device-model-detail/device-model-detail.component.html index ff3c80fb7..62dee39dd 100644 --- a/src/app/device-model/device-model-detail/device-model-detail.component.html +++ b/src/app/device-model/device-model-detail/device-model-detail.component.html @@ -1,63 +1,67 @@ -
- - -
-
-
-
-

{{ "DEVICE-MODEL.HEADLINE" | translate }}

- -

- {{ "DEVICE-MODEL.ID" | translate }}{{ deviceModel.body.id }} -

-

- {{ "DEVICE-MODEL.BRANDNAME" | translate }}{{ deviceModel.body.brandName }} -

-

- {{ "DEVICE-MODEL.MODELNAME" | translate }}{{ deviceModel.body.modelName }} -

-

- {{ "DEVICE-MODEL.MANUFACTURERNAME" | translate }}{{ deviceModel.body.manufacturerName }} -

-

- {{ "DEVICE-MODEL.CONTROLLEDPROPERTY" | translate }}{{ deviceModel.body.controlledProperty.join(", ") }} -

-

- {{ "DEVICE-MODEL.CATEGORY" | translate }}{{ deviceModel.body.category }} -

-

- {{ "DEVICE-MODEL.SUPPORTEDUNITS" | translate }}{{ deviceModel.body.supportedUnits }} -

-

- {{ "DEVICE-MODEL.FUNCTION" | translate }}{{ deviceModel.body.function }} -

-

- {{ "DEVICE-MODEL.ENERGYLIMITATIONCLASS" | translate }}{{ deviceModel.body.energyLimitationClass }} -

-

- {{ "DEVICE-MODEL.SUPPORTEDPROTOCOL" | translate }}{{ deviceModel.body.supportedProtocol }} -

+@if (deviceModel) { +
+ + +
+ @if (deviceModel) { +
+
+
+

{{ "DEVICE-MODEL.HEADLINE" | translate }}

+ +

+ {{ "DEVICE-MODEL.ID" | translate }}{{ deviceModel.body.id }} +

+

+ {{ "DEVICE-MODEL.BRANDNAME" | translate }}{{ deviceModel.body.brandName }} +

+

+ {{ "DEVICE-MODEL.MODELNAME" | translate }}{{ deviceModel.body.modelName }} +

+

+ {{ "DEVICE-MODEL.MANUFACTURERNAME" | translate }}{{ deviceModel.body.manufacturerName }} +

+

+ {{ "DEVICE-MODEL.CONTROLLEDPROPERTY" | translate }}{{ deviceModel.body.controlledProperty.join(", ") }} +

+

+ {{ "DEVICE-MODEL.CATEGORY" | translate }}{{ deviceModel.body.category }} +

+

+ {{ "DEVICE-MODEL.SUPPORTEDUNITS" | translate }}{{ deviceModel.body.supportedUnits }} +

+

+ {{ "DEVICE-MODEL.FUNCTION" | translate }}{{ deviceModel.body.function }} +

+

+ {{ "DEVICE-MODEL.ENERGYLIMITATIONCLASS" | translate }}{{ deviceModel.body.energyLimitationClass }} +

+

+ {{ "DEVICE-MODEL.SUPPORTEDPROTOCOL" | translate }}{{ deviceModel.body.supportedProtocol }} +

+
+
-
+ }
-
+} diff --git a/src/app/device-model/device-model-detail/device-model-detail.component.ts b/src/app/device-model/device-model-detail/device-model-detail.component.ts index 0789bd89a..12976049d 100644 --- a/src/app/device-model/device-model-detail/device-model-detail.component.ts +++ b/src/app/device-model/device-model-detail/device-model-detail.component.ts @@ -1,4 +1,3 @@ -import { Location } from "@angular/common"; import { Component, OnDestroy, OnInit } from "@angular/core"; import { ActivatedRoute, Router } from "@angular/router"; import { TranslateService } from "@ngx-translate/core"; @@ -15,6 +14,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-device-model-detail", templateUrl: "./device-model-detail.component.html", styleUrls: ["./device-model-detail.component.scss"], + standalone: false, }) export class DeviceModelDetailComponent implements OnInit, OnDestroy { deviceModel: DeviceModel; @@ -67,12 +67,6 @@ export class DeviceModelDetailComponent implements OnInit, OnDestroy { ); } - private getDeviceModel(id: number) { - this.deviceModelService.get(id).subscribe(response => { - this.deviceModel = response; - }); - } - public clickDelete() { this.deleteDialogSubscription = this.deleteDialogservice.showSimpleDialog().subscribe(response => { if (response) { @@ -96,4 +90,10 @@ export class DeviceModelDetailComponent implements OnInit, OnDestroy { this.deleteDialogSubscription.unsubscribe(); } } + + private getDeviceModel(id: number) { + this.deviceModelService.get(id).subscribe(response => { + this.deviceModel = response; + }); + } } diff --git a/src/app/device-model/device-model-edit/device-model-edit.component.html b/src/app/device-model/device-model-edit/device-model-edit.component.html index 01624dd6a..760122174 100644 --- a/src/app/device-model/device-model-edit/device-model-edit.component.html +++ b/src/app/device-model/device-model-edit/device-model-edit.component.html @@ -1,12 +1,16 @@
-
-
    -
  • - {{ error | translate }} -
  • -
-
+ @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ }
@@ -14,18 +18,18 @@ >*
@@ -35,18 +39,18 @@ *
@@ -56,18 +60,18 @@ *
@@ -78,18 +82,18 @@ *
@@ -98,22 +102,22 @@
*
@@ -121,19 +125,21 @@
* - - {{ control }} - + @for (control of controlledPropperties; track control) { + + {{ control }} + + }
@@ -143,14 +149,16 @@ * - - {{ category }} - + @for (category of categories; track category) { + + {{ category }} + + }
@@ -158,18 +166,20 @@
+ "QUESTION.DEVICE-MODEL.SELECT-SUPPORTEDUNITS" | translate + }} - - {{ unit.name }} - + @for (unit of supportedUnits.units; track unit) { + + {{ unit.name }} + + }
@@ -177,18 +187,20 @@
+ "QUESTION.DEVICE-MODEL.SELECT-DEVICEFUNCTIONS" | translate + }} - - {{ function }} - + @for (function of deviceFunctions; track function) { + + {{ function }} + + }
@@ -196,17 +208,19 @@
+ "QUESTION.DEVICE-MODEL.SELECT-ENERGYLIMITATIONCLASS" | translate + }} - - {{ elclass.name }} - + @for (elclass of energyLimitationClass.energyLimits; track elclass) { + + {{ elclass.name }} + + }
@@ -214,18 +228,20 @@
+ "QUESTION.DEVICE-MODEL.SELECT-SUPPORTEDPROTOCOL" | translate + }} - - {{ protocol }} - + @for (protocol of supportedProtocol; track protocol) { + + {{ protocol }} + + }
@@ -239,6 +255,6 @@
- +
diff --git a/src/app/device-model/device-model-edit/device-model-edit.component.ts b/src/app/device-model/device-model-edit/device-model-edit.component.ts index fb7cd2635..501a500e6 100644 --- a/src/app/device-model/device-model-edit/device-model-edit.component.ts +++ b/src/app/device-model/device-model-edit/device-model-edit.component.ts @@ -19,6 +19,7 @@ import { SupportedUnit } from "../supported-unit.model"; selector: "app-device-model-edit", templateUrl: "./device-model-edit.component.html", styleUrls: ["./device-model-edit.component.scss"], + standalone: false, }) export class DeviceModelEditComponent implements OnInit { public errorMessages: string[]; @@ -68,21 +69,15 @@ export class DeviceModelEditComponent implements OnInit { return o1 === o2; } - private getDeviceModel(id: number) { - this.deviceModelService.get(id).subscribe(response => { - this.deviceModel = response; - }); - } - createDeviceModel() { - this.deviceModelService.create(this.deviceModel).subscribe( - response => { + this.deviceModelService.create(this.deviceModel).subscribe({ + next: () => { this.routeBack(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.handleError(error); - } - ); + }, + }); } handleNameNull() { @@ -100,14 +95,14 @@ export class DeviceModelEditComponent implements OnInit { } updateDeviceModel() { - this.deviceModelService.update(this.deviceModel, +this.deviceModel.id).subscribe( - response => { + this.deviceModelService.update(this.deviceModel, +this.deviceModel.id).subscribe({ + next: () => { this.routeBack(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.handleError(error); - } - ); + }, + }); } onSubmit() { @@ -117,4 +112,10 @@ export class DeviceModelEditComponent implements OnInit { routeBack(): void { this.location.back(); } + + private getDeviceModel(id: number) { + this.deviceModelService.get(id).subscribe(response => { + this.deviceModel = response; + }); + } } diff --git a/src/app/device-model/device-model-list/device-model-list.component.html b/src/app/device-model/device-model-list/device-model-list.component.html index a3fed1ec8..916d138dd 100644 --- a/src/app/device-model/device-model-list/device-model-list.component.html +++ b/src/app/device-model/device-model-list/device-model-list.component.html @@ -1,8 +1,8 @@
diff --git a/src/app/device-model/device-model-list/device-model-list.component.ts b/src/app/device-model/device-model-list/device-model-list.component.ts index 412eedfd3..f988cdd7f 100644 --- a/src/app/device-model/device-model-list/device-model-list.component.ts +++ b/src/app/device-model/device-model-list/device-model-list.component.ts @@ -1,7 +1,6 @@ import { Component, OnInit } from "@angular/core"; import { Title } from "@angular/platform-browser"; import { TranslateService } from "@ngx-translate/core"; -import { SharedVariableService } from "@shared/shared-variable/shared-variable.service"; import { MeService } from "@shared/services/me.service"; import { OrganizationAccessScope } from "@shared/enums/access-scopes"; @@ -9,6 +8,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-device-model-list", templateUrl: "./device-model-list.component.html", styleUrls: ["./device-model-list.component.scss"], + standalone: false, }) export class DeviceModelListComponent implements OnInit { canEdit: boolean; diff --git a/src/app/device-model/device-model-routing.module.ts b/src/app/device-model/device-model-routing.module.ts index 618809d9d..8542b5031 100644 --- a/src/app/device-model/device-model-routing.module.ts +++ b/src/app/device-model/device-model-routing.module.ts @@ -1,9 +1,8 @@ -import { Routes, RouterModule } from "@angular/router"; +import { RouterModule, Routes } from "@angular/router"; import { NgModule } from "@angular/core"; import { DeviceModelListComponent } from "./device-model-list/device-model-list.component"; import { DeviceModelEditComponent } from "./device-model-edit/device-model-edit.component"; import { DeviceModelDetailComponent } from "./device-model-detail/device-model-detail.component"; -import { DeviceModelTableComponent } from "./device-model-table/device-model-table.component"; const routes: Routes = [ { diff --git a/src/app/device-model/device-model-table/device-model-table.component.html b/src/app/device-model/device-model-table/device-model-table.component.html index 322e1a92d..e487ae259 100644 --- a/src/app/device-model/device-model-table/device-model-table.component.html +++ b/src/app/device-model/device-model-table/device-model-table.component.html @@ -1,15 +1,19 @@
- -
- -
+
+ @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ } - - @@ -17,47 +21,49 @@ - - + - - + - - + +
+ {{ "DEVICE-MODEL.NAME" | translate }} - + + {{ element.body.name }} {{ "DEVICE-MODEL.TABLE.ID" | translate }} + {{ "DEVICE-MODEL.TABLE.ID" | translate }} {{ element.id }} - + + @if (canEdit) { + + }
diff --git a/src/app/device-model/device-model-table/device-model-table.component.ts b/src/app/device-model/device-model-table/device-model-table.component.ts index e07ff2623..ccc4dd2b4 100644 --- a/src/app/device-model/device-model-table/device-model-table.component.ts +++ b/src/app/device-model/device-model-table/device-model-table.component.ts @@ -17,6 +17,7 @@ import { DefaultPageSizeOptions } from "@shared/constants/page.constants"; selector: "app-device-model-table", templateUrl: "./device-model-table.component.html", styleUrls: ["./device-model-table.component.scss"], + standalone: false, }) export class DeviceModelTableComponent implements OnInit, AfterViewInit { @ViewChild(MatPaginator) paginator: MatPaginator; diff --git a/src/app/device-model/device-model.module.ts b/src/app/device-model/device-model.module.ts index 87cadc24e..b0c011050 100644 --- a/src/app/device-model/device-model.module.ts +++ b/src/app/device-model/device-model.module.ts @@ -4,7 +4,7 @@ import { DeviceModelListComponent } from "./device-model-list/device-model-list. import { DeviceModelRoutingModule } from "./device-model-routing.module"; import { DeviceModelTableComponent } from "./device-model-table/device-model-table.component"; import { NGMaterialModule } from "@shared/Modules/materiale.module"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslatePipe } from "@ngx-translate/core"; import { DeviceModelDetailComponent } from "./device-model-detail/device-model-detail.component"; import { DeviceModelEditComponent } from "./device-model-edit/device-model-edit.component"; import { SharedModule } from "@shared/shared.module"; @@ -23,7 +23,7 @@ import { PipesModule } from "@shared/pipes/pipes.module"; CommonModule, DeviceModelRoutingModule, NGMaterialModule, - TranslateModule, + TranslatePipe, SharedModule, FormsModule, FormModule, diff --git a/src/app/device-model/device-model.service.ts b/src/app/device-model/device-model.service.ts index b34227fd5..3d0b86bfb 100644 --- a/src/app/device-model/device-model.service.ts +++ b/src/app/device-model/device-model.service.ts @@ -3,7 +3,6 @@ import { UserMinimalService } from "@app/admin/users/user-minimal.service"; import { GetPayloadDecoderParameters } from "@payload-decoder/payload-decoder.model"; import { RestService } from "@shared/services/rest.service"; import { SharedVariableService } from "@shared/shared-variable/shared-variable.service"; -import { buildDriverProvider } from "protractor/built/driverProviders"; import { Observable } from "rxjs"; import { map } from "rxjs/operators"; import { DeviceModel, DeviceModelBody, DeviceModelRequest, DeviceModelResponse } from "./device.model"; diff --git a/src/app/error-page/error-page.component.html b/src/app/error-page/error-page.component.html index e94ebca9f..7caeec01a 100644 --- a/src/app/error-page/error-page.component.html +++ b/src/app/error-page/error-page.component.html @@ -1,23 +1,25 @@ -
-
-
-
-
-
-

- - {{ errorMessage.code | translate }} - - - {{ errorMessage.message | translate }} - -

-
-
-
- -
-
-
-
-
+@if (errorMessage) { +
+
+
+
+
+
+

+ + {{ errorMessage.code | translate }} + + + {{ errorMessage.message | translate }} + +

+
+
+
+ +
+
+
+
+
+} diff --git a/src/app/error-page/error-page.component.scss b/src/app/error-page/error-page.component.scss index 0ca752819..3c017523e 100644 --- a/src/app/error-page/error-page.component.scss +++ b/src/app/error-page/error-page.component.scss @@ -15,6 +15,7 @@ transform: translate(-50%, -50%); text-align: center; width: 100%; + .error-page-primary { color: $color-white-001; text-transform: uppercase; @@ -37,6 +38,7 @@ } } } + &__logo-box { position: absolute; bottom: 5vh; diff --git a/src/app/error-page/error-page.component.ts b/src/app/error-page/error-page.component.ts index ecce369f8..63d622417 100644 --- a/src/app/error-page/error-page.component.ts +++ b/src/app/error-page/error-page.component.ts @@ -1,12 +1,10 @@ import { Component, OnInit } from "@angular/core"; -import { ActivatedRoute, Data, Router } from "@angular/router"; -import { TranslateService } from "@ngx-translate/core"; -import { ErrorPageMessage } from "@shared/models/error-message.model"; @Component({ selector: "app-error-page", templateUrl: "./error-page.component.html", styleUrls: ["./error-page.component.scss"], + standalone: false, }) export class ErrorPageComponent implements OnInit { errorMessage: any; diff --git a/src/app/gateway/gateway-change-organization-dialog/gateway-change-organization-dialog.component.html b/src/app/gateway/gateway-change-organization-dialog/gateway-change-organization-dialog.component.html index 64ad19613..351242650 100644 --- a/src/app/gateway/gateway-change-organization-dialog/gateway-change-organization-dialog.component.html +++ b/src/app/gateway/gateway-change-organization-dialog/gateway-change-organization-dialog.component.html @@ -2,25 +2,27 @@

{{ "GATEWAY.CHANGE-ORGANIZATION.TITLE" | translate }}

+ "GATEWAY.CHANGE-ORGANIZATION.CHOOSE-ORGANIZATION" | translate + }} - - {{ organization.name }} - + @for (organization of filteredOrganizations | async; track organization) { + + {{ organization.name }} + + }
-
+
-
diff --git a/src/app/gateway/gateway-change-organization-dialog/gateway-change-organization-dialog.component.ts b/src/app/gateway/gateway-change-organization-dialog/gateway-change-organization-dialog.component.ts index fb423109e..26a70e673 100644 --- a/src/app/gateway/gateway-change-organization-dialog/gateway-change-organization-dialog.component.ts +++ b/src/app/gateway/gateway-change-organization-dialog/gateway-change-organization-dialog.component.ts @@ -14,6 +14,7 @@ import { UpdateGatewayOrganization } from "../gateway.model"; selector: "app-gateway-change-organization-dialog", templateUrl: "./gateway-change-organization-dialog.component.html", styleUrls: ["./gateway-change-organization-dialog.component.scss"], + standalone: false, }) export class GatewayChangeOrganizationDialogComponent implements OnInit { public gatewaysSubscription: Subscription; diff --git a/src/app/gateway/gateway-detail/gateway-detail.component.html b/src/app/gateway/gateway-detail/gateway-detail.component.html index eb5d74068..7267257b5 100644 --- a/src/app/gateway/gateway-detail/gateway-detail.component.html +++ b/src/app/gateway/gateway-detail/gateway-detail.component.html @@ -1,172 +1,190 @@ -
- -
-
-
-
-

{{ "GATEWAY.DETAILS" | translate }}

-

- {{ "GATEWAY.ID" | translate }}{{ gateway.gatewayId }} -

-

- {{ "GATEWAY.ORGANIZATION" | translate }}{{ gateway.organizationName }} -

- -

- {{ "GATEWAY.TAGS" | translate }}{{ gateway.tagsString }} -

-

- {{ "LORA-GATEWAY-TABLE.PLACEMENT" | translate }}{{ "GATEWAY.PLACEMENT." + gateway.placement | translate }} -

-

- {{ "LORA-GATEWAY-TABLE.MODEL-NAME" | translate }}{{ gateway.modelName }} -

-

- {{ "LORA-GATEWAY-TABLE.ANTENNA-TYPE" | translate }}{{ gateway.antennaType }} -

-

- {{ "LORA-GATEWAY-TABLE.STATUS" | translate }}{{ "GATEWAY.STATUS." + gateway.status | translate }} -

-

- {{ "LORA-GATEWAY-TABLE.RESPONSIBLE-NAME" | translate }}{{ gateway.gatewayResponsibleName }} -

-

- {{ "LORA-GATEWAY-TABLE.RESPONSIBLE-EMAIL" | translate }}{{ gateway.gatewayResponsibleEmail }} -

-

- {{ "LORA-GATEWAY-TABLE.RESPONSIBLE-PHONE-NUMBER" | translate }}{{ gateway.gatewayResponsiblePhoneNumber }} -

-

- {{ "LORA-GATEWAY-TABLE.OPERATIONAL-NAME" | translate }}{{ gateway.operationalResponsibleName }} -

-

- {{ "LORA-GATEWAY-TABLE.OPERATIONAL-EMAIL" | translate }}{{ gateway.operationalResponsibleEmail }} -

-

- {{ "GATEWAY.DESCRIPTION" | translate }} -

-

{{gateway.description}}

+@if (gateway) { +
+ +
+
+
+
+

{{ "GATEWAY.DETAILS" | translate }}

+

+ {{ "GATEWAY.ID" | translate }}{{ gateway.gatewayId }} +

+

+ {{ "GATEWAY.ORGANIZATION" | translate }}{{ gateway.organizationName }} +

+ +

+ {{ "GATEWAY.TAGS" | translate }}{{ gateway.tagsString }} +

+ @if (gateway.placement) { +

+ {{ "LORA-GATEWAY-TABLE.PLACEMENT" | translate }}{{ "GATEWAY.PLACEMENT." + gateway.placement | translate }} +

+ } @if (gateway.modelName) { +

+ {{ "LORA-GATEWAY-TABLE.MODEL-NAME" | translate }}{{ gateway.modelName }} +

+ } @if (gateway.antennaType) { +

+ {{ "LORA-GATEWAY-TABLE.ANTENNA-TYPE" | translate }}{{ gateway.antennaType }} +

+ } @if (gateway.status) { +

+ {{ "LORA-GATEWAY-TABLE.STATUS" | translate }}{{ "GATEWAY.STATUS." + gateway.status | translate }} +

+ } @if (gateway.gatewayResponsibleName) { +

+ {{ "LORA-GATEWAY-TABLE.RESPONSIBLE-NAME" | translate }}{{ gateway.gatewayResponsibleName }} +

+ } @if (gateway.gatewayResponsibleEmail) { +

+ {{ "LORA-GATEWAY-TABLE.RESPONSIBLE-EMAIL" | translate }}{{ gateway.gatewayResponsibleEmail }} +

+ } @if (gateway.gatewayResponsiblePhoneNumber) { +

+ {{ "LORA-GATEWAY-TABLE.RESPONSIBLE-PHONE-NUMBER" | translate }}{{ gateway.gatewayResponsiblePhoneNumber }} +

+ } @if (gateway.operationalResponsibleName) { +

+ {{ "LORA-GATEWAY-TABLE.OPERATIONAL-NAME" | translate }}{{ gateway.operationalResponsibleName }} +

+ } @if (gateway.operationalResponsibleEmail) { +

+ {{ "LORA-GATEWAY-TABLE.OPERATIONAL-EMAIL" | translate }}{{ gateway.operationalResponsibleEmail }} +

+ } @if (gateway.description) { +

+ {{ "GATEWAY.DESCRIPTION" | translate }} +

+ } +

{{ gateway.description }}

+
-
-
-
-
-

{{ "GATEWAY.LOCATION" | translate }}

-
- -
-
-
-

- {{ "GATEWAY.LATITUDE" | translate }} - {{ gateway.location.latitude | number : "2.1-9" }} -

-
-
-

- {{ "GATEWAY.LONGITUDE" | translate }} - {{ gateway.location?.longitude | number : "2.1-9" }} -

+
+
+ @if (gateway.location) { +
+

{{ "GATEWAY.LOCATION" | translate }}

+
+ +
+
+
+

+ {{ "GATEWAY.LATITUDE" | translate }} + {{ gateway.location.latitude | number : "2.1-9" }} +

+
+
+

+ {{ "GATEWAY.LONGITUDE" | translate }} + {{ gateway.location?.longitude | number : "2.1-9" }} +

+
+
+

+ {{ "GATEWAY.ALTITUDE" | translate }} + {{ gateway.location.altitude | number : "2.1-9" }} +

+
+
-
-

- {{ "GATEWAY.ALTITUDE" | translate }} - {{ gateway.location.altitude | number : "2.1-9" }} -

-
-
-
- + } @else {

{{ "GATEWAY.NOLOCATION" | translate }}

-
+ } +
-
+}

{{ "GATEWAY.DATA-PACKETS" | translate }}

-
- -
+ @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ }
- +
- - + - - + + - - + + - - + +
+ {{ "GATEWAY.STATS-RXPACKETSRECEIVED" | translate }} {{ element.rxPacketsReceived }}{{ element.rxPacketsReceived }} {{ "GATEWAY.STATS-TXPACKETSEMITTED" | translate }}{{ element.txPacketsEmitted }}{{ "GATEWAY.STATS-TXPACKETSEMITTED" | translate }}{{ element.txPacketsEmitted }} {{ "GATEWAY.STATS-TIMESTAMP" | translate }}{{ element.timestamp | date }}{{ "GATEWAY.STATS-TIMESTAMP" | translate }}{{ element.timestamp | date }}
(); @ViewChild(MatPaginator) paginator: MatPaginator; public resultLength = 0; - public gatewaySubscription: Subscription; public gateway: Gateway; public backButton: BackButton = { label: "", routerLink: "/gateways/list" }; gatewayId: string; - - private deleteDialogSubscription: Subscription; public dropdownButton: DropdownButton; isLoadingResults = true; canEdit: boolean; isGatewayStatusVisibleSubject = new Subject(); receivedGraphData: ChartConfiguration["data"] = { datasets: [] }; sentGraphData: ChartConfiguration["data"] = { datasets: [] }; + private gatewayStats: GatewayStats[]; + private deleteDialogSubscription: Subscription; constructor( private gatewayService: ChirpstackGatewayService, @@ -143,6 +142,38 @@ export class GatewayDetailComponent implements OnInit, OnDestroy, AfterViewInit }); } + onDeleteGateway() { + this.deleteDialogSubscription = this.deleteDialogService.showSimpleDialog().subscribe(response => { + if (response) { + this.gatewayService.delete(this.gateway.gatewayId).subscribe(response => { + if (response.ok && response.body.success === true) { + this.router.navigate(["gateways"]); + } + }); + } else { + console.log(response); + } + }); + } + + onOpenChangeOrganizationDialog() { + this.changeOrganizationDialog.open(GatewayChangeOrganizationDialogComponent, { + data: { + gatewayDbId: this.gateway.id, + organizationId: this.gateway.organizationId, + } as GatewayDialogModel, + }); + } + + ngOnDestroy() { + if (this.gatewaySubscription) { + this.gatewaySubscription.unsubscribe(); + } + if (this.deleteDialogSubscription) { + this.deleteDialogSubscription.unsubscribe(); + } + } + private buildGraphs() { const { receivedDatasets, sentDatasets, labels } = this.gatewayStats .slice() @@ -186,36 +217,4 @@ export class GatewayDetailComponent implements OnInit, OnDestroy, AfterViewInit this.receivedGraphData = { datasets: receivedDatasets, labels }; this.sentGraphData = { datasets: sentDatasets, labels }; } - - onDeleteGateway() { - this.deleteDialogSubscription = this.deleteDialogService.showSimpleDialog().subscribe(response => { - if (response) { - this.gatewayService.delete(this.gateway.gatewayId).subscribe(response => { - if (response.ok && response.body.success === true) { - this.router.navigate(["gateways"]); - } - }); - } else { - console.log(response); - } - }); - } - - onOpenChangeOrganizationDialog() { - this.changeOrganizationDialog.open(GatewayChangeOrganizationDialogComponent, { - data: { - gatewayDbId: this.gateway.id, - organizationId: this.gateway.organizationId, - } as GatewayDialogModel, - }); - } - - ngOnDestroy() { - if (this.gatewaySubscription) { - this.gatewaySubscription.unsubscribe(); - } - if (this.deleteDialogSubscription) { - this.deleteDialogSubscription.unsubscribe(); - } - } } diff --git a/src/app/gateway/gateway-edit/gateway-edit.component.html b/src/app/gateway/gateway-edit/gateway-edit.component.html index 06f63da0f..efe9de0f8 100644 --- a/src/app/gateway/gateway-edit/gateway-edit.component.html +++ b/src/app/gateway/gateway-edit/gateway-edit.component.html @@ -1,47 +1,51 @@
-
-
    -
  • - {{ error | translate }} -
  • -
-
+ @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ }
*
@@ -49,28 +53,30 @@ *
-
- -
+ @if (gateway.location) { +
+ +
+ }

{{ "DBLCLICKINFO" | translate }}

@@ -81,343 +87,355 @@
- - {{ placementOption.label }} - + @for (placementOption of placements; track placementOption) { + + {{ placementOption.label }} + + }

{{ "QUESTION.METADATA" | translate }}

- - {{ statusOption.label }} - + @for (statusOption of statuses; track statusOption) { + + {{ statusOption.label }} + + }

{{ "QUESTION-LORA-GATEWAY.CONTACT" | translate }}

+ "QUESTION-LORA-GATEWAY.GATEWAY-RESPONSIBLE" | translate + }}
+ "QUESTION-LORA-GATEWAY.GATEWAY-RESPONSIBLE-CONTACT" | translate + }}
+ "QUESTION-LORA-GATEWAY.GATEWAY-RESPONSIBLE-CONTACT-NUMBER" | translate + }}
+ "QUESTION-LORA-GATEWAY.OPERATION-RESPONSIBLE" | translate + }}
+ "QUESTION-LORA-GATEWAY.OPERATION-RESPONSIBLE-CONTACT" | translate + }}

{{ "QUESTION-LORA-GATEWAY.ALARMS" | translate }}

- - {{ "GEN.OFFLINE" | translate }} + {{ "GEN.OFFLINE" | translate }} +
-
-
- -
- -
- - + +
+
+ + + class="form-control" + id="offlineAlarmThresholdMinutes" + maxlength="9" + name="offlineAlarmThresholdMinutes" + step="1" + type="number" + /> +
-
+ }
- {{ "QUESTION-LORA-GATEWAY.UNUSUAL-PACKAGES" | translate }}
-
-
- -
-
-
- - + +
+
+
+ + -
-
- - +
+
+ + + class="form-control" + id="maximumPackages" + maxlength="9" + name="maximumPackages" + required + step="1" + type="number" + /> +
-
-
- - + + -
+ [placeholder]="'USERS.EMAIL' | translate" + class="form-control" + id="alarmMail" + name="alarmMail" + type="text" + /> +
+ }
- +
diff --git a/src/app/gateway/gateway-edit/gateway-edit.component.ts b/src/app/gateway/gateway-edit/gateway-edit.component.ts index 6fbe19088..7768dbfd4 100644 --- a/src/app/gateway/gateway-edit/gateway-edit.component.ts +++ b/src/app/gateway/gateway-edit/gateway-edit.component.ts @@ -24,6 +24,7 @@ interface DropdownOption { selector: "app-gateway-edit", templateUrl: "./gateway-edit.component.html", styleUrls: ["./gateway-edit.component.scss"], + standalone: false, }) export class GatewayEditComponent implements OnInit, OnDestroy { public backButton: BackButton = { label: "", routerLink: ["gateways"] }; @@ -36,12 +37,10 @@ export class GatewayEditComponent implements OnInit, OnDestroy { public errorFields: string[]; public formFailedSubmit = false; public editMode = false; - private gatewayId: string; - gateway = new Gateway(); - placements: DropdownOption[] = []; statuses: DropdownOption[] = []; + private gatewayId: string; constructor( private route: ActivatedRoute, @@ -103,29 +102,29 @@ export class GatewayEditComponent implements OnInit, OnDestroy { createGateway(): void { this.gateway.gatewayId = this.gateway.gatewayId?.replace(/[^0-9A-Fa-f]/g, ""); - this.loraGatewayService.post(this.gateway).subscribe( - response => { + this.loraGatewayService.post(this.gateway).subscribe({ + next: () => { this.routeBack(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.showError(error); this.formFailedSubmit = true; - } - ); + }, + }); } updateGateway(): void { // Gateway ID not allowed in update. this.gateway.gatewayId = undefined; - this.loraGatewayService.put(this.gateway, this.gatewayId).subscribe( - response => { + this.loraGatewayService.put(this.gateway, this.gatewayId).subscribe({ + next: () => { this.routeBack(); }, - error => { + error: error => { this.showError(error); this.formFailedSubmit = true; - } - ); + }, + }); } onSubmit(): void { diff --git a/src/app/gateway/gateway-overview/gateway-overview.component.html b/src/app/gateway/gateway-overview/gateway-overview.component.html index d226b87d6..2456e6016 100644 --- a/src/app/gateway/gateway-overview/gateway-overview.component.html +++ b/src/app/gateway/gateway-overview/gateway-overview.component.html @@ -1,32 +1,33 @@
- diff --git a/src/app/gateway/gateway-overview/gateway-overview.component.ts b/src/app/gateway/gateway-overview/gateway-overview.component.ts index 75b1dbabf..a7790bb7d 100644 --- a/src/app/gateway/gateway-overview/gateway-overview.component.ts +++ b/src/app/gateway/gateway-overview/gateway-overview.component.ts @@ -15,6 +15,7 @@ import { NavigationEnd, Router } from "@angular/router"; selector: "app-gateway-list", templateUrl: "./gateway-overview.component.html", styleUrls: ["./gateway-overview.component.scss"], + standalone: false, }) export class GatewayOverviewComponent implements OnInit, OnChanges, OnDestroy { public navTabs: any[] = [ @@ -35,13 +36,11 @@ export class GatewayOverviewComponent implements OnInit, OnChanges, OnDestroy { }, ]; public pageLimit = environment.tablePageSize; - private gatewaySubscription: Subscription; - organisations: Organisation[]; - + canEdit: boolean; + private gatewaySubscription: Subscription; private deleteDialogSubscription: Subscription; private routerSubscription: Subscription; - canEdit: boolean; constructor( public translate: TranslateService, diff --git a/src/app/gateway/gateway-overview/gateway-tabs/gateway-list/gateway-list.component.html b/src/app/gateway/gateway-overview/gateway-tabs/gateway-list/gateway-list.component.html index 6e85a45b0..ac4fe22ba 100644 --- a/src/app/gateway/gateway-overview/gateway-tabs/gateway-list/gateway-list.component.html +++ b/src/app/gateway/gateway-overview/gateway-tabs/gateway-list/gateway-list.component.html @@ -1,3 +1,3 @@
- +
diff --git a/src/app/gateway/gateway-overview/gateway-tabs/gateway-list/gateway-list.component.ts b/src/app/gateway/gateway-overview/gateway-tabs/gateway-list/gateway-list.component.ts index 857538eac..ec1752346 100644 --- a/src/app/gateway/gateway-overview/gateway-tabs/gateway-list/gateway-list.component.ts +++ b/src/app/gateway/gateway-overview/gateway-tabs/gateway-list/gateway-list.component.ts @@ -5,6 +5,7 @@ import { GatewayService } from "@app/gateway/gateway.service"; selector: "app-gateway-list", templateUrl: "./gateway-list.component.html", styleUrls: ["./gateway-list.component.scss"], + standalone: false, }) export class GatewayListComponent implements AfterViewInit { constructor(public gatewayService: GatewayService) {} diff --git a/src/app/gateway/gateway-overview/gateway-tabs/gateway-map/gateway-map.component.html b/src/app/gateway/gateway-overview/gateway-tabs/gateway-map/gateway-map.component.html index d6bcb40ca..eb61f339e 100644 --- a/src/app/gateway/gateway-overview/gateway-tabs/gateway-map/gateway-map.component.html +++ b/src/app/gateway/gateway-overview/gateway-tabs/gateway-map/gateway-map.component.html @@ -1,3 +1,5 @@ -
- -
+@if (gateways) { +
+ +
+} diff --git a/src/app/gateway/gateway-overview/gateway-tabs/gateway-map/gateway-map.component.ts b/src/app/gateway/gateway-overview/gateway-tabs/gateway-map/gateway-map.component.ts index fab2e0f39..18e17f82d 100644 --- a/src/app/gateway/gateway-overview/gateway-tabs/gateway-map/gateway-map.component.ts +++ b/src/app/gateway/gateway-overview/gateway-tabs/gateway-map/gateway-map.component.ts @@ -10,6 +10,7 @@ import { MeService } from "@shared/services/me.service"; selector: "app-gateway-map", templateUrl: "./gateway-map.component.html", styleUrls: ["./gateway-map.component.scss"], + standalone: false, }) export class GatewayMapComponent implements OnInit, OnDestroy, AfterViewInit { public gateways: Gateway[]; diff --git a/src/app/gateway/gateway-overview/gateway-tabs/gateway-status-overview/gateway-status-overview.component.html b/src/app/gateway/gateway-overview/gateway-tabs/gateway-status-overview/gateway-status-overview.component.html index 67810cae5..23b7431e3 100644 --- a/src/app/gateway/gateway-overview/gateway-tabs/gateway-status-overview/gateway-status-overview.component.html +++ b/src/app/gateway/gateway-overview/gateway-tabs/gateway-status-overview/gateway-status-overview.component.html @@ -1,6 +1,6 @@
diff --git a/src/app/gateway/gateway-overview/gateway-tabs/gateway-status-overview/gateway-status-overview.component.ts b/src/app/gateway/gateway-overview/gateway-tabs/gateway-status-overview/gateway-status-overview.component.ts index 5bd14b942..02040306a 100644 --- a/src/app/gateway/gateway-overview/gateway-tabs/gateway-status-overview/gateway-status-overview.component.ts +++ b/src/app/gateway/gateway-overview/gateway-tabs/gateway-status-overview/gateway-status-overview.component.ts @@ -1,10 +1,11 @@ -import { AfterContentInit, AfterViewChecked, AfterViewInit, Component } from "@angular/core"; +import { AfterViewInit, Component } from "@angular/core"; import { GatewayService } from "@app/gateway/gateway.service"; @Component({ selector: "app-gateway-status-overview", templateUrl: "./gateway-status-overview.component.html", styleUrls: ["./gateway-status-overview.component.scss"], + standalone: false, }) export class GatewayStatusOverviewComponent implements AfterViewInit { constructor(public gatewayService: GatewayService) {} diff --git a/src/app/gateway/gateway-status/gateway-status.component.html b/src/app/gateway/gateway-status/gateway-status.component.html index 294aa0a0a..be2723112 100644 --- a/src/app/gateway/gateway-status/gateway-status.component.html +++ b/src/app/gateway/gateway-status/gateway-status.component.html @@ -1,83 +1,90 @@ - - -

{{ "GEN.NO-DATA" | translate }}

-
-
-
-

{{ title }}

- - - {{ "LORA-GATEWAY-STATUS.INTERVAL." + interval | translate }} - + @if (title) { +

{{ title }}

+ } + + @for (interval of statusIntervals; track interval) { + + {{ "LORA-GATEWAY-STATUS.INTERVAL." + interval | translate }} + + }
-
- -
+ @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ } @if (dataSource?.data.length && timeColumns.length) { - - - - - - - - - + [ngClass]="gateway.statusTimestamps | gatewayStatusClass : time.exactTimestamp" + mat-cell + > + + + } - - + +
- + + @if (shouldLinkToDetails) { + {{ element.name }} - {{ element.name }} + > + } @if (!shouldLinkToDetails) { + {{ element.name }} + } + {{ "GEN.DATE" | translate }} -
+
{{ "LORA-GATEWAY-STATUS.TIMESTAMP" | translate }}
+ - {{ time.datePart }} -
- {{ time.timePart }} -
+ {{ time.datePart }} +
+ {{ time.timePart }} +
+} @else { + @if (!isLoadingResults) { +

{{ "GEN.NO-DATA" | translate }}

+ } +}
diff --git a/src/app/gateway/gateway-status/gateway-status.component.scss b/src/app/gateway/gateway-status/gateway-status.component.scss index 55a6c8ee7..e4650538b 100644 --- a/src/app/gateway/gateway-status/gateway-status.component.scss +++ b/src/app/gateway/gateway-status/gateway-status.component.scss @@ -12,9 +12,11 @@ $cellFontSize: 0.9rem; .online { background-color: $online; } + .offline { background-color: $offline; } + .never-seen { background-color: $neverSeen; } @@ -26,6 +28,7 @@ $cellFontSize: 0.9rem; > td { font-size: $cellFontSize; + &:hover { transition: $transition-short; filter: brightness(0.65); @@ -71,9 +74,11 @@ $cellFontSize: 0.9rem; &.online { background-color: $online; } + &.offline { background-color: $offline; } + &.never-seen { background-color: $neverSeen; } diff --git a/src/app/gateway/gateway-status/gateway-status.component.ts b/src/app/gateway/gateway-status/gateway-status.component.ts index 9a03e44b9..b55db2c1d 100644 --- a/src/app/gateway/gateway-status/gateway-status.component.ts +++ b/src/app/gateway/gateway-status/gateway-status.component.ts @@ -9,7 +9,7 @@ import { LoRaWANGatewayService } from "@shared/services/lorawan-gateway.service" import moment from "moment"; import { Observable, Subject, Subscription } from "rxjs"; import { GatewayStatusInterval, gatewayStatusIntervalToDate } from "../enums/gateway-status-interval.enum"; -import { GatewayStatus, AllGatewayStatusResponse } from "../gateway.model"; +import { AllGatewayStatusResponse, GatewayStatus } from "../gateway.model"; import { map } from "rxjs/operators"; import { DefaultPageSizeOptions } from "@shared/constants/page.constants"; @@ -24,6 +24,7 @@ interface TimeColumn { selector: "app-gateway-status", templateUrl: "./gateway-status.component.html", styleUrls: ["./gateway-status.component.scss"], + standalone: false, }) export class GatewayStatusComponent implements AfterContentInit, OnDestroy { @Input() organisationChangeSubject: Subject; @@ -32,9 +33,6 @@ export class GatewayStatusComponent implements AfterContentInit, OnDestroy { @Input() title: string; @Input() gatewayId: string; @Input() shouldLinkToDetails = true; - - private gatewayStatusSubscription: Subscription; - private readonly columnGatewayName = "gatewayName"; dataSource: MatTableDataSource; /** * List of pre-processed timestamps for performance @@ -56,8 +54,9 @@ export class GatewayStatusComponent implements AfterContentInit, OnDestroy { isDirty = true; statusIntervals: GatewayStatusInterval[]; selectedStatusInterval = GatewayStatusInterval.DAY; - @ViewChild(MatPaginator) paginator: MatPaginator; + private gatewayStatusSubscription: Subscription; + private readonly columnGatewayName = "gatewayName"; constructor(private translate: TranslateService, private lorawanGatewayService: LoRaWANGatewayService) {} @@ -87,6 +86,17 @@ export class GatewayStatusComponent implements AfterContentInit, OnDestroy { this.statusIntervals = recordToEntries(GatewayStatusInterval).map(interval => interval.value); } + onSelectInterval({ isUserInput, source: { value: newInterval } }: MatOptionSelectionChange) { + if (isUserInput && newInterval !== this.selectedStatusInterval && !this.isLoadingResults) { + this.subscribeToGetAllGatewayStatus(this.organizationId, newInterval); + } + } + + ngOnDestroy() { + // prevent memory leak by unsubscribing + this.gatewayStatusSubscription?.unsubscribe(); + } + private getGatewayStatus( organizationId = this.organizationId, timeInterval = this.selectedStatusInterval @@ -219,15 +229,4 @@ export class GatewayStatusComponent implements AfterContentInit, OnDestroy { private clamp(value: number, min: number, max: number) { return Math.max(min, Math.min(max, value)); } - - onSelectInterval({ isUserInput, source: { value: newInterval } }: MatOptionSelectionChange) { - if (isUserInput && newInterval !== this.selectedStatusInterval && !this.isLoadingResults) { - this.subscribeToGetAllGatewayStatus(this.organizationId, newInterval); - } - } - - ngOnDestroy() { - // prevent memory leak by unsubscribing - this.gatewayStatusSubscription?.unsubscribe(); - } } diff --git a/src/app/gateway/gateway-table/gateway-table.component.html b/src/app/gateway/gateway-table/gateway-table.component.html index b46705741..abbac1b53 100644 --- a/src/app/gateway/gateway-table/gateway-table.component.html +++ b/src/app/gateway/gateway-table/gateway-table.component.html @@ -4,10 +4,14 @@ [localStorageKey]="gatewayTableSavedColumns" > -
-
- -
+
+ @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ } diff --git a/src/app/gateway/gateway-table/gateway-table.component.ts b/src/app/gateway/gateway-table/gateway-table.component.ts index bb625e369..db725134e 100644 --- a/src/app/gateway/gateway-table/gateway-table.component.ts +++ b/src/app/gateway/gateway-table/gateway-table.component.ts @@ -125,6 +125,7 @@ const columnDefinitions: TableColumn[] = [ templateUrl: "./gateway-table.component.html", styleUrls: ["./gateway-table.component.scss"], encapsulation: ViewEncapsulation.None, + standalone: false, }) export class GatewayTableComponent implements AfterViewInit, OnDestroy, OnInit { @Input() organisationChangeSubject: Subject; @@ -136,7 +137,7 @@ export class GatewayTableComponent implements AfterViewInit, OnDestroy, OnInit { faExclamationTriangle = faExclamationTriangle; faCheckCircle = faCheckCircle; - refetchIntervalId: NodeJS.Timeout; + refetchIntervalId: ReturnType; resultsLength = 0; isLoadingResults = true; gatewayTableSavedColumns = "gatewayTableSavedColumns"; diff --git a/src/app/gateway/gateway.module.ts b/src/app/gateway/gateway.module.ts index c5860b78a..0e04de527 100644 --- a/src/app/gateway/gateway.module.ts +++ b/src/app/gateway/gateway.module.ts @@ -4,7 +4,7 @@ import { FormsModule } from "@angular/forms"; import { RouterModule, Routes } from "@angular/router"; import { GraphModule } from "@app/graph/graph.module"; import { FontAwesomeModule } from "@fortawesome/angular-fontawesome"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslatePipe } from "@ngx-translate/core"; import { NGMaterialModule } from "@shared/Modules/materiale.module"; import { FormModule } from "@shared/components/forms/form.module"; import { TableSortIconComponent } from "@shared/components/table-sort-icon/table-sort-icon.component"; @@ -58,7 +58,7 @@ const gatewayRoutes: Routes = [ imports: [ CommonModule, RouterModule, - TranslateModule, + TranslatePipe, FormModule, FormsModule, FontAwesomeModule, diff --git a/src/app/gateway/gateways/gateways.component.ts b/src/app/gateway/gateways/gateways.component.ts index d6f54abdb..1ebefcb10 100644 --- a/src/app/gateway/gateways/gateways.component.ts +++ b/src/app/gateway/gateways/gateways.component.ts @@ -4,6 +4,7 @@ import { Component, OnInit } from "@angular/core"; selector: "app-gateways", templateUrl: "./gateways.component.html", styleUrls: ["./gateways.component.scss"], + standalone: false, }) export class GatewaysComponent implements OnInit { constructor() {} diff --git a/src/app/graph/graph.component.html b/src/app/graph/graph.component.html index 49c3418e4..3dcf41a96 100644 --- a/src/app/graph/graph.component.html +++ b/src/app/graph/graph.component.html @@ -1,13 +1,17 @@ - - - - {{ title }} - - + + @if (title) { + + + {{ title }} + + + } -
- {{ "GEN.NO-DATA" | translate }} -
+ @if (isGraphEmpty) { +
+ {{ "GEN.NO-DATA" | translate }} +
+ }
diff --git a/src/app/graph/graph.component.ts b/src/app/graph/graph.component.ts index 7e3d5860d..cdde40e36 100644 --- a/src/app/graph/graph.component.ts +++ b/src/app/graph/graph.component.ts @@ -7,6 +7,7 @@ const canvasId = "someGraph"; selector: "app-graph", templateUrl: "./graph.component.html", styleUrls: ["./graph.component.scss"], + standalone: false, }) export class GraphComponent implements OnChanges { @Input() data: ChartConfiguration["data"]; diff --git a/src/app/graph/graph.module.ts b/src/app/graph/graph.module.ts index a301f6ca3..85b4b96a2 100644 --- a/src/app/graph/graph.module.ts +++ b/src/app/graph/graph.module.ts @@ -1,6 +1,6 @@ import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslatePipe } from "@ngx-translate/core"; import { NGMaterialModule } from "@shared/Modules/materiale.module"; import { Chart, registerables } from "chart.js"; import { GraphComponent } from "./graph.component"; @@ -10,7 +10,7 @@ Chart.register(...registerables); @NgModule({ declarations: [GraphComponent], - imports: [CommonModule, NGMaterialModule, TranslateModule], + imports: [CommonModule, NGMaterialModule, TranslatePipe], exports: [GraphComponent], }) export class GraphModule {} diff --git a/src/app/navbar/administration/administration.component.html b/src/app/navbar/administration/administration.component.html index 8270c6e27..bf436828f 100644 --- a/src/app/navbar/administration/administration.component.html +++ b/src/app/navbar/administration/administration.component.html @@ -1,22 +1,24 @@ -@if(isGlobalAdmin || isUserAdmin){ +@if (isGlobalAdmin || isUserAdmin) { - + - + } diff --git a/src/app/navbar/administration/administration.component.ts b/src/app/navbar/administration/administration.component.ts index 676ae0de3..be24c3b6e 100644 --- a/src/app/navbar/administration/administration.component.ts +++ b/src/app/navbar/administration/administration.component.ts @@ -8,6 +8,7 @@ import { SharedVariableService } from "@shared/shared-variable/shared-variable.s selector: "app-administration", templateUrl: "./administration.component.html", styleUrls: ["./administration.component.scss"], + standalone: false, }) export class AdministrationComponent implements OnInit { public user: UserResponse; diff --git a/src/app/navbar/navbar.component.html b/src/app/navbar/navbar.component.html index d8ee8d098..3d5095a6d 100644 --- a/src/app/navbar/navbar.component.html +++ b/src/app/navbar/navbar.component.html @@ -1,132 +1,136 @@ - - -
- -
+ + +
+ +
diff --git a/src/app/navbar/navbar.component.ts b/src/app/navbar/navbar.component.ts index 0a6c197d4..4c0e16594 100644 --- a/src/app/navbar/navbar.component.ts +++ b/src/app/navbar/navbar.component.ts @@ -16,6 +16,7 @@ import { UserResponse } from "./../admin/users/user.model"; selector: "app-navbar", templateUrl: "./navbar.component.html", styleUrls: ["./navbar.component.scss"], + standalone: false, }) export class NavbarComponent implements OnInit { public organisations: Organisation[]; @@ -32,6 +33,7 @@ export class NavbarComponent implements OnInit { userInfo: CurrentUserInfoResponse; faSignInAlt = faSignInAlt; imagePath = "../../assets/images/os2iot.png "; + @Output() navToggle = new EventEmitter(); constructor( private authService: AuthService, @@ -51,8 +53,6 @@ export class NavbarComponent implements OnInit { translate.use("da"); } - @Output() navToggle = new EventEmitter(); - isLoggedIn() { return this.authService.isLoggedIn(); } diff --git a/src/app/navbar/navbar.module.ts b/src/app/navbar/navbar.module.ts index 73aab4abd..7de3e0246 100644 --- a/src/app/navbar/navbar.module.ts +++ b/src/app/navbar/navbar.module.ts @@ -11,7 +11,7 @@ import { SharedModule } from "../shared/shared.module"; import { MatIconModule } from "@angular/material/icon"; import { RouterModule } from "@angular/router"; import { FontAwesomeModule } from "@fortawesome/angular-fontawesome"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslatePipe } from "@ngx-translate/core"; import { NGMaterialModule } from "@shared/Modules/materiale.module"; import { InlineSVGModule } from "ng-inline-svg-2"; import { RestService } from "../shared/services/rest.service"; @@ -23,7 +23,7 @@ import { AdministrationComponent } from "./administration/administration.compone CommonModule, SharedModule, RouterModule, - TranslateModule, + TranslatePipe, FontAwesomeModule, NGMaterialModule, InlineSVGModule, diff --git a/src/app/navbar/organisation-dropdown/sigfox-dropdown/sigfox-dropdown.component.html b/src/app/navbar/organisation-dropdown/sigfox-dropdown/sigfox-dropdown.component.html index f49b91d36..d564d4e92 100644 --- a/src/app/navbar/organisation-dropdown/sigfox-dropdown/sigfox-dropdown.component.html +++ b/src/app/navbar/organisation-dropdown/sigfox-dropdown/sigfox-dropdown.component.html @@ -7,14 +7,14 @@ - +
- - + @if (gatewayStatus(gateway)) { - - + } @else { - + } - + @if (gateway.canEdit) { + + + }
+
- - - - - + - - + +
{{ "IOT-TABLE.NAME" | translate }} - + @if (element.canRead) { + {{ element.name }} - - {{ element.name }} - + > + } @else { + {{ element.name }} + } + {{ "IOT-TABLE.ORGANISATION" | translate }} + {{ getOrganizationName(element.organizationId) }} + {{ "IOT-TABLE.ACTIVE" | translate }} {{ lastActive(element) }}{{ lastActive(element) }}
diff --git a/src/app/payload-decoder/payload-decoder-detail/iot-device-minimal-table/iot-device-minimal-table.component.ts b/src/app/payload-decoder/payload-decoder-detail/iot-device-minimal-table/iot-device-minimal-table.component.ts index 42f15bcb6..736b07ac6 100644 --- a/src/app/payload-decoder/payload-decoder-detail/iot-device-minimal-table/iot-device-minimal-table.component.ts +++ b/src/app/payload-decoder/payload-decoder-detail/iot-device-minimal-table/iot-device-minimal-table.component.ts @@ -6,7 +6,7 @@ import { IoTDeviceService } from "@applications/iot-devices/iot-device.service"; import { PayloadDecoder } from "@payload-decoder/payload-decoder.model"; import { SharedVariableService } from "@shared/shared-variable/shared-variable.service"; import { Observable, of as observableOf } from "rxjs"; -import { startWith, switchMap, map, catchError } from "rxjs/operators"; +import { catchError, map, startWith, switchMap } from "rxjs/operators"; import { TranslateService } from "@ngx-translate/core"; import { environment } from "@environments/environment"; import { DefaultPageSizeOptions } from "@shared/constants/page.constants"; @@ -15,6 +15,7 @@ import { DefaultPageSizeOptions } from "@shared/constants/page.constants"; selector: "app-iot-device-minimal-table", templateUrl: "./iot-device-minimal-table.component.html", styleUrls: ["./iot-device-minimal-table.component.scss"], + standalone: false, }) export class IoTDeviceMinimalTableComponent implements AfterViewInit { @Input() public payloadDecoder: PayloadDecoder; diff --git a/src/app/payload-decoder/payload-decoder-detail/payload-decoder-detail.component.html b/src/app/payload-decoder/payload-decoder-detail/payload-decoder-detail.component.html index 9e7b0287b..5b11b9331 100644 --- a/src/app/payload-decoder/payload-decoder-detail/payload-decoder-detail.component.html +++ b/src/app/payload-decoder/payload-decoder-detail/payload-decoder-detail.component.html @@ -1,16 +1,17 @@
- - -
+ @if (payloadDecoder) { + + + } @if (payloadDecoder) { +
@@ -28,10 +29,10 @@

{{ "PAYLOAD-DECODER.DETAILS" | translate }}

{{ "PAYLOAD-DECODER.DECODINGFUNCTION" | translate }}

@@ -46,4 +47,5 @@

{{ "PAYLOAD-DECODER.IOT-DEVICES" | translate }}

+}
diff --git a/src/app/payload-decoder/payload-decoder-detail/payload-decoder-detail.component.ts b/src/app/payload-decoder/payload-decoder-detail/payload-decoder-detail.component.ts index 46dc7a6c1..1c01daf55 100644 --- a/src/app/payload-decoder/payload-decoder-detail/payload-decoder-detail.component.ts +++ b/src/app/payload-decoder/payload-decoder-detail/payload-decoder-detail.component.ts @@ -1,10 +1,10 @@ -import { Component, OnInit, OnDestroy } from "@angular/core"; +import { Component, OnDestroy, OnInit } from "@angular/core"; import { TranslateService } from "@ngx-translate/core"; import { ActivatedRoute, Router } from "@angular/router"; import { Subscription } from "rxjs"; import { PayloadDecoderService } from "@app/payload-decoder/payload-decoder.service"; import { BackButton } from "@shared/models/back-button.model"; -import { PayloadDecoder, PayloadDecoderBodyResponse } from "@payload-decoder/payload-decoder.model"; +import { PayloadDecoder } from "@payload-decoder/payload-decoder.model"; import { MeService } from "@shared/services/me.service"; import { DropdownButton } from "@shared/models/dropdown-button.model"; import { DeleteDialogService } from "@shared/components/delete-dialog/delete-dialog.service"; @@ -14,6 +14,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-payload-decoder-detail", templateUrl: "./payload-decoder-detail.component.html", styleUrls: ["./payload-decoder-detail.component.scss"], + standalone: false, }) export class PayloadDecoderDetailComponent implements OnInit, OnDestroy { payloadDecoder: PayloadDecoder; @@ -62,20 +63,6 @@ export class PayloadDecoderDetailComponent implements OnInit, OnDestroy { }); } - private canEdit() { - this.payloadDecoder.canEdit = this.meService.hasAccessToTargetOrganization( - OrganizationAccessScope.ApplicationWrite, - this.payloadDecoder?.organizationId - ); - } - - private getPayloadDecoder(id: number) { - this.subscription = this.payloadDecoderService.getOne(id).subscribe(response => { - this.payloadDecoder = response; - this.canEdit(); - }); - } - onDeletePayload() { const id = this.payloadDecoder.id; this.deleteDialogSubscription = this.deleteDialogService.showSimpleDialog().subscribe(response => { @@ -104,4 +91,18 @@ export class PayloadDecoderDetailComponent implements OnInit, OnDestroy { this.deleteDialogSubscription.unsubscribe(); } } + + private canEdit() { + this.payloadDecoder.canEdit = this.meService.hasAccessToTargetOrganization( + OrganizationAccessScope.ApplicationWrite, + this.payloadDecoder?.organizationId + ); + } + + private getPayloadDecoder(id: number) { + this.subscription = this.payloadDecoderService.getOne(id).subscribe(response => { + this.payloadDecoder = response; + this.canEdit(); + }); + } } diff --git a/src/app/payload-decoder/payload-decoder-edit/payload-decoder-edit.component.html b/src/app/payload-decoder/payload-decoder-edit/payload-decoder-edit.component.html index 7fe44aa1b..9e6845406 100644 --- a/src/app/payload-decoder/payload-decoder-edit/payload-decoder-edit.component.html +++ b/src/app/payload-decoder/payload-decoder-edit/payload-decoder-edit.component.html @@ -1,14 +1,18 @@
-
-
-
    -
  • - {{ error | translate }} -
  • -
+ @if (errorMessages) { +
+
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
-
+ }
@@ -36,18 +40,22 @@ {{ "QUESTION.GIVE-PAYLOADDECODER-CHOOSE-APPLICATION" | translate }} - - {{ applicationEl.name }} - + @for (applicationEl of applications; track applicationEl) { + + {{ applicationEl.name }} + + }
{{ "QUESTION.GIVE-PAYLOADDECODER-CHOOSE-DEVICE" | translate }} - - {{ iotDeviceEl.name }} - + @for (iotDeviceEl of iotDevices; track iotDeviceEl) { + + {{ iotDeviceEl.name }} + + }
@@ -102,7 +110,7 @@
-
{{ "QUESTION.GIVE-PAYLOADDECODER-TESTBUTTON" | translate }}
+
{{ "QUESTION.GIVE-PAYLOADDECODER-TESTBUTTON" | translate }}
@@ -127,7 +135,7 @@ - +
diff --git a/src/app/payload-decoder/payload-decoder-edit/payload-decoder-edit.component.ts b/src/app/payload-decoder/payload-decoder-edit/payload-decoder-edit.component.ts index bb48db176..b33fa6294 100644 --- a/src/app/payload-decoder/payload-decoder-edit/payload-decoder-edit.component.ts +++ b/src/app/payload-decoder/payload-decoder-edit/payload-decoder-edit.component.ts @@ -28,6 +28,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-payload-decoder-edit", templateUrl: "./payload-decoder-edit.component.html", styleUrls: ["./payload-decoder-edit.component.scss"], + standalone: false, }) export class PayloadDecoderEditComponent implements OnInit { faExchangeAlt = faExchangeAlt; @@ -146,13 +147,6 @@ export class PayloadDecoderEditComponent implements OnInit { } } - private getPayloadDecoder(id: number) { - this.subscription = this.payloadDecoderService.getOne(id).subscribe(response => { - this.payloadDecoder = response; - this.payloadDecoderBody = response.decodingFunction; - }); - } - testPayloadFunction() { this.errorMessages = null; this.testPayloadDecoder.code = this.payloadDecoderBody; @@ -178,18 +172,14 @@ export class PayloadDecoderEditComponent implements OnInit { return; } - this.testPayloadDecoderService.post(this.testPayloadDecoder).subscribe( - response => { + this.testPayloadDecoderService.post(this.testPayloadDecoder).subscribe({ + next: response => { this.codeOutput = JSON.stringify(response, null, 4); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.showError(error); - } - ); - } - - private isMetadataDefaultOrEmpty() { - return this.metadata.trim() === "" || this.metadata.split("\n").every(x => x.trim().startsWith("//")); + }, + }); } getCurrentOrganisationId(): number { @@ -256,37 +246,52 @@ export class PayloadDecoderEditComponent implements OnInit { this.saveSnackService.showSavedSnack(); } + onSubmit(): void { + this.payloadDecoder.decodingFunction = this.payloadDecoderBody; + if (this.payloadDecoder.id) { + this.update(); + } else { + this.create(); + } + } + + routeBack(): void { + this.location.back(); + } + + private getPayloadDecoder(id: number) { + this.subscription = this.payloadDecoderService.getOne(id).subscribe(response => { + this.payloadDecoder = response; + this.payloadDecoderBody = response.decodingFunction; + }); + } + + private isMetadataDefaultOrEmpty() { + return this.metadata.trim() === "" || this.metadata.split("\n").every(x => x.trim().startsWith("//")); + } + private create(): void { - this.payloadDecoderService.post(this.payloadDecoder).subscribe( - response => { + this.payloadDecoderService.post(this.payloadDecoder).subscribe({ + next: () => { this.routeBack(); this.showSavedSnack(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.showError(error); - } - ); + }, + }); } private update(): void { - this.payloadDecoderService.put(this.payloadDecoder, this.id).subscribe( - response => { + this.payloadDecoderService.put(this.payloadDecoder, this.id).subscribe({ + next: () => { this.routeBack(); this.showSavedSnack(); }, - error => { + error: error => { this.showError(error); - } - ); - } - - onSubmit(): void { - this.payloadDecoder.decodingFunction = this.payloadDecoderBody; - if (this.payloadDecoder.id) { - this.update(); - } else { - this.create(); - } + }, + }); } private showError(error: HttpErrorResponse) { @@ -296,8 +301,4 @@ export class PayloadDecoderEditComponent implements OnInit { this.formFailedSubmit = true; this.scrollToTopService.scrollToTop(); } - - routeBack(): void { - this.location.back(); - } } diff --git a/src/app/payload-decoder/payload-decoder-list/payload-decoder-list.component.html b/src/app/payload-decoder/payload-decoder-list/payload-decoder-list.component.html index 87a6d8afe..750d61d66 100644 --- a/src/app/payload-decoder/payload-decoder-list/payload-decoder-list.component.html +++ b/src/app/payload-decoder/payload-decoder-list/payload-decoder-list.component.html @@ -1,8 +1,8 @@
diff --git a/src/app/payload-decoder/payload-decoder-list/payload-decoder-list.component.ts b/src/app/payload-decoder/payload-decoder-list/payload-decoder-list.component.ts index c813f34ab..3fe0e3f9c 100644 --- a/src/app/payload-decoder/payload-decoder-list/payload-decoder-list.component.ts +++ b/src/app/payload-decoder/payload-decoder-list/payload-decoder-list.component.ts @@ -1,7 +1,6 @@ import { Component, OnInit } from "@angular/core"; import { Title } from "@angular/platform-browser"; import { TranslateService } from "@ngx-translate/core"; -import { Sort } from "@shared/models/sort.model"; import { MeService } from "@shared/services/me.service"; import { OrganizationAccessScope } from "@shared/enums/access-scopes"; @@ -9,6 +8,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-payload-decoder-list", templateUrl: "./payload-decoder-list.component.html", styleUrls: ["./payload-decoder-list.component.scss"], + standalone: false, }) export class PayloadDecoderListComponent implements OnInit { canEdit: boolean; diff --git a/src/app/payload-decoder/payload-decoder-list/payload-decoder-table/payload-decoder-table.component.html b/src/app/payload-decoder/payload-decoder-list/payload-decoder-table/payload-decoder-table.component.html index 11bd6c51c..e8375ac59 100644 --- a/src/app/payload-decoder/payload-decoder-list/payload-decoder-table/payload-decoder-table.component.html +++ b/src/app/payload-decoder/payload-decoder-list/payload-decoder-table/payload-decoder-table.component.html @@ -1,25 +1,29 @@
-
- -
- + @if (isLoadingResults) { +
+ @if (isLoadingResults) { + + } +
+ } +
- - @@ -27,60 +31,62 @@ - - - - - - - - + +
+ {{ "PAYLOAD-DECODER.NAME" | translate }} - + + {{ element.name }} + {{ "PAYLOAD-DECODER.ID" | translate }} + {{ element.id }} + {{ "PAYLOAD-DECODER.ORGANIZATION" | translate }} + {{ element.organizationName }} - + @if (getCanEdit(element.organizationId)) { + + + + + + }
diff --git a/src/app/payload-decoder/payload-decoder-list/payload-decoder-table/payload-decoder-table.component.ts b/src/app/payload-decoder/payload-decoder-list/payload-decoder-table/payload-decoder-table.component.ts index 35c650224..7472dd17d 100644 --- a/src/app/payload-decoder/payload-decoder-list/payload-decoder-table/payload-decoder-table.component.ts +++ b/src/app/payload-decoder/payload-decoder-list/payload-decoder-table/payload-decoder-table.component.ts @@ -1,8 +1,7 @@ -import { merge, of as observableOf } from "rxjs"; +import { merge, of as observableOf, Subscription } from "rxjs"; import { catchError, map, startWith, switchMap } from "rxjs/operators"; -import { Component, OnInit, OnDestroy, ViewChild, AfterViewInit } from "@angular/core"; +import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild } from "@angular/core"; import { PayloadDecoder } from "src/app/payload-decoder/payload-decoder.model"; -import { Subscription } from "rxjs"; import { PayloadDecoderService } from "@app/payload-decoder/payload-decoder.service"; import { MatPaginator } from "@angular/material/paginator"; import { MatSort } from "@angular/material/sort"; @@ -19,6 +18,7 @@ import { DefaultPageSizeOptions } from "@shared/constants/page.constants"; selector: "app-payload-decoder-table", templateUrl: "./payload-decoder-table.component.html", styleUrls: ["./payload-decoder-table.component.scss"], + standalone: false, }) export class PayloadDecoderTableComponent implements OnInit, AfterViewInit, OnDestroy { @ViewChild(MatPaginator) paginator: MatPaginator; @@ -98,14 +98,6 @@ export class PayloadDecoderTableComponent implements OnInit, AfterViewInit, OnDe this.refresh(); } - private refresh() { - this.paginator.page.emit({ - pageIndex: this.paginator.pageIndex, - pageSize: this.paginator.pageSize, - length: this.resultsLength, - }); - } - clickDelete(element: any) { this.deleteDialogSubscription = this.deleteDialogService.showSimpleDialog().subscribe(response => { if (response) { @@ -129,4 +121,12 @@ export class PayloadDecoderTableComponent implements OnInit, AfterViewInit, OnDe this.deleteDialogSubscription.unsubscribe(); } } + + private refresh() { + this.paginator.page.emit({ + pageIndex: this.paginator.pageIndex, + pageSize: this.paginator.pageSize, + length: this.resultsLength, + }); + } } diff --git a/src/app/payload-decoder/payload-decoder-routing.module.ts b/src/app/payload-decoder/payload-decoder-routing.module.ts index 84cbbd2bf..4a3cc01ab 100644 --- a/src/app/payload-decoder/payload-decoder-routing.module.ts +++ b/src/app/payload-decoder/payload-decoder-routing.module.ts @@ -1,4 +1,4 @@ -import { Routes, RouterModule } from "@angular/router"; +import { RouterModule, Routes } from "@angular/router"; import { NgModule } from "@angular/core"; import { PayloadDecoderDetailComponent } from "./payload-decoder-detail/payload-decoder-detail.component"; import { PayloadDecoderEditComponent } from "./payload-decoder-edit/payload-decoder-edit.component"; diff --git a/src/app/payload-decoder/payload-decoder.component.ts b/src/app/payload-decoder/payload-decoder.component.ts index 1e1e4440f..15e460e5d 100644 --- a/src/app/payload-decoder/payload-decoder.component.ts +++ b/src/app/payload-decoder/payload-decoder.component.ts @@ -4,6 +4,7 @@ import { Component, OnInit } from "@angular/core"; selector: "app-payload-decoder", templateUrl: "./payload-decoder.component.html", styleUrls: ["./payload-decoder.component.scss"], + standalone: false, }) export class PayloadDecoderComponent implements OnInit { constructor() {} diff --git a/src/app/payload-decoder/payload-decoder.module.ts b/src/app/payload-decoder/payload-decoder.module.ts index aad989af6..afb22520f 100644 --- a/src/app/payload-decoder/payload-decoder.module.ts +++ b/src/app/payload-decoder/payload-decoder.module.ts @@ -1,9 +1,9 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslatePipe } from "@ngx-translate/core"; import { RouterModule } from "@angular/router"; import { PayloadDecoderRoutingModule } from "./payload-decoder-routing.module"; -import { ReactiveFormsModule, FormsModule } from "@angular/forms"; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { FormModule } from "@shared/components/forms/form.module"; import { PayloadDecoderDetailComponent } from "./payload-decoder-detail/payload-decoder-detail.component"; import { PayloadDecoderEditComponent } from "./payload-decoder-edit/payload-decoder-edit.component"; @@ -37,7 +37,7 @@ import { IoTDeviceMinimalTableComponent } from "./payload-decoder-detail/iot-dev ], imports: [ CommonModule, - TranslateModule, + TranslatePipe, RouterModule, FormsModule, PayloadDecoderRoutingModule, diff --git a/src/app/payload-decoder/test-payload-decoder.service.ts b/src/app/payload-decoder/test-payload-decoder.service.ts index d334fd26a..8c9e7c79d 100644 --- a/src/app/payload-decoder/test-payload-decoder.service.ts +++ b/src/app/payload-decoder/test-payload-decoder.service.ts @@ -1,6 +1,5 @@ import { Injectable } from "@angular/core"; import { RestService } from "@shared/services/rest.service"; -import { SharedVariableService } from "@shared/shared-variable/shared-variable.service"; import { TestPayloadDecoder } from "./test-payload-decoder.model"; @Injectable({ diff --git a/src/app/profiles/device-profiles/device-profiles-edit/device-profiles-edit.component.html b/src/app/profiles/device-profiles/device-profiles-edit/device-profiles-edit.component.html index 8bd8bf31c..739b68692 100644 --- a/src/app/profiles/device-profiles/device-profiles-edit/device-profiles-edit.component.html +++ b/src/app/profiles/device-profiles/device-profiles-edit/device-profiles-edit.component.html @@ -1,81 +1,94 @@ - -
-

{{ "PROFILES.DEVICE_PROFILE.DETAILS" | translate }}

-

- {{ - "PROFILES.DEVICE_PROFILE.ORGANIZATION" | translate - }}{{ deviceProfile.internalOrganizationName }} -

- -
+ +@if (deviceProfile.internalOrganizationName || deviceProfile.createdAt) { +
+

{{ "PROFILES.DEVICE_PROFILE.DETAILS" | translate }}

+

+ @if (deviceProfile.internalOrganizationName) { + {{ + "PROFILES.DEVICE_PROFILE.ORGANIZATION" | translate + }} + }{{ deviceProfile.internalOrganizationName }} +

+ +
+} -
-
    -
    -
  • - {{ error | translate }} + @if (errorMessages) { +
    +
      + @if (errorMessages) { +
      + @for (error of errorMessages; track error) { +
    • + {{ error | translate }} +
    • + } +
      + } @if (errorMessage) { +
    • + {{ errorMessage | translate }}
    • -
    -
  • - {{ errorMessage | translate }} -
  • -
-
- + } + +
+ } +
- + -
- -
- -
+ @if (deviceProfile.id) { +
+ + +
+ } +
- + + [placeholder]="'PROFILES.DEVICE_PROFILE.MACVERSION_PLACEHOLDER' | translate" maxlength="50" required + [(ngModel)]="deviceProfile.macVersion"> --> 1.0.0 1.0.1 @@ -88,20 +101,22 @@

{{ "PROFILES.DEVICE_PROFILE.DETAILS" | translate }}

+ "PROFILES.DEVICE_PROFILE.REGPARAMSREVISION" | translate + }} - - {{ type.key }} - + @for (type of revision | keyvalue; track type) { + + {{ type.key }} + + }
@@ -110,159 +125,162 @@

{{ "PROFILES.DEVICE_PROFILE.DETAILS" | translate }}

- {{ adr.name }} + @for (adr of adrAlgorithms; track adr) { + {{ adr.name }} + }
- +
-
- - {{ deviceProfile.internalOrganizationName }} -
+ @if (deviceProfile.internalOrganizationName) { +
+ + {{ deviceProfile.internalOrganizationName }} +
+ } - + {{ "PROFILES.DEVICE_PROFILE.OTAA-ACTIVATE" | translate }} - + @if (!deviceProfile.supportsJoin) {
- +
- +
- +
- +
-
+ }
{{ "PROFILES.DEVICE_PROFILE.SUPPORTSCLASSB_ACTIVATE" | translate }} - + @if (deviceProfile.supportsClassB) {
- +
-
- +
-
- +
-
- +
-
+ }
{{ "PROFILES.DEVICE_PROFILE.SUPPORTSCLASSC_ACTIVATE" | translate }}
- +
-
- -
diff --git a/src/app/profiles/device-profiles/device-profiles-edit/device-profiles-edit.component.ts b/src/app/profiles/device-profiles/device-profiles-edit/device-profiles-edit.component.ts index 0f20214ab..1ab210f42 100644 --- a/src/app/profiles/device-profiles/device-profiles-edit/device-profiles-edit.component.ts +++ b/src/app/profiles/device-profiles/device-profiles-edit/device-profiles-edit.component.ts @@ -16,6 +16,7 @@ import { AdrAlgorithm } from "@app/network-server/adr-algorithm.model"; selector: "app-device-profiles-edit", templateUrl: "./device-profiles-edit.component.html", styleUrls: ["./device-profiles-edit.component.scss"], + standalone: false, }) export class DeviceProfilesEditComponent implements OnInit, OnDestroy { id: string; @@ -60,16 +61,16 @@ export class DeviceProfilesEditComponent implements OnInit, OnDestroy { } getDeviceProfile(id: string) { - this.subscription = this.deviceProfileService.getOne(id).subscribe( - response => { + this.subscription = this.deviceProfileService.getOne(id).subscribe({ + next: response => { this.deviceProfile = response.deviceProfile; this.canEdit(); this.shownRegParameters(this.deviceProfile.macVersion); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { console.log(error); - } - ); + }, + }); } shownRegParameters(data: number) { @@ -109,29 +110,6 @@ export class DeviceProfilesEditComponent implements OnInit, OnDestroy { } } - private create(): void { - this.deviceProfileService.post(this.deviceProfile).subscribe( - response => { - console.log(response); - this.routeBack(); - }, - (error: HttpErrorResponse) => { - this.showError(error); - } - ); - } - - private update(): void { - this.deviceProfileService.put(this.deviceProfile).subscribe( - response => { - this.routeBack(); - }, - error => { - this.showError(error); - } - ); - } - routeBack(): void { this.location.back(); } @@ -140,16 +118,6 @@ export class DeviceProfilesEditComponent implements OnInit, OnDestroy { return o1 === o2; } - private showError(error: HttpErrorResponse) { - if (error.status == 403) { - this.errorMessages = ["Forbudt"]; - } else { - const errors = this.errorMessageService.handleErrorMessageWithFields(error); - this.errorFields = errors?.errorFields; - this.errorMessages = errors?.errorMessages; - } - } - onSubmit(): void { if (this.deviceProfile.id) { this.update(); @@ -164,4 +132,37 @@ export class DeviceProfilesEditComponent implements OnInit, OnDestroy { this.subscription.unsubscribe(); } } + + private create(): void { + this.deviceProfileService.post(this.deviceProfile).subscribe({ + next: response => { + console.log(response); + this.routeBack(); + }, + error: (error: HttpErrorResponse) => { + this.showError(error); + }, + }); + } + + private update(): void { + this.deviceProfileService.put(this.deviceProfile).subscribe({ + next: () => { + this.routeBack(); + }, + error: error => { + this.showError(error); + }, + }); + } + + private showError(error: HttpErrorResponse) { + if (error.status == 403) { + this.errorMessages = ["Forbudt"]; + } else { + const errors = this.errorMessageService.handleErrorMessageWithFields(error); + this.errorFields = errors?.errorFields; + this.errorMessages = errors?.errorMessages; + } + } } diff --git a/src/app/profiles/device-profiles/device-profiles-list/device-profiles-item/device-profiles-item.component.html b/src/app/profiles/device-profiles/device-profiles-list/device-profiles-item/device-profiles-item.component.html index 72e5d1ba1..c68c311ea 100644 --- a/src/app/profiles/device-profiles/device-profiles-list/device-profiles-item/device-profiles-item.component.html +++ b/src/app/profiles/device-profiles/device-profiles-list/device-profiles-item/device-profiles-item.component.html @@ -5,13 +5,15 @@ {{ deviceProfile.name }}
- + @if (deviceProfile.canEdit) { + + }
diff --git a/src/app/profiles/device-profiles/device-profiles-list/device-profiles-item/device-profiles-item.component.ts b/src/app/profiles/device-profiles/device-profiles-list/device-profiles-item/device-profiles-item.component.ts index 03784e954..93d557605 100644 --- a/src/app/profiles/device-profiles/device-profiles-list/device-profiles-item/device-profiles-item.component.ts +++ b/src/app/profiles/device-profiles/device-profiles-list/device-profiles-item/device-profiles-item.component.ts @@ -1,12 +1,13 @@ -import { Component, OnInit, Input, Output, EventEmitter } from "@angular/core"; +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; import { DeviceProfile } from "../../device-profile.model"; import { ActivatedRoute, Router } from "@angular/router"; -import { faPen, faTimesCircle } from "@fortawesome/free-solid-svg-icons"; +import { faTimesCircle } from "@fortawesome/free-solid-svg-icons"; @Component({ selector: "app-device-profiles-item", templateUrl: "./device-profiles-item.component.html", styleUrls: ["./device-profiles-item.component.scss"], + standalone: false, }) export class DeviceProfilesItemComponent implements OnInit { @Input() deviceProfile: DeviceProfile; diff --git a/src/app/profiles/device-profiles/device-profiles-list/device-profiles-list.component.html b/src/app/profiles/device-profiles/device-profiles-list/device-profiles-list.component.html index 6c1a54c19..44bc8e3f7 100644 --- a/src/app/profiles/device-profiles/device-profiles-list/device-profiles-list.component.html +++ b/src/app/profiles/device-profiles/device-profiles-list/device-profiles-list.component.html @@ -1,14 +1,16 @@ -
- {{ errorMessages | translate }} -
- - +@if (errorMessages) { +
+ {{ errorMessages | translate }} +
+} @for (deviceProfile of deviceProfiles; track deviceProfile; let i = $index) { + + +} diff --git a/src/app/profiles/device-profiles/device-profiles-list/device-profiles-list.component.ts b/src/app/profiles/device-profiles/device-profiles-list/device-profiles-list.component.ts index 7936a8cae..aa4fec0ae 100644 --- a/src/app/profiles/device-profiles/device-profiles-list/device-profiles-list.component.ts +++ b/src/app/profiles/device-profiles/device-profiles-list/device-profiles-list.component.ts @@ -1,8 +1,8 @@ -import { Component, OnInit, OnChanges, OnDestroy, Input } from "@angular/core"; +import { Component, OnDestroy, OnInit } from "@angular/core"; import { Subscription } from "rxjs"; import { DeviceProfile } from "../device-profile.model"; -import { Router, ActivatedRoute } from "@angular/router"; +import { ActivatedRoute, Router } from "@angular/router"; import { DeviceProfileService } from "../device-profile.service"; import { MeService } from "@shared/services/me.service"; import { DeleteDialogService } from "@shared/components/delete-dialog/delete-dialog.service"; @@ -14,6 +14,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-device-profiles-list", templateUrl: "./device-profiles-list.component.html", styleUrls: ["./device-profiles-list.component.scss"], + standalone: false, }) export class DeviceProfilesListComponent implements OnInit, OnDestroy { deviceProfiles: DeviceProfile[]; diff --git a/src/app/profiles/profiles-list/profiles-list.component.html b/src/app/profiles/profiles-list/profiles-list.component.html index 5c3c3e682..6b79d89e4 100644 --- a/src/app/profiles/profiles-list/profiles-list.component.html +++ b/src/app/profiles/profiles-list/profiles-list.component.html @@ -1,4 +1,4 @@ - +
diff --git a/src/app/profiles/profiles-list/profiles-list.component.ts b/src/app/profiles/profiles-list/profiles-list.component.ts index cbd45bc2c..99660f4e1 100644 --- a/src/app/profiles/profiles-list/profiles-list.component.ts +++ b/src/app/profiles/profiles-list/profiles-list.component.ts @@ -8,6 +8,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-profiles-list", templateUrl: "./profiles-list.component.html", styleUrls: ["./profiles-list.component.scss"], + standalone: false, }) export class ProfilesListComponent implements OnInit { canEdit: boolean; diff --git a/src/app/profiles/profiles-routing.module.ts b/src/app/profiles/profiles-routing.module.ts index c437641aa..38e01d4e7 100644 --- a/src/app/profiles/profiles-routing.module.ts +++ b/src/app/profiles/profiles-routing.module.ts @@ -1,5 +1,5 @@ import { NgModule } from "@angular/core"; -import { Routes, RouterModule } from "@angular/router"; +import { RouterModule, Routes } from "@angular/router"; import { ProfilesComponent } from "./profiles.component"; import { ProfilesListComponent } from "./profiles-list/profiles-list.component"; import { DeviceProfilesEditComponent } from "./device-profiles/device-profiles-edit/device-profiles-edit.component"; diff --git a/src/app/profiles/profiles.component.ts b/src/app/profiles/profiles.component.ts index 62f5ebc61..a95347238 100644 --- a/src/app/profiles/profiles.component.ts +++ b/src/app/profiles/profiles.component.ts @@ -3,6 +3,7 @@ import { Component, OnInit } from "@angular/core"; @Component({ selector: "app-profiles", templateUrl: "./profiles.component.html", + standalone: false, }) export class ProfilesComponent implements OnInit { constructor() {} diff --git a/src/app/profiles/profiles.module.ts b/src/app/profiles/profiles.module.ts index 85e7d2f3f..b9e8a035c 100644 --- a/src/app/profiles/profiles.module.ts +++ b/src/app/profiles/profiles.module.ts @@ -4,10 +4,10 @@ import { ProfilesListComponent } from "./profiles-list/profiles-list.component"; import { ProfilesRoutingModule } from "./profiles-routing.module"; import { RouterModule } from "@angular/router"; import { SharedModule } from "@shared/shared.module"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslatePipe } from "@ngx-translate/core"; import { FormModule } from "@shared/components/forms/form.module"; import { CommonModule } from "@angular/common"; -import { ReactiveFormsModule, FormsModule } from "@angular/forms"; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { FontAwesomeModule } from "@fortawesome/angular-fontawesome"; import { DirectivesModule } from "@shared/directives/directives.module"; import { NGMaterialModule } from "@shared/Modules/materiale.module"; @@ -30,7 +30,7 @@ import { DeviceProfilesListComponent } from "./device-profiles/device-profiles-l RouterModule, SharedModule, FormModule, - TranslateModule, + TranslatePipe, FontAwesomeModule, DirectivesModule, CommonModule, diff --git a/src/app/search/search-table.component.html b/src/app/search/search-table.component.html index 1ee564ffe..6280c3210 100644 --- a/src/app/search/search-table.component.html +++ b/src/app/search/search-table.component.html @@ -1,105 +1,118 @@
-
-

- {{ pageTotal }} {{ "SEARCH.QUERY" | translate }} "{{ searchText }}" -

- + @if (searchText !== undefined) { +
+ @if (!isFetching) { +

+ {{ pageTotal }} {{ "SEARCH.QUERY" | translate }} "{{ searchText }}" +

+ } @else {

{{ "SEARCH.FETCHING" | translate }} + >{{ "SEARCH.FETCHING" | translate }} - . - . - . - + . + . + . +

- -
-
-
-

- {{ "SEARCH.NO-RESULTS" | translate }} -

+ } +
+ }
-
-
- - - - - - - - - - - + + + + + + + + + + + + + + + + + + +
- {{ "SEARCH.ICON" | translate }} - - - - {{ "SEARCH.TYPE" | translate }} - -
- {{ element.deviceType | translate }} -
- +@if (pageTotal === 0) { +
+

+ {{ "SEARCH.NO-RESULTS" | translate }} +

+
+} @if (pageTotal > 0) { +
+
+ + + + + + + + + + - - - - - - - - - - - - - - - - - - - -
+ {{ "SEARCH.ICON" | translate }} + + + + {{ "SEARCH.TYPE" | translate }} + + @if (element.type == 'IoTDevice') { +
+ {{ element.deviceType | translate }} +
+ } @else { {{ element.type }} - -
- {{ "SEARCH.NAME" | translate }} - - {{ element.name }} - - {{ "SEARCH.ID" | translate }} - -
-
- {{ element.deviceEUI }} -
-
- {{ element.deviceId }} -
-
- {{ element.apiKey }} -
-
- - -
- {{ "SEARCH.ORGANISATION" | translate }} - - {{ getOrganizationName(element) }} -
- + } +
+ {{ "SEARCH.NAME" | translate }} + + {{ element.name }} + + {{ "SEARCH.ID" | translate }} + + @if (element.type == 'IoTDevice') { +
+ @if (element.deviceType == 'LORAWAN') { +
+ {{ element.deviceEUI }} +
+ } @if (element.deviceType == 'SIGFOX') { +
+ {{ element.deviceId }} +
+ } @if (element.deviceType == 'GENERIC_HTTP') { +
+ {{ element.apiKey }} +
+ } +
+ } @if (element.type == 'Application') { + + } @if (element.type == 'Gateway') { + + } +
+ {{ "SEARCH.ORGANISATION" | translate }} + + {{ getOrganizationName(element) }} +
+ +
-
+} diff --git a/src/app/search/search-table.component.ts b/src/app/search/search-table.component.ts index dd4267779..839c4ab21 100644 --- a/src/app/search/search-table.component.ts +++ b/src/app/search/search-table.component.ts @@ -17,29 +17,26 @@ import { SearchService } from "./search.service"; selector: "app-search-table", templateUrl: "./search-table.component.html", styleUrls: ["./search-table.component.scss"], + standalone: false, }) export class SearchTableComponent implements OnChanges, OnInit { - private readonly faBroadcastTower = faBroadcastTower; - private readonly faLayerGroup = faLayerGroup; - private readonly faMicrochip = faMicrochip; - @ViewChild(MatPaginator) public paginator: MatPaginator; @ViewChild(MatSort) sort: MatSort; @Input() searchText: string; - displayedColumns: string[] = ["icon", "type", "name", "id", "org"]; dataSource: MatTableDataSource; public pageSize = environment.tablePageSize; public pageSizeOptions = DefaultPageSizeOptions; - isLoadingResults = true; subscription: Subscription; isFetching = true; - searchResults: SearchResultDto[]; pageTotal: number; pageOffset = 0; pageEvent: PageEvent; + private readonly faBroadcastTower = faBroadcastTower; + private readonly faLayerGroup = faLayerGroup; + private readonly faMicrochip = faMicrochip; constructor( private globalService: SharedVariableService, diff --git a/src/app/search/search.module.ts b/src/app/search/search.module.ts index a685c7685..ba33b73fd 100644 --- a/src/app/search/search.module.ts +++ b/src/app/search/search.module.ts @@ -3,7 +3,7 @@ import { NgModule } from "@angular/core"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { RouterModule } from "@angular/router"; import { FontAwesomeModule } from "@fortawesome/angular-fontawesome"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslatePipe } from "@ngx-translate/core"; import { FormModule } from "@shared/components/forms/form.module"; import { NGMaterialModule } from "@shared/Modules/materiale.module"; import { SearchTableComponent } from "./search-table.component"; @@ -12,7 +12,7 @@ import { SearchTableComponent } from "./search-table.component"; declarations: [SearchTableComponent], imports: [ CommonModule, - TranslateModule, + TranslatePipe, RouterModule, FormsModule, ReactiveFormsModule, diff --git a/src/app/shared/Modules/materiale.module.ts b/src/app/shared/Modules/materiale.module.ts index 01cada1ea..f3f611e72 100644 --- a/src/app/shared/Modules/materiale.module.ts +++ b/src/app/shared/Modules/materiale.module.ts @@ -17,10 +17,10 @@ import { MatCheckboxModule } from "@angular/material/checkbox"; import { MatChipsModule } from "@angular/material/chips"; import { DateAdapter, - MatNativeDateModule, - MatRippleModule, MAT_DATE_FORMATS, MAT_DATE_LOCALE, + MatNativeDateModule, + MatRippleModule, } from "@angular/material/core"; import { MatDatepickerModule } from "@angular/material/datepicker"; import { MatDialogModule } from "@angular/material/dialog"; diff --git a/src/app/shared/components/alert/alert.component.html b/src/app/shared/components/alert/alert.component.html index db21b3a4b..ab9d79698 100644 --- a/src/app/shared/components/alert/alert.component.html +++ b/src/app/shared/components/alert/alert.component.html @@ -1,5 +1,9 @@ -
-

Messages

- -
{{ alert }}
-
+@if (alertService.alerts.length) { +
+

Messages

+ + @for (alert of alertService.alerts; track alert) { +
{{ alert }}
+ } +
+} diff --git a/src/app/shared/components/alert/alert.component.ts b/src/app/shared/components/alert/alert.component.ts index a53c67efc..de55a6372 100644 --- a/src/app/shared/components/alert/alert.component.ts +++ b/src/app/shared/components/alert/alert.component.ts @@ -4,6 +4,7 @@ import { AlertService } from "@shared/services/alert.service"; @Component({ selector: "app-alert", templateUrl: "./alert.component.html", + standalone: false, }) export class AlertComponent implements OnInit { constructor(public alertService: AlertService) {} diff --git a/src/app/shared/components/basic-information-box/basic-information-box.component.html b/src/app/shared/components/basic-information-box/basic-information-box.component.html index 3cc2c3fcf..92f3efc93 100644 --- a/src/app/shared/components/basic-information-box/basic-information-box.component.html +++ b/src/app/shared/components/basic-information-box/basic-information-box.component.html @@ -1,12 +1,12 @@
- +
{{ count }}
- @if(countOf){ -
/ {{ countOf }}
+ @if (countOf) { +
/ {{ countOf }}
}
diff --git a/src/app/shared/components/basic-information-box/basic-information-box.component.ts b/src/app/shared/components/basic-information-box/basic-information-box.component.ts index 93c9132d5..2814f27a7 100644 --- a/src/app/shared/components/basic-information-box/basic-information-box.component.ts +++ b/src/app/shared/components/basic-information-box/basic-information-box.component.ts @@ -4,7 +4,6 @@ import { MatIconModule } from "@angular/material/icon"; @Component({ selector: "app-basic-information-box", - standalone: true, imports: [MatIconModule, NgStyle], templateUrl: "./basic-information-box.component.html", styleUrl: "./basic-information-box.component.scss", @@ -17,6 +16,7 @@ export class BasicInformationBoxComponent implements OnInit { @Input() countOf: number; @Input() description: string; @Input() matSVGSrc: string; + currentStyles: Record[] = []; ngOnInit(): void { let color: string = ""; @@ -42,5 +42,4 @@ export class BasicInformationBoxComponent implements OnInit { width: this.width.toString() + "px", }; } - currentStyles: Record[] = []; } diff --git a/src/app/shared/components/basic-tab-switch/basic-tab-switch.component.html b/src/app/shared/components/basic-tab-switch/basic-tab-switch.component.html index 6ffa10cbf..ff6f893eb 100644 --- a/src/app/shared/components/basic-tab-switch/basic-tab-switch.component.html +++ b/src/app/shared/components/basic-tab-switch/basic-tab-switch.component.html @@ -1,6 +1,6 @@
@for (tab of tabs; track tab.title; ) { -
+
@if (tab.icon) { - {{ percentage }} % -
- -
-
+@if (isValid()) { +
+ {{ percentage }} % + @for (item of arrayColor; track item) { +
+ @if (item.full == false) { +
+ } +
+ }
-
-{{ "BATTERY.NOT_AVAILABLE" | translate }} +} @else { + {{ "BATTERY.NOT_AVAILABLE" | translate }} +} diff --git a/src/app/shared/components/batteri-status/batteri-status.component.ts b/src/app/shared/components/batteri-status/batteri-status.component.ts index f762e52a0..796c259ec 100644 --- a/src/app/shared/components/batteri-status/batteri-status.component.ts +++ b/src/app/shared/components/batteri-status/batteri-status.component.ts @@ -4,6 +4,7 @@ import { Component, Input, OnInit } from "@angular/core"; selector: "app-batteri-status", templateUrl: "./batteri-status.component.html", styleUrls: ["./batteri-status.component.scss"], + standalone: false, }) export class BatteriStatusComponent implements OnInit { @Input() public color: string; diff --git a/src/app/shared/components/column-selector/column-selector.component.html b/src/app/shared/components/column-selector/column-selector.component.html index 6aefe8b0a..9fafbbd76 100644 --- a/src/app/shared/components/column-selector/column-selector.component.html +++ b/src/app/shared/components/column-selector/column-selector.component.html @@ -1,27 +1,29 @@
- - - - {{ option.display | translate }} - + @for (option of optionalColumnOptions; track option) { + + {{ option.display | translate }} + + } -
diff --git a/src/app/shared/components/column-selector/column-selector.component.ts b/src/app/shared/components/column-selector/column-selector.component.ts index c61aae778..bfedb9e5a 100644 --- a/src/app/shared/components/column-selector/column-selector.component.ts +++ b/src/app/shared/components/column-selector/column-selector.component.ts @@ -10,6 +10,7 @@ import { CookieService } from "ngx-cookie-service"; selector: "app-column-selector", templateUrl: "./column-selector.component.html", styleUrls: ["./column-selector.component.scss"], + standalone: false, }) export class ColumnSelectorComponent implements AfterContentInit { @Input() localStorageKey: string; @@ -22,14 +23,6 @@ export class ColumnSelectorComponent implements AfterContentInit { cogIcon = faCog; _cookieService: CookieService; - _displayedColumns: string[]; - @Input() set displayedColumns(val: string[]) { - this.displayedColumnsChange.emit(val); - this._displayedColumns = val; - } - get displayedColumns() { - return this._displayedColumns; - } @Output() displayedColumnsChange: EventEmitter = new EventEmitter(); constructor( @@ -45,6 +38,17 @@ export class ColumnSelectorComponent implements AfterContentInit { this._cookieService = cookieService; } + _displayedColumns: string[]; + + get displayedColumns() { + return this._displayedColumns; + } + + @Input() set displayedColumns(val: string[]) { + this.displayedColumnsChange.emit(val); + this._displayedColumns = val; + } + ngAfterContentInit(): void { this.optionalColumnOptions = this.columnDefinitions.filter(o => o.toggleable); diff --git a/src/app/shared/components/delete-dialog/delete-dialog.component.html b/src/app/shared/components/delete-dialog/delete-dialog.component.html index 765bbd8b1..28401c773 100644 --- a/src/app/shared/components/delete-dialog/delete-dialog.component.html +++ b/src/app/shared/components/delete-dialog/delete-dialog.component.html @@ -1,25 +1,32 @@ -

{{ "DIALOG.SAVE.TITLE" | translate }}

-

{{ dialogModel.infoTitle | translate }}

+@if (dialogModel.showAccept && dialogModel.showCancel) { +

{{ "DIALOG.SAVE.TITLE" | translate }}

+} @if (dialogModel.showOk) { +

{{ dialogModel.infoTitle | translate }}

+}
{{ dialogModel.message | translate }}
-
- - + } @if (dialogModel.showAccept) { + - +} @if (dialogModel.showReject) { +}
diff --git a/src/app/shared/components/delete-dialog/delete-dialog.component.ts b/src/app/shared/components/delete-dialog/delete-dialog.component.ts index 01fd38dca..b55dccf3d 100644 --- a/src/app/shared/components/delete-dialog/delete-dialog.component.ts +++ b/src/app/shared/components/delete-dialog/delete-dialog.component.ts @@ -1,13 +1,13 @@ import { Component, Inject, OnInit } from "@angular/core"; -import { MatDialogRef } from "@angular/material/dialog"; +import { MAT_DIALOG_DATA, MatDialogRef } from "@angular/material/dialog"; import { TranslateService } from "@ngx-translate/core"; -import { MAT_DIALOG_DATA } from "@angular/material/dialog"; import { DialogModel } from "../../models/dialog.model"; @Component({ selector: "app-delete-dialog", templateUrl: "./delete-dialog.component.html", styleUrls: ["./delete-dialog.component.scss"], + standalone: false, }) export class DeleteDialogComponent implements OnInit { constructor( diff --git a/src/app/shared/components/delete-dialog/delete-dialog.service.ts b/src/app/shared/components/delete-dialog/delete-dialog.service.ts index ce0b5b127..a3eadc326 100644 --- a/src/app/shared/components/delete-dialog/delete-dialog.service.ts +++ b/src/app/shared/components/delete-dialog/delete-dialog.service.ts @@ -5,6 +5,7 @@ import { Observable, Subscription } from "rxjs"; import { Application } from "@applications/application.model"; import { DeviceType } from "@shared/enums/device-type"; import { TranslateService } from "@ngx-translate/core"; + @Injectable({ providedIn: "root", }) diff --git a/src/app/shared/components/dynamic-img/dynamic-img.component.html b/src/app/shared/components/dynamic-img/dynamic-img.component.html index 433d7334c..9e43a298c 100644 --- a/src/app/shared/components/dynamic-img/dynamic-img.component.html +++ b/src/app/shared/components/dynamic-img/dynamic-img.component.html @@ -1 +1 @@ -{{ altText }} +{{ altText }} diff --git a/src/app/shared/components/dynamic-img/dynamic-img.component.ts b/src/app/shared/components/dynamic-img/dynamic-img.component.ts index fb19bdf4d..453e647ee 100644 --- a/src/app/shared/components/dynamic-img/dynamic-img.component.ts +++ b/src/app/shared/components/dynamic-img/dynamic-img.component.ts @@ -5,6 +5,7 @@ import { TranslateService } from "@ngx-translate/core"; selector: "app-dynamic-img", templateUrl: "./dynamic-img.component.html", styleUrls: ["./dynamic-img.component.scss"], + standalone: false, }) export class DynamicImgComponent implements OnInit { @Input() image: string; @@ -14,7 +15,7 @@ export class DynamicImgComponent implements OnInit { constructor(private translate: TranslateService) {} ngOnInit(): void { - if (this.translate.currentLang === "da") { + if (this.translate.getCurrentLang() === "da") { this.imagePath = "assets/images/" + this.image + "-danish.png"; } else { this.imagePath = "assets/images/" + this.image + "-english.png"; diff --git a/src/app/shared/components/forms/form-body-application/form-body-application.component.html b/src/app/shared/components/forms/form-body-application/form-body-application.component.html index 2ab42b434..016b9c635 100644 --- a/src/app/shared/components/forms/form-body-application/form-body-application.component.html +++ b/src/app/shared/components/forms/form-body-application/form-body-application.component.html @@ -1,130 +1,138 @@ - -
-
    -
  • - {{ error | translate }} -
  • -
-
+ + @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ }
- - {{ permission.name }} - + @for (permission of filteredPermissionsMulti | async; track permission) { + + {{ permission.name }} + + } {{ "QUESTION.APPLICATION.PERMISSION-HINT" | translate }}
+ "APPLICATION.METADATA-FIELD.STATUS" | translate + }} - - {{ statusOption.label }} - + @for (statusOption of statuses; track statusOption) { + + {{ statusOption.label }} + + }
+ "APPLICATION.METADATA-FIELD.START-DATE" | translate + }} {{ "QUESTION.APPLICATION.START-DATE-PLACEHOLDER" | translate }} - - + + {{ "QUESTION.APPLICATION.DATE-HINT" | translate }}
+ "APPLICATION.METADATA-FIELD.END-DATE" | translate + }} {{ "QUESTION.APPLICATION.END-DATE-PLACEHOLDER" | translate }} - - + + {{ "QUESTION.APPLICATION.DATE-HINT" | translate }}
@@ -132,176 +140,181 @@
+ "APPLICATION.METADATA-FIELD.CONTACT-PERSON" | translate + }}
-
+ "APPLICATION.METADATA-FIELD.PERSONAL-DATA" | translate + }} +
{{ "QUESTION.APPLICATION.PERSONAL-DATA-PLACEHOLDER" | translate }}{{ "QUESTION.APPLICATION.PERSONAL-DATA-PLACEHOLDER" | translate }} +
+ "APPLICATION.METADATA-FIELD.HARDWARE" | translate + }}
+ "APPLICATION.METADATA-FIELD.CONTROLLED-PROPERTY" | translate + }} - - {{ ctrlProperty }} - + @for (ctrlProperty of controlledProperties; track ctrlProperty) { + + {{ ctrlProperty }} + + }
+ "APPLICATION.METADATA-FIELD.DEVICE-TYPE" | translate + }} - - {{ deviceType.label }} - + @for (deviceType of deviceTypes; track deviceType) { + + {{ deviceType.label }} + + }
- +
diff --git a/src/app/shared/components/forms/form-body-application/form-body-application.component.scss b/src/app/shared/components/forms/form-body-application/form-body-application.component.scss index 3573c4e2d..c318ad5e4 100644 --- a/src/app/shared/components/forms/form-body-application/form-body-application.component.scss +++ b/src/app/shared/components/forms/form-body-application/form-body-application.component.scss @@ -1,4 +1,4 @@ -.flexDirectionColumn{ +.flexDirectionColumn { display: flex; flex-direction: column; } diff --git a/src/app/shared/components/forms/form-body-application/form-body-application.component.ts b/src/app/shared/components/forms/form-body-application/form-body-application.component.ts index 5c01d26bb..6e9d2fc57 100644 --- a/src/app/shared/components/forms/form-body-application/form-body-application.component.ts +++ b/src/app/shared/components/forms/form-body-application/form-body-application.component.ts @@ -33,6 +33,7 @@ interface DropdownOption { selector: "app-form-body-application", templateUrl: "./form-body-application.component.html", styleUrls: ["./form-body-application.component.scss"], + standalone: false, }) export class FormBodyApplicationComponent implements OnInit, OnDestroy { @Input() submitButton: string; @@ -42,8 +43,6 @@ export class FormBodyApplicationComponent implements OnInit, OnDestroy { public errorMessages: string[]; public errorFields: string[]; public formFailedSubmit = false; - private id: number; - application = new ApplicationRequest(); model = new User(); statuses: DropdownOption[] = []; @@ -52,13 +51,12 @@ export class FormBodyApplicationComponent implements OnInit, OnDestroy { phoneCtrl: UntypedFormControl; controlledProperties = Object.values(ControlledPropertyTypes); deviceTypes: DropdownOption[] = []; - permissionsSubscription: Subscription; public permissions: PermissionResponse[]; public permissionMultiCtrl: UntypedFormControl = new UntypedFormControl(); public permissionMultiFilterCtrl: UntypedFormControl = new UntypedFormControl(); public filteredPermissionsMulti: ReplaySubject = new ReplaySubject(1); - + private id: number; private _onDestroy = new Subject(); constructor( @@ -186,49 +184,27 @@ export class FormBodyApplicationComponent implements OnInit, OnDestroy { } } - private buildErrorMessage(message: string): Pick { - return { - error: { - message, - }, - }; - } - updateApplication(id: number): void { - this.applicationService.updateApplication(this.application, id).subscribe( - response => { + this.applicationService.updateApplication(this.application, id).subscribe({ + next: response => { console.log(response); this.router.navigateByUrl("/applications"); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.handleError(error); - } - ); + }, + }); } postApplication(): void { - this.applicationService.createApplication(this.application).subscribe( - () => { + this.applicationService.createApplication(this.application).subscribe({ + next: () => { this.router.navigateByUrl("/applications"); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.handleError(error); - } - ); - } - - private handleError(error: Pick, errorField?: string) { - this.errorFields = []; - this.errorMessages = []; - - // Temp fix till we standardise backend error handling - if (error.error?.message[0]?.property) { - this.externalError(error); - } else { - this.backendError(error, errorField); - } - - this.formFailedSubmit = true; + }, + }); } externalError(error: Pick) { @@ -293,4 +269,26 @@ export class FormBodyApplicationComponent implements OnInit, OnDestroy { this._onDestroy.next(); this._onDestroy.complete(); } + + private buildErrorMessage(message: string): Pick { + return { + error: { + message, + }, + }; + } + + private handleError(error: Pick, errorField?: string) { + this.errorFields = []; + this.errorMessages = []; + + // Temp fix till we standardise backend error handling + if (error.error?.message[0]?.property) { + this.externalError(error); + } else { + this.backendError(error, errorField); + } + + this.formFailedSubmit = true; + } } diff --git a/src/app/shared/components/forms/form-header/form-header.component.html b/src/app/shared/components/forms/form-header/form-header.component.html index dadf4ebed..78b95b686 100644 --- a/src/app/shared/components/forms/form-header/form-header.component.html +++ b/src/app/shared/components/forms/form-header/form-header.component.html @@ -1,6 +1,6 @@ diff --git a/src/app/shared/components/forms/form-header/form-header.component.scss b/src/app/shared/components/forms/form-header/form-header.component.scss index cb461eb8b..0938038d3 100644 --- a/src/app/shared/components/forms/form-header/form-header.component.scss +++ b/src/app/shared/components/forms/form-header/form-header.component.scss @@ -11,7 +11,7 @@ border-bottom: $grey-border solid 1px; box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.11), 0px 1px 16px rgba(0, 0, 0, 0.03), 0px 0px 1px rgba(0, 0, 0, 0.22); -webkit-box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.11), 0px 1px 16px rgba(0, 0, 0, 0.03), - 0px 0px 1px rgba(0, 0, 0, 0.22); + 0px 0px 1px rgba(0, 0, 0, 0.22); -moz-box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.11), 0px 1px 16px rgba(0, 0, 0, 0.03), 0px 0px 1px rgba(0, 0, 0, 0.22); > * { diff --git a/src/app/shared/components/forms/form-header/form-header.component.ts b/src/app/shared/components/forms/form-header/form-header.component.ts index 9d31c9d7b..246cff2eb 100644 --- a/src/app/shared/components/forms/form-header/form-header.component.ts +++ b/src/app/shared/components/forms/form-header/form-header.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, Input } from "@angular/core"; +import { Component, Input, OnInit } from "@angular/core"; import { TranslateService } from "@ngx-translate/core"; import { Location } from "@angular/common"; import { BackButton } from "@shared/models/back-button.model"; @@ -9,6 +9,7 @@ import { Router } from "@angular/router"; selector: "app-form-header", templateUrl: "./form-header.component.html", styleUrls: ["./form-header.component.scss"], + standalone: false, }) export class FormHeaderComponent implements OnInit { @Input() backButton: BackButton; diff --git a/src/app/shared/components/forms/form-key-value/form-key-value-list/form-key-value-list.component.html b/src/app/shared/components/forms/form-key-value/form-key-value-list/form-key-value-list.component.html index 4ce0e6b4b..d8b59bfc0 100644 --- a/src/app/shared/components/forms/form-key-value/form-key-value-list/form-key-value-list.component.html +++ b/src/app/shared/components/forms/form-key-value/form-key-value-list/form-key-value-list.component.html @@ -4,15 +4,15 @@ - - - - + @for (pair of tags; track pair; let i = $index) { + + + }
diff --git a/src/app/shared/components/forms/form-key-value/form-key-value-list/form-key-value-list.component.ts b/src/app/shared/components/forms/form-key-value/form-key-value-list/form-key-value-list.component.ts index feaaa68c5..1d4b89691 100644 --- a/src/app/shared/components/forms/form-key-value/form-key-value-list/form-key-value-list.component.ts +++ b/src/app/shared/components/forms/form-key-value/form-key-value-list/form-key-value-list.component.ts @@ -5,6 +5,7 @@ import { KeyValue } from "@shared/types/tuple.type"; selector: "app-form-key-value-list", templateUrl: "./form-key-value-list.component.html", styleUrls: ["./form-key-value-list.component.scss"], + standalone: false, }) export class FormKeyValueListComponent implements OnInit { @Input() tags: KeyValue[] = [{}]; diff --git a/src/app/shared/components/forms/form-key-value/form-key-value-pair/form-key-value-pair.component.html b/src/app/shared/components/forms/form-key-value/form-key-value-pair/form-key-value-pair.component.html index e0aeb09a6..ab8a60a97 100644 --- a/src/app/shared/components/forms/form-key-value/form-key-value-pair/form-key-value-pair.component.html +++ b/src/app/shared/components/forms/form-key-value/form-key-value-pair/form-key-value-pair.component.html @@ -1,30 +1,30 @@
diff --git a/src/app/shared/components/forms/form-key-value/form-key-value-pair/form-key-value-pair.component.ts b/src/app/shared/components/forms/form-key-value/form-key-value-pair/form-key-value-pair.component.ts index 30b07f609..ef803f701 100644 --- a/src/app/shared/components/forms/form-key-value/form-key-value-pair/form-key-value-pair.component.ts +++ b/src/app/shared/components/forms/form-key-value/form-key-value-pair/form-key-value-pair.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, HostBinding, Input, OnInit, Output } from "@angular/core"; +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; import { MatDialog } from "@angular/material/dialog"; import { faTimesCircle } from "@fortawesome/free-solid-svg-icons"; import { TranslateService } from "@ngx-translate/core"; @@ -11,6 +11,7 @@ import { KeyValue } from "@shared/types/tuple.type"; selector: "tr[app-form-key-value-pair]", templateUrl: "./form-key-value-pair.component.html", styleUrls: ["./form-key-value-pair.component.scss"], + standalone: false, }) export class FormKeyValuePairComponent implements OnInit { @Input() id: number; diff --git a/src/app/shared/components/forms/form.component.html b/src/app/shared/components/forms/form.component.html index 3e5bc5723..159dbcdba 100644 --- a/src/app/shared/components/forms/form.component.html +++ b/src/app/shared/components/forms/form.component.html @@ -2,7 +2,7 @@ diff --git a/src/app/shared/components/forms/form.component.ts b/src/app/shared/components/forms/form.component.ts index 8d014c52c..12466505f 100644 --- a/src/app/shared/components/forms/form.component.ts +++ b/src/app/shared/components/forms/form.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, Input } from "@angular/core"; +import { Component, Input, OnInit } from "@angular/core"; import { BackButton } from "@shared/models/back-button.model"; import { Application } from "@app/applications/application.model"; diff --git a/src/app/shared/components/forms/form.module.ts b/src/app/shared/components/forms/form.module.ts index 804ec1a31..5d92d040d 100644 --- a/src/app/shared/components/forms/form.module.ts +++ b/src/app/shared/components/forms/form.module.ts @@ -3,7 +3,7 @@ import { NgModule } from "@angular/core"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { RouterModule } from "@angular/router"; import { FontAwesomeModule } from "@fortawesome/angular-fontawesome"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslatePipe } from "@ngx-translate/core"; import { NGMaterialModule } from "@shared/Modules/materiale.module"; import { FormBodyApplicationComponent } from "./form-body-application/form-body-application.component"; import { FormHeaderComponent } from "./form-header/form-header.component"; @@ -24,7 +24,7 @@ import { MatSelectSearchModule } from "@shared/components/mat-select-search/mat- RouterModule, FormsModule, ReactiveFormsModule, - TranslateModule, + TranslatePipe, NGMaterialModule, MatSelectSearchModule, ], diff --git a/src/app/shared/components/general-details/general-details.component.html b/src/app/shared/components/general-details/general-details.component.html index 9538499cd..e59f5afff 100644 --- a/src/app/shared/components/general-details/general-details.component.html +++ b/src/app/shared/components/general-details/general-details.component.html @@ -1,9 +1,15 @@

{{ "ORGANISATION.CREATED" | translate }}{{ data.createdAt | dkTime }}{{ data.createdByName | createdUpdatedBy }} -

-

- {{ "ORGANISATION.UPDATED" | translate }}{{ data.updatedAt | dkTime }} - {{ data.updatedByName | createdUpdatedBy }} + >{{ data.createdAt | dkTime }}@if (data.createdByName) { + {{ data.createdByName | createdUpdatedBy }} +}

+@if (data.createdAt !== data.updatedAt) { +

+ {{ "ORGANISATION.UPDATED" | translate }}{{ data.updatedAt | dkTime }} + @if (data.updatedByName) { + {{ data.updatedByName | createdUpdatedBy }} + } +

+} diff --git a/src/app/shared/components/general-details/general-details.component.ts b/src/app/shared/components/general-details/general-details.component.ts index fd7c05021..8abfa45d6 100644 --- a/src/app/shared/components/general-details/general-details.component.ts +++ b/src/app/shared/components/general-details/general-details.component.ts @@ -13,6 +13,7 @@ import { PayloadDecoder } from "@payload-decoder/payload-decoder.model"; selector: "app-general-details", templateUrl: "./general-details.component.html", styleUrls: ["./general-details.component.scss"], + standalone: false, }) export class GeneralDetailsComponent implements OnInit { @Input() data: diff --git a/src/app/shared/components/loading-spinner/loading-spinner.component.ts b/src/app/shared/components/loading-spinner/loading-spinner.component.ts index 3d8a7422d..ffa9ac90d 100644 --- a/src/app/shared/components/loading-spinner/loading-spinner.component.ts +++ b/src/app/shared/components/loading-spinner/loading-spinner.component.ts @@ -1,7 +1,8 @@ -import { Component } from "@angular/core"; - -@Component({ - selector: "app-loading-spinner", - templateUrl: "./loading-spinner.component.html", -}) -export class LoadingSpinnerComponent {} +import { Component } from "@angular/core"; + +@Component({ + selector: "app-loading-spinner", + templateUrl: "./loading-spinner.component.html", + standalone: false, +}) +export class LoadingSpinnerComponent {} diff --git a/src/app/shared/components/map/map.component.html b/src/app/shared/components/map/map.component.html index 37277177e..ebf623846 100644 --- a/src/app/shared/components/map/map.component.html +++ b/src/app/shared/components/map/map.component.html @@ -1,5 +1,5 @@ - +
diff --git a/src/app/shared/components/map/map.component.ts b/src/app/shared/components/map/map.component.ts index 65c653094..5d9b06d02 100644 --- a/src/app/shared/components/map/map.component.ts +++ b/src/app/shared/components/map/map.component.ts @@ -24,6 +24,7 @@ import { MapCoordinates, MarkerInfo } from "./map-coordinates.model"; selector: "app-map", templateUrl: "./map.component.html", styleUrls: ["./map.component.scss"], + standalone: false, }) export class MapComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy { public mapId; diff --git a/src/app/shared/components/mat-select-search/mat-select-search/mat-select-search.component.html b/src/app/shared/components/mat-select-search/mat-select-search/mat-select-search.component.html index 718061b7b..6e89bbd2d 100644 --- a/src/app/shared/components/mat-select-search/mat-select-search/mat-select-search.component.html +++ b/src/app/shared/components/mat-select-search/mat-select-search/mat-select-search.component.html @@ -1,20 +1,24 @@ - + -
+
- + @if (value) { + + }
-
- {{ noEntriesFoundLabel }} -
+@if (noEntriesFoundLabel && value && _options?.length === 0) { +
+ {{ noEntriesFoundLabel }} +
+} diff --git a/src/app/shared/components/mat-select-search/mat-select-search/mat-select-search.component.scss b/src/app/shared/components/mat-select-search/mat-select-search/mat-select-search.component.scss index 491c12009..8aeb20b36 100644 --- a/src/app/shared/components/mat-select-search/mat-select-search/mat-select-search.component.scss +++ b/src/app/shared/components/mat-select-search/mat-select-search/mat-select-search.component.scss @@ -6,6 +6,7 @@ $multiple-check-width: 33px; .mat-select-search-hidden { visibility: hidden; } + .mat-select-search-inner { position: absolute; top: 0; @@ -13,6 +14,7 @@ $multiple-check-width: 33px; border-bottom: 1px solid #cccccc; background: white; z-index: 100; + &.mat-select-search-inner-multiple { width: calc(100% + #{2 * $mat-menu-side-padding - $scrollbar-width + $multiple-check-width}); } @@ -36,6 +38,7 @@ $multiple-check-width: 33px; .mat-select-search-no-entries-found { padding: $mat-menu-side-padding; } + .mat-select-search-clear { position: absolute; right: 0; diff --git a/src/app/shared/components/mat-select-search/mat-select-search/mat-select-search.component.ts b/src/app/shared/components/mat-select-search/mat-select-search/mat-select-search.component.ts index c01af903f..edb8d30d9 100644 --- a/src/app/shared/components/mat-select-search/mat-select-search/mat-select-search.component.ts +++ b/src/app/shared/components/mat-select-search/mat-select-search/mat-select-search.component.ts @@ -33,6 +33,7 @@ import { MatSelect } from "@angular/material/select"; }, ], changeDetection: ChangeDetectionStrategy.OnPush, + standalone: false, }) /** * Custom search/filter dropdown for select. This is not supported by Angular as of yet. @@ -50,33 +51,30 @@ export class MatSelectSearchComponent implements OnInit, OnDestroy, AfterViewIni /** Reference to the search input field */ @ViewChild("searchSelectInput", { static: false, read: ElementRef }) searchSelectInput: ElementRef; - - /** Current search value */ - get value(): string { - return this._value; - } - private _value: string; - - onChange: Function = (_: any) => {}; - onTouched: Function = (_: any) => {}; - /** Reference to the MatSelect options */ public _options: QueryList; - /** Previously selected values when using */ private previousSelectedValues: any[]; - /** Whether the backdrop class has been set */ private overlayClassSet = false; - /** Event that emits when the current value changes */ private change = new EventEmitter(); - /** Subject that emits when the component has been destroyed. */ private _onDestroy = new Subject(); constructor(@Inject(MatSelect) public matSelect: MatSelect, private changeDetectorRef: ChangeDetectorRef) {} + private _value: string; + + /** Current search value */ + get value(): string { + return this._value; + } + + onChange: Function = (_: any) => {}; + + onTouched: Function = (_: any) => {}; + ngOnInit() { // set custom panel class const panelClass = "mat-select-search-panel"; diff --git a/src/app/shared/components/metadata-details/metadata-details.component.html b/src/app/shared/components/metadata-details/metadata-details.component.html index 6e2ee6a1a..6b22ee260 100644 --- a/src/app/shared/components/metadata-details/metadata-details.component.html +++ b/src/app/shared/components/metadata-details/metadata-details.component.html @@ -1,54 +1,71 @@ -

- {{ "APPLICATION.METADATA-FIELD.PERMISSIONS" | translate }} -

-
    -
  • {{ permission.name }}
  • -
-

- {{ "APPLICATION.METADATA-FIELD.STATUS" | translate }}{{ "APPLICATION.STATUS." + status | translate }} -

-

- {{ "APPLICATION.METADATA-FIELD.START-DATE" | translate }}{{ startDate | dateOnly }} -

-

- {{ "APPLICATION.METADATA-FIELD.END-DATE" | translate }}{{ endDate | dateOnly }} -

-

- {{ "APPLICATION.METADATA-FIELD.CATEGORY" | translate }}{{ category }} -

-

- {{ "APPLICATION.METADATA-FIELD.OWNER" | translate }}{{ owner }} -

-

- {{ "APPLICATION.METADATA-FIELD.CONTACT-PERSON" | translate }}{{ contactPerson }} -

-

- {{ "APPLICATION.METADATA-FIELD.CONTACT-EMAIL" | translate }}{{ contactEmail }} -

-

- {{ "APPLICATION.METADATA-FIELD.CONTACT-PHONE" | translate }}{{ contactPhone }} -

+@if (permissions.length !== 0) { +

+ {{ "APPLICATION.METADATA-FIELD.PERMISSIONS" | translate }} +

+} @if (permissions.length !== 0) { +
    + @for (permission of permissions; track permission) { +
  • {{ permission.name }}
  • + } +
+} @if (status && status !== ApplicationStatus.NONE) { +

+ {{ "APPLICATION.METADATA-FIELD.STATUS" | translate }}{{ "APPLICATION.STATUS." + status | translate }} +

+} @if (startDate) { +

+ {{ "APPLICATION.METADATA-FIELD.START-DATE" | translate }}{{ startDate | dateOnly }} +

+} @if (endDate) { +

+ {{ "APPLICATION.METADATA-FIELD.END-DATE" | translate }}{{ endDate | dateOnly }} +

+} @if (category) { +

+ {{ "APPLICATION.METADATA-FIELD.CATEGORY" | translate }}{{ category }} +

+} @if (owner) { +

+ {{ "APPLICATION.METADATA-FIELD.OWNER" | translate }}{{ owner }} +

+} @if (contactPerson) { +

+ {{ "APPLICATION.METADATA-FIELD.CONTACT-PERSON" | translate }}{{ contactPerson }} +

+} @if (contactEmail) { +

+ {{ "APPLICATION.METADATA-FIELD.CONTACT-EMAIL" | translate }}{{ contactEmail }} +

+} @if (contactPhone) { +

+ {{ "APPLICATION.METADATA-FIELD.CONTACT-PHONE" | translate }}{{ contactPhone }} +

+}

{{ "APPLICATION.METADATA-FIELD.PERSONAL-DATA" | translate }}{{ (personalData ? true.toString() : false.toString()) | translate }}

-

- {{ "APPLICATION.METADATA-FIELD.HARDWARE" | translate }}{{ hardware }} -

-

- {{ "APPLICATION.METADATA-FIELD.CONTROLLED-PROPERTY" | translate }}{{ controlledPropertyText }} -

-

- {{ "APPLICATION.METADATA-FIELD.DEVICE-TYPE" | translate }}{{ deviceTypeText }} -

+@if (hardware) { +

+ {{ "APPLICATION.METADATA-FIELD.HARDWARE" | translate }}{{ hardware }} +

+} @if (controlledProperties?.length) { +

+ {{ "APPLICATION.METADATA-FIELD.CONTROLLED-PROPERTY" | translate }}{{ controlledPropertyText }} +

+} @if (deviceTypes?.length) { +

+ {{ "APPLICATION.METADATA-FIELD.DEVICE-TYPE" | translate }}{{ deviceTypeText }} +

+} diff --git a/src/app/shared/components/metadata-details/metadata-details.component.ts b/src/app/shared/components/metadata-details/metadata-details.component.ts index 47cb05539..67ff019c3 100644 --- a/src/app/shared/components/metadata-details/metadata-details.component.ts +++ b/src/app/shared/components/metadata-details/metadata-details.component.ts @@ -10,6 +10,7 @@ import { ControlledProperty } from "@shared/models/controlled-property.model"; selector: "app-metadata-details", templateUrl: "./metadata-details.component.html", styleUrls: ["./metadata-details.component.scss"], + standalone: false, }) export class MetadataDetailsComponent implements OnInit { @Input() permissions?: PermissionResponse[]; diff --git a/src/app/shared/components/option-field/option-field.component.ts b/src/app/shared/components/option-field/option-field.component.ts index 8f962883e..6a2c5449f 100644 --- a/src/app/shared/components/option-field/option-field.component.ts +++ b/src/app/shared/components/option-field/option-field.component.ts @@ -5,12 +5,12 @@ import { Component, Input, OnInit } from "@angular/core"; selector: "app-option-field", templateUrl: "./option-field.component.html", styleUrls: ["./option-field.component.scss"], - standalone: true, imports: [NgStyle], }) export class OptionFieldComponent implements OnInit { @Input() title = ""; @Input() type: "default" | "warning" | "alert" = "default"; + boxStyles: Record = {}; ngOnInit(): void { let color; @@ -31,6 +31,4 @@ export class OptionFieldComponent implements OnInit { "background-color": color, }; } - - boxStyles: Record = {}; } diff --git a/src/app/shared/components/snack-bar/snack-bar.component.html b/src/app/shared/components/snack-bar/snack-bar.component.html index d6a81e51c..ade9f5fc6 100644 --- a/src/app/shared/components/snack-bar/snack-bar.component.html +++ b/src/app/shared/components/snack-bar/snack-bar.component.html @@ -5,5 +5,5 @@ {{ data.message }}
- +
diff --git a/src/app/shared/components/snack-bar/snack-bar.component.scss b/src/app/shared/components/snack-bar/snack-bar.component.scss index ade155456..a11089263 100644 --- a/src/app/shared/components/snack-bar/snack-bar.component.scss +++ b/src/app/shared/components/snack-bar/snack-bar.component.scss @@ -2,6 +2,7 @@ font-weight: 500; letter-spacing: 0.5px; } + .snackbar-content-style { letter-spacing: 0.5px; border: none; @@ -9,6 +10,7 @@ margin-top: 10px; margin-bottom: 10px; } + .snackbar-button-div-style { text-align: center; diff --git a/src/app/shared/components/snack-bar/snack-bar.component.ts b/src/app/shared/components/snack-bar/snack-bar.component.ts index c6234c15a..eec85a313 100644 --- a/src/app/shared/components/snack-bar/snack-bar.component.ts +++ b/src/app/shared/components/snack-bar/snack-bar.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit, Inject } from "@angular/core"; +import { Component, Inject, OnInit } from "@angular/core"; import { MAT_SNACK_BAR_DATA, MatSnackBarRef } from "@angular/material/snack-bar"; @Component({ selector: "app-snackbar", templateUrl: "./snack-bar.component.html", styleUrls: ["./snack-bar.component.scss"], + standalone: false, }) export class SnackBarComponent implements OnInit { constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any, public snackBarRef: MatSnackBarRef) {} diff --git a/src/app/shared/components/status-icon/status-icon.component.html b/src/app/shared/components/status-icon/status-icon.component.html index 1819ab07b..8d5b50236 100644 --- a/src/app/shared/components/status-icon/status-icon.component.html +++ b/src/app/shared/components/status-icon/status-icon.component.html @@ -1,5 +1,7 @@ -@switch (iconType) { @case ("stable") { - -} @case ("alert") { - -} } +@switch (iconType) { + @case ("stable") { + + } @case ("alert") { + + } +} diff --git a/src/app/shared/components/status-icon/status-icon.component.ts b/src/app/shared/components/status-icon/status-icon.component.ts index ba0a5f857..1a1413d41 100644 --- a/src/app/shared/components/status-icon/status-icon.component.ts +++ b/src/app/shared/components/status-icon/status-icon.component.ts @@ -2,16 +2,17 @@ import { Component, Input } from "@angular/core"; import { MatIconModule, MatIconRegistry } from "@angular/material/icon"; import { MatTooltipModule } from "@angular/material/tooltip"; import { DomSanitizer } from "@angular/platform-browser"; -import { TranslateModule, TranslateService } from "@ngx-translate/core"; +import { TranslatePipe, TranslateService } from "@ngx-translate/core"; @Component({ selector: "app-status-icon", templateUrl: "./status-icon.component.html", styleUrls: ["./status-icon.component.scss"], - standalone: true, - imports: [MatIconModule, MatTooltipModule, TranslateModule], + imports: [MatIconModule, MatTooltipModule, TranslatePipe], }) export class StatusIconComponent { + @Input() iconType: "alert" | "stable" = "stable"; + constructor( private translate: TranslateService, private matIconRegistry: MatIconRegistry, @@ -29,5 +30,4 @@ export class StatusIconComponent { {} ); } - @Input() iconType: "alert" | "stable" = "stable"; } diff --git a/src/app/shared/components/table-pagiantor.ts/table-paginator.component.html b/src/app/shared/components/table-pagiantor.ts/table-paginator.component.html index a0b5f7690..0764f2ae8 100644 --- a/src/app/shared/components/table-pagiantor.ts/table-paginator.component.html +++ b/src/app/shared/components/table-pagiantor.ts/table-paginator.component.html @@ -1,22 +1,24 @@
- + - - {{ option.label }} - + @for (option of options; track option) { + + {{ option.label }} + + }
@@ -24,11 +26,11 @@ {{ currentPage + " / " + numberOfPages }}
diff --git a/src/app/shared/components/table-pagiantor.ts/table-paginator.component.ts b/src/app/shared/components/table-pagiantor.ts/table-paginator.component.ts index f28482270..5b70c1ceb 100644 --- a/src/app/shared/components/table-pagiantor.ts/table-paginator.component.ts +++ b/src/app/shared/components/table-pagiantor.ts/table-paginator.component.ts @@ -1,4 +1,4 @@ -import { NgClass, NgFor } from "@angular/common"; +import { NgClass } from "@angular/common"; import { AfterViewChecked, Component, Input, OnInit } from "@angular/core"; import { MatButtonModule } from "@angular/material/button"; import { MatOptionModule } from "@angular/material/core"; @@ -17,12 +17,19 @@ export interface Option { selector: "app-table-paginator", templateUrl: "./table-paginator.component.html", styleUrls: ["./table-paginator.component.scss"], - standalone: true, - imports: [NgFor, MatIconModule, MatFormFieldModule, MatSelectModule, MatOptionModule, MatButtonModule, NgClass], + imports: [MatIconModule, MatFormFieldModule, MatSelectModule, MatOptionModule, MatButtonModule, NgClass], }) export class TablePaginatorComponent implements OnInit, AfterViewChecked { - ngOnInit(): void {} @Input() paginator: MatPaginator; + options: Option[] = [ + { value: 25, label: "25 pr. side" }, + { value: 50, label: "50 pr. side" }, + { value: 100, label: "100 pr. side" }, + ]; + selected: number = 25; + currentPage: number = 1; + numberOfPages: number = 1; + hasNextPage: boolean = false; constructor(private matIconRegistry: MatIconRegistry, private domSanitizer: DomSanitizer) { this.matIconRegistry.addSvgIcon( @@ -43,16 +50,8 @@ export class TablePaginatorComponent implements OnInit, AfterViewChecked { {} ); } - options: Option[] = [ - { value: 25, label: "25 pr. side" }, - { value: 50, label: "50 pr. side" }, - { value: 100, label: "100 pr. side" }, - ]; - selected: number = 25; - currentPage: number = 1; - numberOfPages: number = 1; - hasNextPage: boolean = false; + ngOnInit(): void {} ngAfterViewChecked() { if (this.paginator && this.paginator.getNumberOfPages()) { diff --git a/src/app/shared/components/table-sort-icon/table-sort-icon.component.html b/src/app/shared/components/table-sort-icon/table-sort-icon.component.html index f24ba8888..8f88ad594 100644 --- a/src/app/shared/components/table-sort-icon/table-sort-icon.component.html +++ b/src/app/shared/components/table-sort-icon/table-sort-icon.component.html @@ -1,7 +1,7 @@
@if (sortDirection === 'asc') { - + } @else { - - } + +}
diff --git a/src/app/shared/components/table-sort-icon/table-sort-icon.component.ts b/src/app/shared/components/table-sort-icon/table-sort-icon.component.ts index d10df10e3..848e1bd3f 100644 --- a/src/app/shared/components/table-sort-icon/table-sort-icon.component.ts +++ b/src/app/shared/components/table-sort-icon/table-sort-icon.component.ts @@ -5,7 +5,6 @@ import { MatIcon } from "@angular/material/icon"; selector: "app-table-sort-icon", templateUrl: "./table-sort-icon.component.html", styleUrls: ["./table-sort-icon.component.scss"], - standalone: true, imports: [MatIcon], }) export class TableSortIconComponent { diff --git a/src/app/shared/components/top-bar-table/top-bar-table.component.html b/src/app/shared/components/top-bar-table/top-bar-table.component.html index 7d1fda01f..1fac64831 100644 --- a/src/app/shared/components/top-bar-table/top-bar-table.component.html +++ b/src/app/shared/components/top-bar-table/top-bar-table.component.html @@ -1,48 +1,52 @@
-

{{ title }}

-
+ @if (title) { +

{{ title }}

+ } +
+ @if (ctaActionButtonOnClick) { + + } @if (ctaRouterLinkSecondary) { - - + } @if (ctaRouterLinkPrimary) { - - + } @if (addDropdown) { + {{ dropdownLabel }} - + --{{ dropdownDefaultOption }}-- - - {{ option.name }} - + @for (option of options; track option) { + + {{ option.name }} + + } + }
diff --git a/src/app/shared/components/top-bar-table/top-bar-table.component.ts b/src/app/shared/components/top-bar-table/top-bar-table.component.ts index 10bfdc127..f22c92072 100644 --- a/src/app/shared/components/top-bar-table/top-bar-table.component.ts +++ b/src/app/shared/components/top-bar-table/top-bar-table.component.ts @@ -1,12 +1,12 @@ import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; import { Location } from "@angular/common"; import { TranslateService } from "@ngx-translate/core"; -import { MatDialog } from "@angular/material/dialog"; @Component({ selector: "app-top-bar-table", templateUrl: "./top-bar-table.component.html", styleUrls: ["./top-bar-table.component.scss"], + standalone: false, }) export class TopBarTableComponent implements OnInit { @Input() title: string; diff --git a/src/app/shared/components/top-bar/top-bar.component.html b/src/app/shared/components/top-bar/top-bar.component.html index b321a9d00..5f1fabf9a 100644 --- a/src/app/shared/components/top-bar/top-bar.component.html +++ b/src/app/shared/components/top-bar/top-bar.component.html @@ -1,13 +1,7 @@ - - - -
- + @if (hasEmail() && hasAnyPermission()) {
-
+ } @else { + + }
- {{ "USER_PAGE.USER_PAGE" | translate }} + @if (hasEmail()) { + {{ "USER_PAGE.USER_PAGE" | translate }} + } -
- - +
+ } - + @if (ctaRouterLink && ctaRouterLink != '' && canEdit) { + + }
diff --git a/src/app/shared/components/top-bar/top-bar.component.ts b/src/app/shared/components/top-bar/top-bar.component.ts index d5aecf3f4..99af1a01c 100644 --- a/src/app/shared/components/top-bar/top-bar.component.ts +++ b/src/app/shared/components/top-bar/top-bar.component.ts @@ -28,6 +28,7 @@ import { MeService } from "@shared/services/me.service"; selector: "app-top-bar", templateUrl: "./top-bar.component.html", styleUrls: ["./top-bar.component.scss"], + standalone: false, }) export class TopBarComponent implements OnInit { @Input() data: @@ -139,7 +140,7 @@ export class TopBarComponent implements OnInit { this.deleteSelectedInDropdown.emit(); } - onClickExtraDropdownOption(id: string) { + onClickExtraDropdownOption(id: string | number) { this.extraDropdownOptions.emit(id); const extraDropdownOption = this.dropDownButton.extraOptions.find(opt => opt.id === id); diff --git a/src/app/shared/components/welcome-dialog/welcome-dialog.component.html b/src/app/shared/components/welcome-dialog/welcome-dialog.component.html index ce8358c28..a4766697d 100644 --- a/src/app/shared/components/welcome-dialog/welcome-dialog.component.html +++ b/src/app/shared/components/welcome-dialog/welcome-dialog.component.html @@ -1,8 +1,8 @@
-

X

+

X

-
+

{{ "WELCOME-DIALOG.WELCOME" | translate }}

@@ -10,32 +10,36 @@

{{ (dialogModel?.hasSomePermission ? "WELCOME-DIALOG.WELCOME-SUB" : "WELCOME-DIALOG.NO-ACCESS") | translate }}

-
-

- {{ "WELCOME-DIALOG.SUB-HEADER-2" | translate }} -

-

- {{ "WELCOME-DIALOG.WELCOME-MESSAGE-3" | translate }} - - {{ "WELCOME-DIALOG.LINK-2" | translate }} - - {{ "WELCOME-DIALOG.WELCOME-MESSAGE-4" | translate }} - - {{ "WELCOME-DIALOG.LINK-3" | translate }}. - -

-
-
-
-{{ "DIALOG.WELCOME.DONT-SHOW-AGAIN" | translate }} +@if (dialogModel?.hasSomePermission) { + {{ "DIALOG.WELCOME.DONT-SHOW-AGAIN" | translate }} + +} diff --git a/src/app/shared/components/welcome-dialog/welcome-dialog.component.scss b/src/app/shared/components/welcome-dialog/welcome-dialog.component.scss index 8f6a5271e..3019e0d79 100644 --- a/src/app/shared/components/welcome-dialog/welcome-dialog.component.scss +++ b/src/app/shared/components/welcome-dialog/welcome-dialog.component.scss @@ -12,6 +12,7 @@ $spacing: 3rem; color: $color-white-001; margin-bottom: 0 !important; } + p { color: $color-white-001; } @@ -24,18 +25,22 @@ $spacing: 3rem; color: $color-white-001; font-size: 1.5rem; } + margin-bottom: 1rem !important; } color: $color-white-001; margin-bottom: 0 !important; margin-top: 0 !important; + &:nth-child(odd) { margin-top: 1.5rem !important; } + a { color: $color-white-001; border-bottom: 1px $color-white-001 solid; + &:hover, :visited { color: darken($color-primary, 10%); diff --git a/src/app/shared/components/welcome-dialog/welcome-dialog.component.ts b/src/app/shared/components/welcome-dialog/welcome-dialog.component.ts index 97e53a8a6..cde87e1ff 100644 --- a/src/app/shared/components/welcome-dialog/welcome-dialog.component.ts +++ b/src/app/shared/components/welcome-dialog/welcome-dialog.component.ts @@ -1,5 +1,5 @@ import { Component, Inject, OnInit } from "@angular/core"; -import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog"; +import { MAT_DIALOG_DATA, MatDialogRef } from "@angular/material/dialog"; import { UserService } from "@app/admin/users/user.service"; import { WelcomeDialogModel } from "@shared/models/dialog.model"; import { SharedVariableService } from "@shared/shared-variable/shared-variable.service"; @@ -8,6 +8,7 @@ import { SharedVariableService } from "@shared/shared-variable/shared-variable.s selector: "app-welcome-dialog", templateUrl: "./welcome-dialog.component.html", styleUrls: ["./welcome-dialog.component.scss"], + standalone: false, }) export class WelcomeDialogComponent implements OnInit { dontShowAgain = false; @@ -24,10 +25,7 @@ export class WelcomeDialogComponent implements OnInit { close(): void { if (this.dontShowAgain) { const userResponse = this.sharedVariableService.getUserInfo(); - this.userService.hideWelcome(userResponse.user.id).subscribe( - _response => {}, - _error => {} - ); + this.userService.hideWelcome(userResponse.user.id).subscribe(); } this.dialog.close(); diff --git a/src/app/shared/directives/drag-drop.directive.ts b/src/app/shared/directives/drag-drop.directive.ts index e3443c1fa..1ec20f1d6 100644 --- a/src/app/shared/directives/drag-drop.directive.ts +++ b/src/app/shared/directives/drag-drop.directive.ts @@ -1,7 +1,8 @@ -import { Directive, Output, Input, EventEmitter, HostBinding, HostListener } from "@angular/core"; +import { Directive, EventEmitter, HostBinding, HostListener, Output } from "@angular/core"; @Directive({ selector: "[appDragDrop]", + standalone: false, }) export class DragDropDirective { @Output() onFileDropped = new EventEmitter(); diff --git a/src/app/shared/directives/dropdown.directive.ts b/src/app/shared/directives/dropdown.directive.ts index 7b78d9081..0b044f78e 100644 --- a/src/app/shared/directives/dropdown.directive.ts +++ b/src/app/shared/directives/dropdown.directive.ts @@ -1,7 +1,8 @@ -import { Directive, HostListener, HostBinding } from "@angular/core"; +import { Directive, HostBinding, HostListener } from "@angular/core"; @Directive({ selector: "[appDropdown]", + standalone: false, }) export class DropdownDirective { @HostBinding("class.open") isOpen = false; diff --git a/src/app/shared/directives/placeholder.directive.ts b/src/app/shared/directives/placeholder.directive.ts index 2d063aaac..12623bda6 100644 --- a/src/app/shared/directives/placeholder.directive.ts +++ b/src/app/shared/directives/placeholder.directive.ts @@ -2,6 +2,7 @@ import { Directive, ViewContainerRef } from "@angular/core"; @Directive({ selector: "[appPlaceholder]", + standalone: false, }) export class PlaceholderDirective { constructor(public viewContainerRef: ViewContainerRef) {} diff --git a/src/app/shared/helpers/auth-jwt.interceptor.ts b/src/app/shared/helpers/auth-jwt.interceptor.ts index fabdea06b..9cb528faf 100644 --- a/src/app/shared/helpers/auth-jwt.interceptor.ts +++ b/src/app/shared/helpers/auth-jwt.interceptor.ts @@ -1,5 +1,5 @@ import { Injectable } from "@angular/core"; -import { HttpEvent, HttpRequest, HttpHandler, HttpInterceptor } from "@angular/common/http"; +import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from "@angular/common/http"; import { Observable } from "rxjs"; import { environment } from "../../../environments/environment"; diff --git a/src/app/shared/helpers/download.helper.ts b/src/app/shared/helpers/download.helper.ts index 8e8b841d2..31c4e53ca 100644 --- a/src/app/shared/helpers/download.helper.ts +++ b/src/app/shared/helpers/download.helper.ts @@ -1,6 +1,6 @@ import { HttpEvent, HttpEventType, HttpProgressEvent, HttpResponse } from "@angular/common/http"; import { Observable } from "rxjs"; -import { distinctUntilChanged, scan, map, tap } from "rxjs/operators"; +import { distinctUntilChanged, scan } from "rxjs/operators"; function isHttpResponse(event: HttpEvent): event is HttpResponse { return event.type === HttpEventType.Response; diff --git a/src/app/shared/helpers/mat-paginator-intl-da.ts b/src/app/shared/helpers/mat-paginator-intl-da.ts index 99908213d..277fb1183 100644 --- a/src/app/shared/helpers/mat-paginator-intl-da.ts +++ b/src/app/shared/helpers/mat-paginator-intl-da.ts @@ -1,6 +1,5 @@ import { Injectable } from "@angular/core"; import { MatPaginatorIntl } from "@angular/material/paginator"; -import { RouterEvent } from "@angular/router"; import { TranslateService } from "@ngx-translate/core"; const ITEMS_PER_PAGE = "PAGINATOR.ITEM_PER_PAGE"; @@ -12,16 +11,17 @@ const OF = "PAGINATOR.OF"; @Injectable() export class MatPaginatorIntlDa extends MatPaginatorIntl { + ofLabel: string; + public constructor(private translate: TranslateService) { super(); - this.translate.onLangChange.subscribe((e: Event | RouterEvent) => { + this.translate.onLangChange.subscribe(() => { this.getAndInitTranslations(); }); this.getAndInitTranslations(); } - ofLabel: string; public getRangeLabel = (page: number, pageSize: number, length: number): string => { if (length === 0 || pageSize === 0) { diff --git a/src/app/shared/helpers/server-error.interceptor.ts b/src/app/shared/helpers/server-error.interceptor.ts index d4bada638..7eb553fb0 100644 --- a/src/app/shared/helpers/server-error.interceptor.ts +++ b/src/app/shared/helpers/server-error.interceptor.ts @@ -1,7 +1,7 @@ import { Injectable } from "@angular/core"; -import { HttpEvent, HttpRequest, HttpHandler, HttpInterceptor, HttpErrorResponse } from "@angular/common/http"; +import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from "@angular/common/http"; import { Observable, throwError } from "rxjs"; -import { retry, catchError } from "rxjs/operators"; +import { catchError, retry } from "rxjs/operators"; @Injectable() export class ServerErrorInterceptor implements HttpInterceptor { diff --git a/src/app/shared/models/dropdown-button.model.ts b/src/app/shared/models/dropdown-button.model.ts index 6c2282518..f533cc30a 100644 --- a/src/app/shared/models/dropdown-button.model.ts +++ b/src/app/shared/models/dropdown-button.model.ts @@ -1,9 +1,7 @@ -import { PermissionType } from "@app/admin/permission/permission.model"; - export interface ExtraDropdownOption { id: string | number; label: string; - onClick?: () => void + onClick?: () => void; } export interface DropdownButton { diff --git a/src/app/shared/models/sigfox-device-type.model.ts b/src/app/shared/models/sigfox-device-type.model.ts index b4ccfb9f8..26a4786f1 100644 --- a/src/app/shared/models/sigfox-device-type.model.ts +++ b/src/app/shared/models/sigfox-device-type.model.ts @@ -1,5 +1,3 @@ -import { SigfoxGroup } from "./sigfox-group.model"; - export class SigfoxDeviceType { id: string; name: string; diff --git a/src/app/shared/pipes/activeDeactive.pipe.ts b/src/app/shared/pipes/activeDeactive.pipe.ts index bc4b48922..dcdfb8a92 100644 --- a/src/app/shared/pipes/activeDeactive.pipe.ts +++ b/src/app/shared/pipes/activeDeactive.pipe.ts @@ -2,6 +2,7 @@ import { Pipe, PipeTransform } from "@angular/core"; @Pipe({ name: "activeDeactive", + standalone: false, }) export class ActiveDeactivePipe implements PipeTransform { transform(value: any, ...args: any[]): any { diff --git a/src/app/shared/pipes/created-updated-by.pipe.ts b/src/app/shared/pipes/created-updated-by.pipe.ts index e2b88f351..103491e2f 100644 --- a/src/app/shared/pipes/created-updated-by.pipe.ts +++ b/src/app/shared/pipes/created-updated-by.pipe.ts @@ -2,6 +2,7 @@ import { Pipe, PipeTransform } from "@angular/core"; @Pipe({ name: "createdUpdatedBy", + standalone: false, }) export class CreatedUpdatedByPipe implements PipeTransform { transform(value: any, ...args: any[]): any { diff --git a/src/app/shared/pipes/custom-date.pipe.ts b/src/app/shared/pipes/custom-date.pipe.ts index 9a15624a1..e79aa0908 100644 --- a/src/app/shared/pipes/custom-date.pipe.ts +++ b/src/app/shared/pipes/custom-date.pipe.ts @@ -3,6 +3,7 @@ import { DatePipe } from "@angular/common"; @Pipe({ name: "dkTime", + standalone: false, }) export class CustomDatePipe extends DatePipe implements PipeTransform { transform(value: any, args?: any): any { @@ -12,6 +13,7 @@ export class CustomDatePipe extends DatePipe implements PipeTransform { @Pipe({ name: "dkTimeWithSeconds", + standalone: false, }) export class CustomDatePipeWithSeconds extends DatePipe implements PipeTransform { transform(value: any, args?: any): any { @@ -21,6 +23,7 @@ export class CustomDatePipeWithSeconds extends DatePipe implements PipeTransform @Pipe({ name: "dkTimeWithSecondsNoPrefix", + standalone: false, }) export class CustomDatePipeWithSecondsNoPrefix extends DatePipe implements PipeTransform { transform(value: any, args?: any): any { @@ -30,6 +33,7 @@ export class CustomDatePipeWithSecondsNoPrefix extends DatePipe implements PipeT @Pipe({ name: "tableDatePipe", + standalone: false, }) export class CustomTableDatePipe extends DatePipe implements PipeTransform { transform(value: any, args?: any): any { @@ -39,6 +43,7 @@ export class CustomTableDatePipe extends DatePipe implements PipeTransform { @Pipe({ name: "tableDateWithSecondsPipe", + standalone: false, }) export class CustomTableDateWithSecondsPipe extends DatePipe implements PipeTransform { transform(value: any, args?: any): any { @@ -48,6 +53,7 @@ export class CustomTableDateWithSecondsPipe extends DatePipe implements PipeTran @Pipe({ name: "dateOnly", + standalone: false, }) export class DateOnlyPipe extends DatePipe implements PipeTransform { transform(value: any, args?: any): any { diff --git a/src/app/shared/pipes/filter-devices.pipe.ts b/src/app/shared/pipes/filter-devices.pipe.ts index d0ae59c48..a76ff8555 100644 --- a/src/app/shared/pipes/filter-devices.pipe.ts +++ b/src/app/shared/pipes/filter-devices.pipe.ts @@ -4,6 +4,7 @@ import { DeviceType } from "@shared/enums/device-type"; @Pipe({ name: "filterDevices", + standalone: false, }) export class FilterDevicesPipe implements PipeTransform { transform(value: IotDevice[] | undefined, ..._: unknown[]): IotDevice[] { diff --git a/src/app/shared/pipes/gateway/gateway-status-class.pipe.ts b/src/app/shared/pipes/gateway/gateway-status-class.pipe.ts index df921fcdb..6e4c7d2a2 100644 --- a/src/app/shared/pipes/gateway/gateway-status-class.pipe.ts +++ b/src/app/shared/pipes/gateway/gateway-status-class.pipe.ts @@ -8,6 +8,7 @@ const onlineClass = "online"; @Pipe({ name: "gatewayStatusClass", + standalone: false, }) /** * Separate pipe to format text to avoid renders if none of the values diff --git a/src/app/shared/pipes/gateway/gateway-status-tooltip.pipe.ts b/src/app/shared/pipes/gateway/gateway-status-tooltip.pipe.ts index 3a29232b6..8d9987242 100644 --- a/src/app/shared/pipes/gateway/gateway-status-tooltip.pipe.ts +++ b/src/app/shared/pipes/gateway/gateway-status-tooltip.pipe.ts @@ -2,6 +2,7 @@ import { Pipe, PipeTransform } from "@angular/core"; @Pipe({ name: "gatewayStatusTooltip", + standalone: false, }) /** * Separate pipe to format text to avoid renders if none of the values diff --git a/src/app/shared/pipes/permission/can-edit-application.pipe.ts b/src/app/shared/pipes/permission/can-edit-application.pipe.ts index 1b5a6d55e..3cf073e48 100644 --- a/src/app/shared/pipes/permission/can-edit-application.pipe.ts +++ b/src/app/shared/pipes/permission/can-edit-application.pipe.ts @@ -4,6 +4,7 @@ import { MeService } from "@shared/services/me.service"; @Pipe({ name: "canEditApplication", + standalone: false, }) export class CanEditApplicationPipe implements PipeTransform { constructor(private meService: MeService) {} diff --git a/src/app/shared/pipes/permission/is-global-admin.pipe.ts b/src/app/shared/pipes/permission/is-global-admin.pipe.ts index 20ceaeb57..61a93967c 100644 --- a/src/app/shared/pipes/permission/is-global-admin.pipe.ts +++ b/src/app/shared/pipes/permission/is-global-admin.pipe.ts @@ -3,6 +3,7 @@ import { PermissionResponse, PermissionType } from "@app/admin/permission/permis @Pipe({ name: "isGlobalAdmin", + standalone: false, }) export class IsGlobalAdminPipe implements PipeTransform { transform(value: PermissionResponse[], ...args: any[]): boolean { diff --git a/src/app/shared/pipes/permission/translate-permissions.pipe.ts b/src/app/shared/pipes/permission/translate-permissions.pipe.ts index 17a357785..d369cc25e 100644 --- a/src/app/shared/pipes/permission/translate-permissions.pipe.ts +++ b/src/app/shared/pipes/permission/translate-permissions.pipe.ts @@ -4,6 +4,7 @@ import { TranslateService } from "@ngx-translate/core"; @Pipe({ name: "translatePermissions", + standalone: false, }) export class TranslatePermissionsPipe implements PipeTransform { constructor(private translate: TranslateService) {} diff --git a/src/app/shared/pipes/pipes.module.ts b/src/app/shared/pipes/pipes.module.ts index 5ad4f4e3e..99b461dfd 100644 --- a/src/app/shared/pipes/pipes.module.ts +++ b/src/app/shared/pipes/pipes.module.ts @@ -4,7 +4,14 @@ import { YesNoPipe } from "./yesNo.pipe"; import { ActiveDeactivePipe } from "./activeDeactive.pipe"; import { IsGlobalAdminPipe } from "./permission/is-global-admin.pipe"; import { CreatedUpdatedByPipe } from "./created-updated-by.pipe"; -import { CustomDatePipe, CustomDatePipeWithSeconds, CustomDatePipeWithSecondsNoPrefix, CustomTableDatePipe, CustomTableDateWithSecondsPipe, DateOnlyPipe } from "./custom-date.pipe"; +import { + CustomDatePipe, + CustomDatePipeWithSeconds, + CustomDatePipeWithSecondsNoPrefix, + CustomTableDatePipe, + CustomTableDateWithSecondsPipe, + DateOnlyPipe, +} from "./custom-date.pipe"; import { FilterDevicesPipe } from "./filter-devices.pipe"; import { TranslatePermissionsPipe } from "./permission/translate-permissions.pipe"; import { SortByPipe } from "./sort-by.pipe"; diff --git a/src/app/shared/pipes/sort-by-translation.pipe.ts b/src/app/shared/pipes/sort-by-translation.pipe.ts index 16f3b70ac..bf078553c 100644 --- a/src/app/shared/pipes/sort-by-translation.pipe.ts +++ b/src/app/shared/pipes/sort-by-translation.pipe.ts @@ -2,7 +2,10 @@ import { Pipe, PipeTransform } from "@angular/core"; import { TranslateService } from "@ngx-translate/core"; import { sortBySelector } from "@shared/helpers/array.helper"; -@Pipe({ name: "sortByTranslation" }) +@Pipe({ + name: "sortByTranslation", + standalone: false, +}) export class SortByTranslationPipe implements PipeTransform { constructor(private translate: TranslateService) {} diff --git a/src/app/shared/pipes/sort-by.pipe.ts b/src/app/shared/pipes/sort-by.pipe.ts index 02422def7..709e49493 100644 --- a/src/app/shared/pipes/sort-by.pipe.ts +++ b/src/app/shared/pipes/sort-by.pipe.ts @@ -1,7 +1,10 @@ import { Pipe, PipeTransform } from "@angular/core"; import { sortBy } from "@shared/helpers/array.helper"; -@Pipe({ name: "sortBy" }) +@Pipe({ + name: "sortBy", + standalone: false, +}) export class SortByPipe implements PipeTransform { /** * Example: diff --git a/src/app/shared/pipes/yesNo.pipe.ts b/src/app/shared/pipes/yesNo.pipe.ts index aa69d8ac1..73aee8db6 100644 --- a/src/app/shared/pipes/yesNo.pipe.ts +++ b/src/app/shared/pipes/yesNo.pipe.ts @@ -2,6 +2,7 @@ import { Pipe, PipeTransform } from "@angular/core"; @Pipe({ name: "yesNo", + standalone: false, }) export class YesNoPipe implements PipeTransform { transform(value: any, ...args: any[]): any { diff --git a/src/app/shared/services/chirpstack-gateway.service.ts b/src/app/shared/services/chirpstack-gateway.service.ts index f9923e528..53aab411b 100644 --- a/src/app/shared/services/chirpstack-gateway.service.ts +++ b/src/app/shared/services/chirpstack-gateway.service.ts @@ -2,10 +2,10 @@ import { Injectable } from "@angular/core"; import { RestService } from "./rest.service"; import { Observable } from "rxjs"; import { - GatewayResponse, Gateway, GatewayData, GatewayRequest, + GatewayResponse, GatewayResponseMany, UpdateGatewayOrganization, } from "@app/gateway/gateway.model"; diff --git a/src/app/shared/services/download.service.ts b/src/app/shared/services/download.service.ts index 97bbd9a62..25c4f72f6 100644 --- a/src/app/shared/services/download.service.ts +++ b/src/app/shared/services/download.service.ts @@ -1,4 +1,4 @@ -import { Injectable, Inject } from "@angular/core"; +import { Inject, Injectable } from "@angular/core"; import { HttpClient } from "@angular/common/http"; import { download, Download } from "../helpers/download.helper"; import { Observable } from "rxjs"; diff --git a/src/app/shared/services/lorawan-gateway.service.ts b/src/app/shared/services/lorawan-gateway.service.ts index 3c69bf7b8..e5eb9bb3a 100644 --- a/src/app/shared/services/lorawan-gateway.service.ts +++ b/src/app/shared/services/lorawan-gateway.service.ts @@ -1,9 +1,9 @@ import { Injectable } from "@angular/core"; import { AllGatewayStatusResponse, + GatewayStatus, GetAllGatewayStatusParameters, GetGatewayStatusParameters, - GatewayStatus, } from "@app/gateway/gateway.model"; import { Observable } from "rxjs"; import { RestService } from "./rest.service"; diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index 769dfebc9..d29b45802 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -7,7 +7,7 @@ import { FormsModule } from "@angular/forms"; import { RouterModule } from "@angular/router"; import { SearchModule } from "@app/search/search.module"; import { FontAwesomeModule } from "@fortawesome/angular-fontawesome"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslateDirective, TranslatePipe } from "@ngx-translate/core"; import { AlertComponent } from "./components/alert/alert.component"; import { BatteriStatusComponent } from "./components/batteri-status/batteri-status.component"; import { ColumnSelectorComponent } from "./components/column-selector/column-selector.component"; @@ -40,7 +40,8 @@ import { PipesModule } from "./pipes/pipes.module"; imports: [ DirectivesModule, CommonModule, - TranslateModule, + TranslatePipe, + TranslateDirective, RouterModule, FormsModule, NGMaterialModule, @@ -51,7 +52,8 @@ import { PipesModule } from "./pipes/pipes.module"; ], exports: [ AlertComponent, - TranslateModule, + TranslatePipe, + TranslateDirective, LoadingSpinnerComponent, BatteriStatusComponent, MapComponent, diff --git a/src/app/shared/styles/leaflet-styles.scss b/src/app/shared/styles/leaflet-styles.scss index 64a4fb06d..cfbe89872 100644 --- a/src/app/shared/styles/leaflet-styles.scss +++ b/src/app/shared/styles/leaflet-styles.scss @@ -25,6 +25,7 @@ app-gateway-edit app-map .leaflet-control-geosearch form input { .marker-cluster-small { background-color: rgba(181, 226, 140, 0.6); } + .marker-cluster-small div { background-color: rgba(110, 204, 57, 0.6); } @@ -32,6 +33,7 @@ app-gateway-edit app-map .leaflet-control-geosearch form input { .marker-cluster-medium { background-color: rgba(241, 211, 87, 0.6); } + .marker-cluster-medium div { background-color: rgba(240, 194, 12, 0.6); } @@ -39,6 +41,7 @@ app-gateway-edit app-map .leaflet-control-geosearch form input { .marker-cluster-large { background-color: rgba(253, 156, 115, 0.6); } + .marker-cluster-large div { background-color: rgba(241, 128, 23, 0.6); } @@ -47,6 +50,7 @@ app-gateway-edit app-map .leaflet-control-geosearch form input { .leaflet-oldie .marker-cluster-small { background-color: rgb(181, 226, 140); } + .leaflet-oldie .marker-cluster-small div { background-color: rgb(110, 204, 57); } @@ -54,6 +58,7 @@ app-gateway-edit app-map .leaflet-control-geosearch form input { .leaflet-oldie .marker-cluster-medium { background-color: rgb(241, 211, 87); } + .leaflet-oldie .marker-cluster-medium div { background-color: rgb(240, 194, 12); } @@ -61,6 +66,7 @@ app-gateway-edit app-map .leaflet-control-geosearch form input { .leaflet-oldie .marker-cluster-large { background-color: rgb(253, 156, 115); } + .leaflet-oldie .marker-cluster-large div { background-color: rgb(241, 128, 23); } @@ -69,6 +75,7 @@ app-gateway-edit app-map .leaflet-control-geosearch form input { background-clip: padding-box; border-radius: 20px; } + .marker-cluster div { width: 30px; height: 30px; @@ -79,6 +86,7 @@ app-gateway-edit app-map .leaflet-control-geosearch form input { border-radius: 15px; font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif; } + .marker-cluster span { line-height: 30px; } diff --git a/src/app/sigfox/sigfox-groups-detail/sigfox-device-type-table/sigfox-device-type-table.component.html b/src/app/sigfox/sigfox-groups-detail/sigfox-device-type-table/sigfox-device-type-table.component.html index 0acd0dbeb..f2024a2f4 100644 --- a/src/app/sigfox/sigfox-groups-detail/sigfox-device-type-table/sigfox-device-type-table.component.html +++ b/src/app/sigfox/sigfox-groups-detail/sigfox-device-type-table/sigfox-device-type-table.component.html @@ -1,21 +1,21 @@
- +
- - + - - + + - - + +
{{ "SIGFOX-GROUP.PROFILES.DEVICE-TYPE-NAME" | translate }} - + {{ "SIGFOX-GROUP.PROFILES.DEVICE-TYPE-NAME" | translate }} + {{ element.name }} {{ "SIGFOX-GROUP.PROFILES.DEVICE-TYPE-ALERT-EMAIL" | translate }}{{ element.alertEmail }}{{ "SIGFOX-GROUP.PROFILES.DEVICE-TYPE-ALERT-EMAIL" | translate }}{{ element.alertEmail }}
diff --git a/src/app/sigfox/sigfox-groups-detail/sigfox-device-type-table/sigfox-device-type-table.component.ts b/src/app/sigfox/sigfox-groups-detail/sigfox-device-type-table/sigfox-device-type-table.component.ts index c38a9aada..c425fbb3c 100644 --- a/src/app/sigfox/sigfox-groups-detail/sigfox-device-type-table/sigfox-device-type-table.component.ts +++ b/src/app/sigfox/sigfox-groups-detail/sigfox-device-type-table/sigfox-device-type-table.component.ts @@ -12,6 +12,7 @@ import { DefaultPageSizeOptions } from "@shared/constants/page.constants"; selector: "app-sigfox-device-type-table", templateUrl: "./sigfox-device-type-table.component.html", styleUrls: ["./sigfox-device-type-table.component.scss"], + standalone: false, }) export class SigfoxDeviceTypeTableComponent implements OnInit, OnChanges { @Input() sigfoxDevices: SigfoxDeviceType[]; diff --git a/src/app/sigfox/sigfox-groups-detail/sigfox-device-types-edit/sigfox-device-types-edit.component.html b/src/app/sigfox/sigfox-groups-detail/sigfox-device-types-edit/sigfox-device-types-edit.component.html index 38007dc36..cdff012b1 100644 --- a/src/app/sigfox/sigfox-groups-detail/sigfox-device-types-edit/sigfox-device-types-edit.component.html +++ b/src/app/sigfox/sigfox-groups-detail/sigfox-device-types-edit/sigfox-device-types-edit.component.html @@ -1,95 +1,104 @@
-
-
    -
    -
  • - {{ error | translate }} -
  • -
    -
-
+ @if (errorMessages) { +
+
    + @if (errorMessages) { +
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
    + } +
+
+ }
*
*
-
-
- - {{ "QUESTION.SIGFOX.DEVICETYPE.CHOOSE-CONTRACT" | translate }} - - + @if (sigfoxDeviceType.groupId) { +
+
+ + {{ "QUESTION.SIGFOX.DEVICETYPE.CHOOSE-CONTRACT" | translate }} + + +
-
+ }
-
diff --git a/src/app/sigfox/sigfox-groups-detail/sigfox-device-types-edit/sigfox-device-types-edit.component.ts b/src/app/sigfox/sigfox-groups-detail/sigfox-device-types-edit/sigfox-device-types-edit.component.ts index bb3729f43..994483c2e 100644 --- a/src/app/sigfox/sigfox-groups-detail/sigfox-device-types-edit/sigfox-device-types-edit.component.ts +++ b/src/app/sigfox/sigfox-groups-detail/sigfox-device-types-edit/sigfox-device-types-edit.component.ts @@ -20,12 +20,11 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-sigfox-device-types-edit", templateUrl: "./sigfox-device-types-edit.component.html", styleUrls: ["./sigfox-device-types-edit.component.scss"], + standalone: false, }) export class SigfoxDeviceTypesEditComponent implements OnInit { sigfoxDeviceType = new SigfoxDeviceType(); public sigfoxGroup: SigfoxGroup; - private sigfoxGroupId: number; - private deviceTypeId: string; public sigfoxContracts: SigfoxContract[]; public errorMessages: string[]; public errorFields: string[]; @@ -37,6 +36,8 @@ export class SigfoxDeviceTypesEditComponent implements OnInit { public canEdit = false; organizationId: number; subscription: Subscription; + private sigfoxGroupId: number; + private deviceTypeId: string; constructor( private translate: TranslateService, @@ -69,6 +70,18 @@ export class SigfoxDeviceTypesEditComponent implements OnInit { this.canEdit = this.meService.hasAccessToTargetOrganization(OrganizationAccessScope.ApplicationWrite); } + onSubmit(): void { + if (this.sigfoxDeviceType.id) { + this.update(); + } else { + this.create(); + } + } + + routeBack(): void { + this.location.back(); + } + private getContracts(groupId: number) { this.sigfoxService.getContracts(groupId).subscribe((response: any) => { this.sigfoxContracts = response; @@ -84,34 +97,26 @@ export class SigfoxDeviceTypesEditComponent implements OnInit { } private create(): void { - this.sigfoxService.postDeviceType(this.sigfoxDeviceType).subscribe( - response => { + this.sigfoxService.postDeviceType(this.sigfoxDeviceType).subscribe({ + next: response => { console.log(response); this.routeBack(); }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { this.showError(error); - } - ); + }, + }); } private update(): void { - this.sigfoxService.putDeviceType(this.sigfoxDeviceType).subscribe( - response => { + this.sigfoxService.putDeviceType(this.sigfoxDeviceType).subscribe({ + next: () => { this.routeBack(); }, - error => { + error: error => { this.showError(error); - } - ); - } - - onSubmit(): void { - if (this.sigfoxDeviceType.id) { - this.update(); - } else { - this.create(); - } + }, + }); } private showError(error: HttpErrorResponse) { @@ -121,8 +126,4 @@ export class SigfoxDeviceTypesEditComponent implements OnInit { this.errorFields = errorMessages.errorFields; this.errorMessages = errorMessages.errorMessages; } - - routeBack(): void { - this.location.back(); - } } diff --git a/src/app/sigfox/sigfox-groups-detail/sigfox-groups-detail.component.html b/src/app/sigfox/sigfox-groups-detail/sigfox-groups-detail.component.html index 4abe657b3..4b378101f 100644 --- a/src/app/sigfox/sigfox-groups-detail/sigfox-groups-detail.component.html +++ b/src/app/sigfox/sigfox-groups-detail/sigfox-groups-detail.component.html @@ -1,22 +1,24 @@ -
- - -
-
-
-
-

{{ "SIGFOX-GROUP.PROFILES.DEVICE-TYPE" | translate }}

- - +@if (sigfoxGroup) { +
+ + +
+
+
+
+

{{ "SIGFOX-GROUP.PROFILES.DEVICE-TYPE" | translate }}

+ + +
-
+} diff --git a/src/app/sigfox/sigfox-groups-detail/sigfox-groups-detail.component.ts b/src/app/sigfox/sigfox-groups-detail/sigfox-groups-detail.component.ts index c575a6b0e..acb0e4317 100644 --- a/src/app/sigfox/sigfox-groups-detail/sigfox-groups-detail.component.ts +++ b/src/app/sigfox/sigfox-groups-detail/sigfox-groups-detail.component.ts @@ -1,12 +1,9 @@ import { Component, OnInit } from "@angular/core"; -import { Params } from "@angular/router"; -import { ActivatedRoute, Router } from "@angular/router"; +import { ActivatedRoute } from "@angular/router"; import { TranslateService } from "@ngx-translate/core"; import { SigfoxDeviceType } from "@shared/models/sigfox-device-type.model"; import { SigfoxGroup } from "@shared/models/sigfox-group.model"; import { SigfoxService } from "@shared/services/sigfox.service"; -import { SigfoxGroupData } from "@sigfox/sigfox-settings.model"; -import { Observable } from "rxjs"; import { MeService } from "@shared/services/me.service"; import { OrganizationAccessScope } from "@shared/enums/access-scopes"; @@ -14,13 +11,14 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-sigfox-groups-detail", templateUrl: "./sigfox-groups-detail.component.html", styleUrls: ["./sigfox-groups-detail.component.scss"], + standalone: false, }) export class SigfoxGroupsDetailComponent implements OnInit { isLoadingResults = true; - private sigfoxGroupId: number; sigfoxDevices: SigfoxDeviceType[]; sigfoxGroup: SigfoxGroup; canEdit: boolean; + private sigfoxGroupId: number; constructor( public translate: TranslateService, @@ -37,25 +35,25 @@ export class SigfoxGroupsDetailComponent implements OnInit { } getSigFoxDevices() { - this.sigfoxService.getDeviceTypes(this.sigfoxGroupId).subscribe( - response => { + this.sigfoxService.getDeviceTypes(this.sigfoxGroupId).subscribe({ + next: response => { this.sigfoxDevices = response.data; this.isLoadingResults = false; }, - error => { + error: error => { console.log(error); - } - ); + }, + }); } getSigFoxGroup(id: number) { - this.sigfoxService.getGroup(id, {}).subscribe( - response => { + this.sigfoxService.getGroup(id, {}).subscribe({ + next: response => { this.sigfoxGroup = response; }, - error => { + error: error => { console.log(error); - } - ); + }, + }); } } diff --git a/src/app/sigfox/sigfox-groups-edit/sigfox-groups-edit.component.html b/src/app/sigfox/sigfox-groups-edit/sigfox-groups-edit.component.html index 07f5fbffa..c6247ea66 100644 --- a/src/app/sigfox/sigfox-groups-edit/sigfox-groups-edit.component.html +++ b/src/app/sigfox/sigfox-groups-edit/sigfox-groups-edit.component.html @@ -1,22 +1,27 @@
-
-
    -
  • - {{ error | translate }} -
  • -
-
-
+ @if (errorMessages) { +
+
    + @for (error of errorMessages; track error) { +
  • + {{ error | translate }} +
  • + } +
+
+ } @if (isLoading) { +
- + } @if (!isLoading) { +

{{ "SIGFOX-GROUP.API-ACCESS" | translate }} API credential creation @@ -25,31 +30,32 @@

-
+ }
diff --git a/src/app/sigfox/sigfox-groups-edit/sigfox-groups-edit.component.ts b/src/app/sigfox/sigfox-groups-edit/sigfox-groups-edit.component.ts index 586772e66..966199b9d 100644 --- a/src/app/sigfox/sigfox-groups-edit/sigfox-groups-edit.component.ts +++ b/src/app/sigfox/sigfox-groups-edit/sigfox-groups-edit.component.ts @@ -18,6 +18,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-sigfox-groups-edit", templateUrl: "./sigfox-groups-edit.component.html", styleUrls: ["./sigfox-groups-edit.component.scss"], + standalone: false, }) export class SigfoxGroupsEditComponent implements OnInit, OnDestroy { sigfoxGroupId: number; @@ -59,50 +60,20 @@ export class SigfoxGroupsEditComponent implements OnInit, OnDestroy { } getSigfoxGroup(id: number) { - this.subscription = this.sigfoxService.getGroup(id).subscribe( - response => { + this.subscription = this.sigfoxService.getGroup(id).subscribe({ + next: response => { this.sigfoxGroup = response; }, - (error: HttpErrorResponse) => { + error: (error: HttpErrorResponse) => { console.log(error); - } - ); - } - - private create(): void { - this.sigfoxService.createGroupConnection(this.sigfoxGroup).subscribe( - response => { - console.log(response); - this.routeBack(); - }, - (error: HttpErrorResponse) => { - this.showError(error); - } - ); - } - - private update(): void { - this.sigfoxService.updateGroupConnection(this.sigfoxGroup, this.sigfoxGroup.id).subscribe( - response => { - this.routeBack(); }, - error => { - this.showError(error); - } - ); + }); } routeBack(): void { this.location.back(); } - private showError(error: HttpErrorResponse) { - const errorMessages: ErrorMessage = this.errorMessageService.handleErrorMessageWithFields(error); - this.errorMessages = errorMessages.errorMessages; - this.errorFields = errorMessages.errorFields; - this.formFailedSubmit = true; - } - onSubmit(form: NgForm) { if (!form.valid) { return; @@ -123,4 +94,34 @@ export class SigfoxGroupsEditComponent implements OnInit, OnDestroy { this.subscription.unsubscribe(); } } + + private create(): void { + this.sigfoxService.createGroupConnection(this.sigfoxGroup).subscribe({ + next: response => { + console.log(response); + this.routeBack(); + }, + error: (error: HttpErrorResponse) => { + this.showError(error); + }, + }); + } + + private update(): void { + this.sigfoxService.updateGroupConnection(this.sigfoxGroup, this.sigfoxGroup.id).subscribe({ + next: () => { + this.routeBack(); + }, + error: error => { + this.showError(error); + }, + }); + } + + private showError(error: HttpErrorResponse) { + const errorMessages: ErrorMessage = this.errorMessageService.handleErrorMessageWithFields(error); + this.errorMessages = errorMessages.errorMessages; + this.errorFields = errorMessages.errorFields; + this.formFailedSubmit = true; + } } diff --git a/src/app/sigfox/sigfox-groups-list/sigfox-groups-list-item/sigfox-groups-list-item.component.html b/src/app/sigfox/sigfox-groups-list/sigfox-groups-list-item/sigfox-groups-list-item.component.html index 7548418b2..b7446a924 100644 --- a/src/app/sigfox/sigfox-groups-list/sigfox-groups-list-item/sigfox-groups-list-item.component.html +++ b/src/app/sigfox/sigfox-groups-list/sigfox-groups-list-item/sigfox-groups-list-item.component.html @@ -6,10 +6,12 @@ {{ sigfoxGroup.sigfoxGroupData.name }}
-
- - - -
+ @if (canEdit) { +
+ + + +
+ }
diff --git a/src/app/sigfox/sigfox-groups-list/sigfox-groups-list-item/sigfox-groups-list-item.component.ts b/src/app/sigfox/sigfox-groups-list/sigfox-groups-list-item/sigfox-groups-list-item.component.ts index 1385c0051..18523573a 100644 --- a/src/app/sigfox/sigfox-groups-list/sigfox-groups-list-item/sigfox-groups-list-item.component.ts +++ b/src/app/sigfox/sigfox-groups-list/sigfox-groups-list-item/sigfox-groups-list-item.component.ts @@ -1,6 +1,6 @@ import { Component, Input, OnInit } from "@angular/core"; import { ActivatedRoute, Router } from "@angular/router"; -import { faEdit, faPen, faToolbox } from "@fortawesome/free-solid-svg-icons"; +import { faEdit, faToolbox } from "@fortawesome/free-solid-svg-icons"; import { SigfoxGroup } from "@shared/models/sigfox-group.model"; import { MeService } from "@shared/services/me.service"; import { OrganizationAccessScope } from "@shared/enums/access-scopes"; @@ -9,6 +9,7 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-sigfox-groups-list-item", templateUrl: "./sigfox-groups-list-item.component.html", styleUrls: ["./sigfox-groups-list-item.component.scss"], + standalone: false, }) export class SigfoxGroupsListItemComponent implements OnInit { faToolbox = faToolbox; diff --git a/src/app/sigfox/sigfox-groups-list/sigfox-groups-list.component.html b/src/app/sigfox/sigfox-groups-list/sigfox-groups-list.component.html index cfdf976dc..5a21309c6 100644 --- a/src/app/sigfox/sigfox-groups-list/sigfox-groups-list.component.html +++ b/src/app/sigfox/sigfox-groups-list/sigfox-groups-list.component.html @@ -1,22 +1,27 @@ -
- - - -
-
-
-
-

{{ "SIGFOX-GROUP.ADMINISTRATION.NAME" | translate }}

- - +@if (sigfoxGroups) { +
+ + +
+
+
+ @if (sigfoxGroups) { +
+

{{ "SIGFOX-GROUP.ADMINISTRATION.NAME" | translate }}

+ @for (group of sigfoxGroups; track group; let i = $index) { + + + } +
+ }
-
+} diff --git a/src/app/sigfox/sigfox-groups-list/sigfox-groups-list.component.ts b/src/app/sigfox/sigfox-groups-list/sigfox-groups-list.component.ts index 69384afef..8e01b16a2 100644 --- a/src/app/sigfox/sigfox-groups-list/sigfox-groups-list.component.ts +++ b/src/app/sigfox/sigfox-groups-list/sigfox-groups-list.component.ts @@ -5,7 +5,7 @@ import { TranslateService } from "@ngx-translate/core"; import { SigfoxGroup } from "@shared/models/sigfox-group.model"; import { SigfoxService } from "@shared/services/sigfox.service"; import { SharedVariableService } from "@shared/shared-variable/shared-variable.service"; -import { Observable, Subscription } from "rxjs"; +import { Subscription } from "rxjs"; import { MeService } from "@shared/services/me.service"; import { OrganizationAccessScope } from "@shared/enums/access-scopes"; @@ -13,13 +13,14 @@ import { OrganizationAccessScope } from "@shared/enums/access-scopes"; selector: "app-sigfox-groups-list", templateUrl: "./sigfox-groups-list.component.html", styleUrls: ["./sigfox-groups-list.component.scss"], + standalone: false, }) export class SigfoxGroupsListComponent implements OnInit, OnDestroy { faDatabase = faDatabase; faToolbox = faToolbox; subscription: Subscription; - public sigfoxGroups: Observable; + public sigfoxGroups: SigfoxGroup[]; canEdit: boolean; constructor( @@ -41,14 +42,14 @@ export class SigfoxGroupsListComponent implements OnInit, OnDestroy { } getSigFoxGroups() { - this.sigfoxService.getGroups(this.getCurrentOrganisationId()).subscribe( - response => { + this.sigfoxService.getGroups(this.getCurrentOrganisationId()).subscribe({ + next: response => { this.sigfoxGroups = response.data; }, - error => { + error: error => { console.log(error); - } - ); + }, + }); } getCurrentOrganisationId(): number { diff --git a/src/app/sigfox/sigfox-routing.module.ts b/src/app/sigfox/sigfox-routing.module.ts index 3d0de4568..0115dc6a8 100644 --- a/src/app/sigfox/sigfox-routing.module.ts +++ b/src/app/sigfox/sigfox-routing.module.ts @@ -1,4 +1,4 @@ -import { Routes, RouterModule } from "@angular/router"; +import { RouterModule, Routes } from "@angular/router"; import { NgModule } from "@angular/core"; import { SigfoxGroupsEditComponent } from "./sigfox-groups-edit/sigfox-groups-edit.component"; diff --git a/src/app/sigfox/sigfox.module.ts b/src/app/sigfox/sigfox.module.ts index b9804525b..6a8759aa1 100644 --- a/src/app/sigfox/sigfox.module.ts +++ b/src/app/sigfox/sigfox.module.ts @@ -4,7 +4,7 @@ import { SigfoxRoutingModule } from "./sigfox-routing.module"; import { FormModule } from "@shared/components/forms/form.module"; import { FormsModule } from "@angular/forms"; import { NGMaterialModule } from "@shared/Modules/materiale.module"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslatePipe } from "@ngx-translate/core"; import { SharedModule } from "@shared/shared.module"; import { FontAwesomeModule } from "@fortawesome/angular-fontawesome"; @@ -31,7 +31,7 @@ import { PipesModule } from "@shared/pipes/pipes.module"; FormsModule, FormModule, NGMaterialModule, - TranslateModule, + TranslatePipe, SharedModule, FontAwesomeModule, PipesModule, diff --git a/src/assets/env.js b/src/assets/env.js index 0c4ab685b..3ff7b2134 100644 --- a/src/assets/env.js +++ b/src/assets/env.js @@ -1,9 +1,9 @@ // This file will be overwritten when running in Docker using env.template.js and envsubst (function (window) { - window["env"] = window["env"] || {}; - window["env"].PRODUCTION = false; - window["env"].BASE_URL = "http://localhost:3000/api/v1/"; // For local testing - window["env"].TABLE_PAGE_SIZE = 25; // For local testing - window["env"].DAF_USERNAME = ""; - window["env"].DAF_PASSWORD = ""; + window["env"] = window["env"] || {}; + window["env"].PRODUCTION = false; + window["env"].BASE_URL = "http://localhost:3000/api/v1/"; // For local testing + window["env"].TABLE_PAGE_SIZE = 25; // For local testing + window["env"].DAF_USERNAME = ""; + window["env"].DAF_PASSWORD = ""; })(this); diff --git a/src/assets/env.template.js b/src/assets/env.template.js index c60d97563..3669fb9ad 100644 --- a/src/assets/env.template.js +++ b/src/assets/env.template.js @@ -1,9 +1,9 @@ // Variables in this file will be substituted using envsubst (function (window) { - window["env"] = window["env"] || {}; - window["env"].PRODUCTION = "${PRODUCTION}"; - window["env"].BASE_URL = "${BASE_URL}"; - window["env"].TABLE_PAGE_SIZE = "${TABLE_PAGE_SIZE}"; - window["env"].DAF_USERNAME = "${DAF_USERNAME}"; - window["env"].DAF_PASSWORD = "${DAF_PASSWORD}"; + window["env"] = window["env"] || {}; + window["env"].PRODUCTION = "${PRODUCTION}"; + window["env"].BASE_URL = "${BASE_URL}"; + window["env"].TABLE_PAGE_SIZE = "${TABLE_PAGE_SIZE}"; + window["env"].DAF_USERNAME = "${DAF_USERNAME}"; + window["env"].DAF_PASSWORD = "${DAF_PASSWORD}"; })(this); diff --git a/src/assets/favicons/browserconfig.xml b/src/assets/favicons/browserconfig.xml index b3930d0f0..74bb89ac3 100644 --- a/src/assets/favicons/browserconfig.xml +++ b/src/assets/favicons/browserconfig.xml @@ -1,9 +1,9 @@ - - - - #da532c - - + + + + #da532c + + diff --git a/src/assets/favicons/safari-pinned-tab.svg b/src/assets/favicons/safari-pinned-tab.svg index df2fe6d3d..88410de72 100644 --- a/src/assets/favicons/safari-pinned-tab.svg +++ b/src/assets/favicons/safari-pinned-tab.svg @@ -1,22 +1,22 @@ - - -Created by potrace 1.11, written by Peter Selinger 2001-2013 - - - + + + Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + - - -70 195 13 246 128 79 386 48 601 -72 25 -14 49 -26 52 -26 3 0 13 16 21 35 7 19 32 70 53 115 l39 80 -26 19 c-68 48 -209 104 -309 123 -5 1 -24 5 -43 10 -74 18 -271 17 -360 -3z"/> - - - - - - + + diff --git a/src/assets/images/alert-device-pin.svg b/src/assets/images/alert-device-pin.svg index 5a483d563..784113582 100644 --- a/src/assets/images/alert-device-pin.svg +++ b/src/assets/images/alert-device-pin.svg @@ -1,13 +1,15 @@ - + - - - - - \ No newline at end of file + fill="#262626"/> + + + + + diff --git a/src/assets/images/alert-gateway-pin.svg b/src/assets/images/alert-gateway-pin.svg index 231538cee..56f5dcf14 100644 --- a/src/assets/images/alert-gateway-pin.svg +++ b/src/assets/images/alert-gateway-pin.svg @@ -1,12 +1,13 @@ - + - - + fill="#262626"/> + + - \ No newline at end of file + fill="#DC2626"/> + diff --git a/src/assets/images/alert.svg b/src/assets/images/alert.svg index 74cf0662c..7b7e14560 100644 --- a/src/assets/images/alert.svg +++ b/src/assets/images/alert.svg @@ -1,3 +1,5 @@ - - + + diff --git a/src/assets/images/angle-down.svg b/src/assets/images/angle-down.svg index 3ab996d94..35eeeb650 100644 --- a/src/assets/images/angle-down.svg +++ b/src/assets/images/angle-down.svg @@ -1,5 +1,5 @@ - + - \ No newline at end of file + fill="currentColor"/> + diff --git a/src/assets/images/angle-left.svg b/src/assets/images/angle-left.svg index a0c8296ec..2e87788ff 100644 --- a/src/assets/images/angle-left.svg +++ b/src/assets/images/angle-left.svg @@ -1,3 +1,5 @@ - - + + diff --git a/src/assets/images/angle-right.svg b/src/assets/images/angle-right.svg index 425fda302..fb1809379 100644 --- a/src/assets/images/angle-right.svg +++ b/src/assets/images/angle-right.svg @@ -1,3 +1,5 @@ - - + + diff --git a/src/assets/images/angle-up.svg b/src/assets/images/angle-up.svg index ffd821b12..bb2de84db 100644 --- a/src/assets/images/angle-up.svg +++ b/src/assets/images/angle-up.svg @@ -1,3 +1,5 @@ - - + + diff --git a/src/assets/images/arrows-up-to-line.svg b/src/assets/images/arrows-up-to-line.svg index ad877b9a5..070b3cedd 100644 --- a/src/assets/images/arrows-up-to-line.svg +++ b/src/assets/images/arrows-up-to-line.svg @@ -1,5 +1,5 @@ - + - \ No newline at end of file + fill="currentColor"/> + diff --git a/src/assets/images/building.svg b/src/assets/images/building.svg index 430cf6640..3ce42b740 100644 --- a/src/assets/images/building.svg +++ b/src/assets/images/building.svg @@ -1,3 +1,5 @@ - - + + diff --git a/src/assets/images/check-circle.svg b/src/assets/images/check-circle.svg index 257c08c72..9f6210376 100644 --- a/src/assets/images/check-circle.svg +++ b/src/assets/images/check-circle.svg @@ -1,3 +1,5 @@ - - + + diff --git a/src/assets/images/circle-dot.svg b/src/assets/images/circle-dot.svg index 0ec509584..6ce79c2f8 100644 --- a/src/assets/images/circle-dot.svg +++ b/src/assets/images/circle-dot.svg @@ -1,5 +1,5 @@ - + - \ No newline at end of file + fill="currentColor"/> + diff --git a/src/assets/images/exclamation-triangle.svg b/src/assets/images/exclamation-triangle.svg index 612b5492c..cce7ff90b 100644 --- a/src/assets/images/exclamation-triangle.svg +++ b/src/assets/images/exclamation-triangle.svg @@ -1,3 +1,5 @@ - - + + diff --git a/src/assets/images/layers.svg b/src/assets/images/layers.svg index bb4de4d82..cade1d690 100644 --- a/src/assets/images/layers.svg +++ b/src/assets/images/layers.svg @@ -1,3 +1,5 @@ - - + + diff --git a/src/assets/images/logo_opendatadk.svg b/src/assets/images/logo_opendatadk.svg index 37964dfcc..e2926b7a3 100644 --- a/src/assets/images/logo_opendatadk.svg +++ b/src/assets/images/logo_opendatadk.svg @@ -1 +1,8 @@ -Open Data DK +Open Data DK + + + diff --git a/src/assets/images/microchip.svg b/src/assets/images/microchip.svg index b907e6c8f..dc76d7049 100644 --- a/src/assets/images/microchip.svg +++ b/src/assets/images/microchip.svg @@ -1,5 +1,5 @@ - + - \ No newline at end of file + fill="currentColor"/> + diff --git a/src/assets/images/plus-circle.svg b/src/assets/images/plus-circle.svg index 62ee8b9a6..a1f56a76c 100644 --- a/src/assets/images/plus-circle.svg +++ b/src/assets/images/plus-circle.svg @@ -1,5 +1,5 @@ - + - \ No newline at end of file + fill="currentColor"/> + diff --git a/src/assets/images/satellite-dish.svg b/src/assets/images/satellite-dish.svg index 3d4f2392e..c9ea68113 100644 --- a/src/assets/images/satellite-dish.svg +++ b/src/assets/images/satellite-dish.svg @@ -1,5 +1,5 @@ - + - \ No newline at end of file + fill="currentColor"/> + diff --git a/src/assets/images/sliders.svg b/src/assets/images/sliders.svg index 2b194a963..3ae610011 100644 --- a/src/assets/images/sliders.svg +++ b/src/assets/images/sliders.svg @@ -1,3 +1,5 @@ - - + + diff --git a/src/assets/images/stable-device-pin.svg b/src/assets/images/stable-device-pin.svg index cdf19bbf4..9af4d7ddd 100644 --- a/src/assets/images/stable-device-pin.svg +++ b/src/assets/images/stable-device-pin.svg @@ -1,13 +1,15 @@ - + - - - - - \ No newline at end of file + fill="#262626"/> + + + + + diff --git a/src/assets/images/stable-gateway-pin.svg b/src/assets/images/stable-gateway-pin.svg index 8539bbd77..066307c58 100644 --- a/src/assets/images/stable-gateway-pin.svg +++ b/src/assets/images/stable-gateway-pin.svg @@ -1,42 +1,57 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/stable.svg b/src/assets/images/stable.svg index 221c4daa9..06fcdedae 100644 --- a/src/assets/images/stable.svg +++ b/src/assets/images/stable.svg @@ -1,3 +1,5 @@ - - + + diff --git a/src/assets/images/table-tool.svg b/src/assets/images/table-tool.svg index 21d18d957..cb7f62baa 100644 --- a/src/assets/images/table-tool.svg +++ b/src/assets/images/table-tool.svg @@ -1,3 +1,5 @@ - - + + diff --git a/src/assets/scss/components/_boxes.scss b/src/assets/scss/components/_boxes.scss index 68718f65f..9d3492235 100644 --- a/src/assets/scss/components/_boxes.scss +++ b/src/assets/scss/components/_boxes.scss @@ -5,17 +5,21 @@ @extend .m-md-4; @extend .p-3; background-color: $color-bg-normal; + &--m-right { - @extend .mr-md-2; + @extend .me-md-2; } + &--m-left { - @extend .ml-md-2; + @extend .ms-md-2; } + &--full-width { width: -webkit-fill-available; } + h3 { - @extend .pr-5; + @extend .pe-5; @extend .mb-4; display: block; margin: 0; @@ -24,6 +28,7 @@ border-bottom-color: $color-primary; width: fit-content; } + &--table { @extend .m-md-4; } diff --git a/src/assets/scss/components/_bulk-import.scss b/src/assets/scss/components/_bulk-import.scss index af0f19e4f..0a3c6adc9 100644 --- a/src/assets/scss/components/_bulk-import.scss +++ b/src/assets/scss/components/_bulk-import.scss @@ -40,7 +40,7 @@ $fa-font-path: "~@fortawesome/fontawesome-free/webfonts"; } .choose-file:after { - font-family: "Font Awesome 5 Free"; + font-family: "Font Awesome 7 Free"; font-weight: 900; content: "\f093"; position: absolute; diff --git a/src/assets/scss/components/_date-picker.scss b/src/assets/scss/components/_date-picker.scss index abfc462bf..651e9503b 100644 --- a/src/assets/scss/components/_date-picker.scss +++ b/src/assets/scss/components/_date-picker.scss @@ -9,6 +9,7 @@ mat-calendar.datepicker-table-fix { thead { background-color: transparent !important; } + th { color: black !important; } diff --git a/src/assets/scss/components/_forms.scss b/src/assets/scss/components/_forms.scss index 64e94eaa8..11c2c60e0 100644 --- a/src/assets/scss/components/_forms.scss +++ b/src/assets/scss/components/_forms.scss @@ -72,6 +72,10 @@ border: $border-input-hover; cursor: pointer; } + + &:disabled { + opacity: 0.6; + } } textarea { diff --git a/src/assets/scss/components/_loading-spinner.scss b/src/assets/scss/components/_loading-spinner.scss index 6ddda5671..6e4a2a1b7 100644 --- a/src/assets/scss/components/_loading-spinner.scss +++ b/src/assets/scss/components/_loading-spinner.scss @@ -1,4 +1,5 @@ @import "../setup/variables"; + .loading-wrapper { @extend .my-5; display: flex; diff --git a/src/assets/scss/components/_tables.scss b/src/assets/scss/components/_tables.scss index dc39795aa..e138822d7 100644 --- a/src/assets/scss/components/_tables.scss +++ b/src/assets/scss/components/_tables.scss @@ -9,7 +9,7 @@ table { // border-radius: .25rem; box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.14), 0px 1px 13px rgba(0, 0, 0, 0.03), 0px 0px 1px rgba(0, 0, 0, 0.22); -webkit-box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.14), 0px 1px 13px rgba(0, 0, 0, 0.03), - 0px 0px 1px rgba(0, 0, 0, 0.22); + 0px 0px 1px rgba(0, 0, 0, 0.22); -moz-box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.14), 0px 1px 13px rgba(0, 0, 0, 0.03), 0px 0px 1px rgba(0, 0, 0, 0.22); // border: $grey-border solid 1px; @@ -37,7 +37,7 @@ table { .dropdown { .applicationRow__edit { - width: 10px; + width: 20px; height: 20px; background-image: radial-gradient(circle, $black 2px, transparent 1px); background-size: 100% 33.33%; @@ -50,9 +50,10 @@ table { .dropdown-menu { &--table { - min-width: 90px !important; + min-width: fit-content !important; left: -35px !important; } + li { padding: 0; margin: 0; @@ -69,7 +70,7 @@ table { &:hover, &:active { - color: $black; + color: white; text-decoration: none; background-color: $color-primary; } diff --git a/src/assets/scss/components/_topbar.scss b/src/assets/scss/components/_topbar.scss index 6e3ede896..17ce2e173 100644 --- a/src/assets/scss/components/_topbar.scss +++ b/src/assets/scss/components/_topbar.scss @@ -48,7 +48,7 @@ } .search-icon { - @extend .ml-2; + @extend .ms-2; display: flex; flex-direction: column; justify-content: center; diff --git a/src/assets/scss/setup/_base.scss b/src/assets/scss/setup/_base.scss index fa448c3eb..b22d90557 100644 --- a/src/assets/scss/setup/_base.scss +++ b/src/assets/scss/setup/_base.scss @@ -26,7 +26,7 @@ @media screen and (min-width: $min-vw) { font-size: calc( #{$min-font-size} + #{strip-unit($max-font-size - $min-font-size)} * - ((100vw - #{$min-vw}) / #{strip-unit($max-vw - $min-vw)}) + ((100vw - #{$min-vw}) / #{strip-unit($max-vw - $min-vw)}) ); } diff --git a/src/assets/scss/setup/_breakpoints.scss b/src/assets/scss/setup/_breakpoints.scss index 252d25782..4c841983c 100644 --- a/src/assets/scss/setup/_breakpoints.scss +++ b/src/assets/scss/setup/_breakpoints.scss @@ -42,7 +42,7 @@ $grid-breakpoints: ( } } - // If the key doesn't exist in the map + // If the key doesn't exist in the map @else { @warn "Unfortunately, no value could be retrieved from `#{$breakpoint}`. " +"Available breakpoints are: #{map-keys($breakpoints)}."; diff --git a/src/assets/scss/setup/_material-theme.scss b/src/assets/scss/setup/_material-theme.scss index 92ef351b6..1af4d388e 100644 --- a/src/assets/scss/setup/_material-theme.scss +++ b/src/assets/scss/setup/_material-theme.scss @@ -1,15 +1,23 @@ @use "@angular/material" as mat; @import "variables"; -@include mat.core(); +@include mat.elevation-classes(); +@include mat.app-background(); + + +:root { + @include mat.slide-toggle-overrides(( + selected-icon-color: white, + )); +} /* ======== angular material custom theme ======== */ -$OS2IoT-primary: mat.define-palette(mat.$orange-palette); -$OS2IoT-accent: mat.define-palette(mat.$deep-orange-palette, 100, 500, A100); -$OS2IoT-warn: mat.define-palette(mat.$red-palette); +$OS2IoT-primary: mat.m2-define-palette(mat.$m2-orange-palette); +$OS2IoT-accent: mat.m2-define-palette(mat.$m2-deep-orange-palette, 100, 500, A100); +$OS2IoT-warn: mat.m2-define-palette(mat.$m2-red-palette); // Light theme -$OS2IoT-theme: mat.define-light-theme( +$OS2IoT-theme: mat.m2-define-light-theme( ( color: ( theme-type: light, @@ -21,13 +29,13 @@ $OS2IoT-theme: mat.define-light-theme( ); // Dark theme -$OS2IoT-theme: mat.define-dark-theme( +$OS2IoT-theme: mat.m2-define-dark-theme( ( color: ( theme-type: dark, primary: $OS2IoT-primary, accent: $OS2IoT-accent, - warn: $OS2IoT-warn, + warn: $OS2IoT-warn ), ) ); @@ -42,20 +50,21 @@ $OS2IoT-theme: mat.define-dark-theme( // Include the common styles for Angular Material. We include this here so that you only // have to load a single css file for Angular Material in your app. // Be sure that you only ever include this mixin once! -@include mat.core(); +@include mat.elevation-classes(); +@include mat.app-background(); // Define the palettes for your theme using the Material Design palettes available in palette.scss // (imported above). For each palette, you can optionally specify a default, lighter, and darker // hue. Available color palettes: https://material.io/design/color/ -$OS2IoT-frontend-primary: mat.define-palette(mat.$deep-orange-palette); +$OS2IoT-frontend-primary: mat.m2-define-palette(mat.$m2-deep-orange-palette); //$OS2IoT-frontend-accent: mat-palette($mat-pink, A200, A100, A400); -$OS2IoT-frontend-accent: mat.define-palette(mat.$deep-orange-palette, A200, A100, A400); +$OS2IoT-frontend-accent: mat.m2-define-palette(mat.$m2-deep-orange-palette, A200, A100, A400); // The warn palette is optional (defaults to red). -$OS2IoT-frontend-warn: mat.define-palette(mat.$red-palette); +$OS2IoT-frontend-warn: mat.m2-define-palette(mat.$m2-red-palette); // Create the theme object (a Sass map containing all of the palettes). -$OS2IoT-frontend-theme: mat.define-light-theme( +$OS2IoT-frontend-theme: mat.m2-define-light-theme( ( color: ( theme-type: light, diff --git a/src/assets/scss/setup/_typography.scss b/src/assets/scss/setup/_typography.scss index 3cd53c228..a19c961d2 100644 --- a/src/assets/scss/setup/_typography.scss +++ b/src/assets/scss/setup/_typography.scss @@ -24,10 +24,10 @@ a { font-weight: $font-weight-bold; color: $color-primary; @include fluid-type( - $min_width, - $max_width, - $mod_1 * $mod_1 * $mod_1 * $min_font, - $mod_2 * $mod_2 * $mod_2 * $min_font + $min_width, + $max_width, + $mod_1 * $mod_1 * $mod_1 * $min_font, + $mod_2 * $mod_2 * $mod_2 * $min_font ); } @@ -39,10 +39,10 @@ a { font-weight: $font-weight-normal; color: $color-text; @include fluid-type( - $min_width, - $max_width, - $mod_1 * $mod_1 * $mod_1 * $min_font, - $mod_2 * $mod_2 * $mod_2 * $min_font + $min_width, + $max_width, + $mod_1 * $mod_1 * $mod_1 * $min_font, + $mod_2 * $mod_2 * $mod_2 * $min_font ); p { @@ -180,7 +180,7 @@ p { strong { @include h6; line-height: none; - @extend .mr-3; + @extend .me-3; } } diff --git a/src/assets/scss/setup/_utilities.scss b/src/assets/scss/setup/_utilities.scss index c00c12634..6aa6a0787 100644 --- a/src/assets/scss/setup/_utilities.scss +++ b/src/assets/scss/setup/_utilities.scss @@ -69,7 +69,7 @@ border-bottom: $grey-border solid 1px; box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.11), 0px 1px 16px rgba(0, 0, 0, 0.03), 0px 0px 1px rgba(0, 0, 0, 0.22); -webkit-box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.11), 0px 1px 16px rgba(0, 0, 0, 0.03), - 0px 0px 1px rgba(0, 0, 0, 0.22); + 0px 0px 1px rgba(0, 0, 0, 0.22); -moz-box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.11), 0px 1px 16px rgba(0, 0, 0, 0.03), 0px 0px 1px rgba(0, 0, 0, 0.22); line-height: 36px; } diff --git a/src/index.html b/src/index.html index 52254e443..4ee87b146 100644 --- a/src/index.html +++ b/src/index.html @@ -1,23 +1,23 @@ - - - OS2IoT - - - - - - - - - - - - - + + + OS2IoT + + + + + + + + + + + + + - - - + + + diff --git a/src/polyfills.ts b/src/polyfills.ts index faaada4f0..559e6fb2f 100644 --- a/src/polyfills.ts +++ b/src/polyfills.ts @@ -17,11 +17,9 @@ import "@angular/localize/init"; * * Learn more in https://angular.io/guide/browser-support */ - /*************************************************************************************************** * BROWSER POLYFILLS */ - /** * By default, zone.js will patch all possible macroTask and DomEvents * user can disable parts of macroTask/DomEvents patch by setting following flags @@ -45,7 +43,6 @@ import "@angular/localize/init"; * (window as any).__Zone_enable_cross_context_check = true; * */ - /*************************************************************************************************** * Zone JS is required by default for Angular itself. */ diff --git a/src/styles.scss b/src/styles.scss index 4804c7714..1706a9eb8 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -36,7 +36,7 @@ @import "assets/scss/setup/variables"; @import "assets/scss/setup/material-theme"; -@import "~leaflet/dist/leaflet.css"; +@import "leaflet/dist/leaflet.css"; @import "./app/shared/styles/leaflet-styles.scss"; @@ -116,8 +116,9 @@ app-welcome-dialog .hide-checkbox .mdc-checkbox { .mdc-checkbox__native-control:enabled:focus:focus:not(:checked):not(:indeterminate) ~ .mdc-checkbox__background { border-color: $color-white-001 !important; } + .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate="true"]) - ~ .mdc-checkbox__background { + ~ .mdc-checkbox__background { border-color: $color-white-001 !important; } } diff --git a/tsconfig.app.json b/tsconfig.app.json index d3749ffcc..44d63d33f 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -1,9 +1,16 @@ { - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": ["src/main.ts", "src/polyfills.ts"], - "include": ["src/**/*.d.ts"] + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [ + "node" + ] + }, + "files": [ + "src/main.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ] } diff --git a/tsconfig.json b/tsconfig.json index 90478fe09..c2d83380f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,36 +1,68 @@ { - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "module": "es2020", - "moduleResolution": "node", - "importHelpers": true, - "target": "es2022", - "lib": ["es2018", "dom"], - "allowSyntheticDefaultImports": true, - "typeRoots": ["node_modules/@types"], - "paths": { - "@shared-material": ["src/app/shared/modules/material.module"], - "@shared/*": ["src/app/shared/*"], - "@admin/*": ["src/app/admin"], - "@applications/*": ["src/app/applications/*"], - "@auth/*": ["src/app/auth/*"], - "@navbar/*": ["src/app/navbar/*"], - "@payload-decoder/*": ["src/app/payload-decoder/*"], - "@profiles/*": ["src/app/profiles/*"], - "@sigfox/*": ["src/app/sigfox/*"], - "@environments/*": ["src/environments/*"], - "@app/*": ["src/app/*"], - "timers": ["node_modules/timers-browserify"] - } - }, - "angularCompilerOptions": { - "fullTemplateTypeCheck": true, - "strictInjectionParameters": true + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "esModuleInterop": true, + "experimentalDecorators": true, + "module": "es2020", + "moduleResolution": "bundler", + "importHelpers": true, + "target": "es2022", + "lib": [ + "es2018", + "dom", + "ESNext" + ], + "typeRoots": [ + "node_modules/@types" + ], + "types": [ + "node" + ], + "paths": { + "@shared-material": [ + "src/app/shared/modules/material.module" + ], + "@shared/*": [ + "src/app/shared/*" + ], + "@admin/*": [ + "src/app/admin" + ], + "@applications/*": [ + "src/app/applications/*" + ], + "@auth/*": [ + "src/app/auth/*" + ], + "@navbar/*": [ + "src/app/navbar/*" + ], + "@payload-decoder/*": [ + "src/app/payload-decoder/*" + ], + "@profiles/*": [ + "src/app/profiles/*" + ], + "@sigfox/*": [ + "src/app/sigfox/*" + ], + "@environments/*": [ + "src/environments/*" + ], + "@app/*": [ + "src/app/*" + ], + "timers": [ + "node_modules/timers-browserify" + ] } + }, + "angularCompilerOptions": { + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true + } } diff --git a/tsconfig.spec.json b/tsconfig.spec.json index 244b4bf80..6400fde7d 100644 --- a/tsconfig.spec.json +++ b/tsconfig.spec.json @@ -1,9 +1,18 @@ { - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": ["jasmine", "node"] - }, - "files": ["src/test.ts", "src/polyfills.ts"], - "include": ["src/**/*.spec.ts", "src/**/*.d.ts"] + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] } diff --git a/tslint.json b/tslint.json index 1835c053f..c03918f69 100644 --- a/tslint.json +++ b/tslint.json @@ -1,146 +1,198 @@ { - "extends": [ - "tslint:recommended", - "tslint-angular", - "tslint-config-prettier" + "extends": [ + "tslint:recommended", + "tslint-angular", + "tslint-config-prettier" + ], + "rules": { + "align": { + "options": [ + "parameters", + "statements" + ] + }, + "array-type": false, + "arrow-return-shorthand": true, + "callable-types": true, + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "component-class-suffix": true, + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ], + "curly": true, + "deprecation": { + "severity": "warning" + }, + "contextual-lifecycle": true, + "directive-class-suffix": true, + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "eofline": true, + "forin": true, + "interface-over-type-literal": true, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "import-spacing": true, + "indent": { + "options": [ + "spaces" + ] + }, + "label-position": true, + "max-classes-per-file": false, + "max-line-length": [ + true, + 200 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" ], - "rules": { - "align": { - "options": ["parameters", "statements"] - }, - "array-type": false, - "arrow-return-shorthand": true, - "callable-types": true, - "class-name": true, - "comment-format": [true, "check-space"], - "component-class-suffix": true, - "component-selector": [true, "element", "app", "kebab-case"], - "curly": true, - "deprecation": { - "severity": "warning" - }, - "contextual-lifecycle": true, - "directive-class-suffix": true, - "directive-selector": [true, "attribute", "app", "camelCase"], - "eofline": true, - "forin": true, - "interface-over-type-literal": true, - "import-blacklist": [true, "rxjs/Rx"], - "import-spacing": true, - "indent": { - "options": ["spaces"] - }, - "label-position": true, - "max-classes-per-file": false, - "max-line-length": [true, 200], - "member-access": false, - "member-ordering": [ - true, - { - "order": [ - "static-field", - "instance-field", - "static-method", - "instance-method" - ] - } - ], - "no-console": [true, "debug", "info", "time", "timeEnd", "trace"], - "no-empty": false, - "no-inferrable-types": [true, "ignore-params"], - "no-non-null-assertion": true, - "no-redundant-jsdoc": true, - "no-switch-case-fall-through": true, - "no-var-requires": false, - "object-literal-key-quotes": [true, "as-needed"], - "quotemark": [true, "single"], - "semicolon": { - "options": ["always"] - }, - "no-conflicting-lifecycle": true, - "no-host-metadata-property": true, - "no-input-rename": true, - "no-inputs-metadata-property": true, - "no-output-native": true, - "no-output-on-prefix": true, - "no-output-rename": true, - "no-outputs-metadata-property": true, - "no-arg": true, - "no-bitwise": true, - "no-construct": true, - "no-debugger": true, - "no-duplicate-super": true, - "no-empty-interface": true, - "no-eval": true, - "no-misused-new": true, - "no-shadowed-variable": [ - false, - { - "class": true, - "enum": true, - "function": true, - "interface": false, - "namespace": true, - "typeAlias": false, - "typeParameter": false - } - ], - "no-string-literal": false, - "no-string-throw": true, - "no-trailing-whitespace": true, - "no-unnecessary-initializer": true, - "no-unused-expression": true, - "no-var-keyword": true, - "object-literal-sort-keys": false, - "one-line": [ - true, - "check-open-brace", - "check-catch", - "check-else", - "check-whitespace" - ], - "prefer-const": true, - "radix": true, - "space-before-function-paren": { - "options": { - "anonymous": "never", - "asyncArrow": "always", - "constructor": "never", - "method": "never", - "named": "never" - } - }, - "template-banana-in-box": true, - "template-no-negated-async": true, - "triple-equals": [true, "allow-null-check"], - "typedef-whitespace": { - "options": [ - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - } - ] - }, - "unified-signatures": true, - "use-lifecycle-interface": true, - "use-pipe-transform-interface": true, - "variable-name": { - "options": ["ban-keywords", "check-format", "allow-pascal-case", "allow-leading-underscore"] - }, - "whitespace": { - "options": [ - "check-branch", - "check-decl", - "check-operator", - "check-separator", - "check-type", - "check-typecast", - "check-module" - ] + "no-empty": false, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-switch-case-fall-through": true, + "no-var-requires": false, + "object-literal-key-quotes": [ + true, + "as-needed" + ], + "quotemark": [ + true, + "single" + ], + "semicolon": { + "options": [ + "always" + ] + }, + "no-conflicting-lifecycle": true, + "no-host-metadata-property": true, + "no-input-rename": true, + "no-inputs-metadata-property": true, + "no-output-native": true, + "no-output-on-prefix": true, + "no-output-rename": true, + "no-outputs-metadata-property": true, + "no-arg": true, + "no-bitwise": true, + "no-construct": true, + "no-debugger": true, + "no-duplicate-super": true, + "no-empty-interface": true, + "no-eval": true, + "no-misused-new": true, + "no-shadowed-variable": [ + false, + { + "class": true, + "enum": true, + "function": true, + "interface": false, + "namespace": true, + "typeAlias": false, + "typeParameter": false + } + ], + "no-string-literal": false, + "no-string-throw": true, + "no-trailing-whitespace": true, + "no-unnecessary-initializer": true, + "no-unused-expression": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "prefer-const": true, + "radix": true, + "space-before-function-paren": { + "options": { + "anonymous": "never", + "asyncArrow": "always", + "constructor": "never", + "method": "never", + "named": "never" + } + }, + "template-banana-in-box": true, + "template-no-negated-async": true, + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef-whitespace": { + "options": [ + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" } + ] + }, + "unified-signatures": true, + "use-lifecycle-interface": true, + "use-pipe-transform-interface": true, + "variable-name": { + "options": [ + "ban-keywords", + "check-format", + "allow-pascal-case", + "allow-leading-underscore" + ] }, - "rulesDirectory": ["codelyzer"] + "whitespace": { + "options": [ + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type", + "check-typecast", + "check-module" + ] + } + }, + "rulesDirectory": [ + "codelyzer" + ] }