diff --git a/.gitignore b/.gitignore index 1f2405bfd38f19242334cdeb83d1575692189c05..068190e077f033ed9af38f9908c71cccef0e05ba 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,10 @@ npm-debug.log yarn-error.log testem.log /typings +.env +cypress/fixtures +cypress/screenshots +cypress/downloads # System Files .DS_Store @@ -50,3 +54,4 @@ src/assets/config/config.theming.json /src/assets/config/theming.scss /.angular /.tmp/ +/proxy.conf.json diff --git a/README.md b/README.md index d0114e09ac5145b711a379165c2c7f8503496c0c..e19b73af0a952443ee2ed8381c8a811641373cba 100644 --- a/README.md +++ b/README.md @@ -1,92 +1,142 @@ -# org.etsi.osl.tmf.web +# OpenSlice TMF Web UI +This document serves as the primary reference for setting up, configuring, and running the TMF Web UI, an Angular application that consumes the TMF API. -## Getting started +## Requirements -To make it easy for you to get started with GitLab, here's a list of recommended next steps. +To ensure a consistent development environment and avoid compatibility issues, please use the following versions for the main tools. -Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! -## Add your files -- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: +| Tool | Version | Notes | +|-------------------------------- |----------- |--------------------------------------------------------------------- | +| **Node Version Manager (nvm)** | Latest | Recommended for managing Node versions. [Guide](https://www.freecodecamp.org/news/node-version-manager-nvm-install-guide/) | +| **Node.js** | `18.20.8` | Managed via `nvm`. Use `nvm install 18.20.8` and `nvm use 18.20.8`. | +| **Angular CLI** | `14.x.x` | Install globally using `npm install -g @angular/cli@14`. | -``` -cd existing_repo -git remote add origin https://labs.etsi.org/rep/osl/code/org.etsi.osl.tmf.web.git -git branch -M main -git push -uf origin main -``` +## Configuration + +Configuration files allow customization of the application's behavior, styling, and appearance without altering the core codebase. + +All primary configuration files are located in the following directory: + +`./src/assets/config/` + +The configuration files for the end to end testing are located in the following directory: +`./cypress/` + +### Default Configuration Files (Templates) + +The following files serve as templates for customizing the environment: + +| Filename | Purpose | Description | Location | +|-------------------------------- |----------- |--------------------------------------------------------------------- | ------------- +| `config.prod.default.json` | **API & Basic Info** | Contains core application information, environment variables, and essential API endpoint configurations for the production environment. | `./src/assets/config/` +| `theming.default.scss` | **CSS Theming** | Defines the SCSS variables for the application's color palette | `./src/assets/config/` +| `config.theming.default.json` | **HTML Configuration** | Contains configurations for static UI elements like the application Logo URL, Favicon path, and dynamic content for the Footer. | `./src/assets/config/` +| `default.env` | **E2E Testing** | Contains default environment variables required for running Cypress End-to-End tests. | `./cypress/` + + + + + + +### Configuration Setup (Mandatory Renaming) + +Before running or building the project, you **must** create copies of the template files, removing the `.default` suffix, as these are mandatory for the application to properly load its settings. -## Integrate with your tools +The resulting files required for initial setup are: -- [ ] [Set up project integrations](https://labs.etsi.org/rep/osl/code/org.etsi.osl.tmf.web/-/settings/integrations) +| Filename | Status | Purpose | Location +|-------------------------------- |----------- |--------------------------------------------------------------------- | --------- | +| `config.prod.json` | **Mandatory** | The application's main configuration. (Copy of `config.prod.default.json`) | `./src/assets/config/` +| `theming.scss` | **Mandatory** | The primary SCSS theming file. (Copy of `theming.default.scss`) | `./src/assets/config/` +| `config.theming.json` | _Optional_ | HTML configuration for branding. (Copy of `config.theming.default.json`) | `./src/assets/config/` +| `.env` | **Mandatory (for testing)** | The active environment configuration for Cypress. (Copy/Rename of default.env) | `./cypress/` -## Collaborate with your team -- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) -- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) -- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) -- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) -- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) -## Test and Deploy +## Serving the Application -Use the built-in continuous integration in GitLab. +To run the application locally, ensure you have completed the **Configuration Setup** -- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) -- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) -- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) -- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) -- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) +### Initial Setup (Dependencies) -*** +First, install the necessary project dependencies: -# Editing this README +``` +npm i +``` + +This command downloads all dependencies defined in `package.json` and `package-lock.json`. + +### A. Production/Default Serve (AOT) + +This method uses **Ahead-of-Time (AOT)** compilation, which pre-compiles Angular templates into JavaScript during the build process. This is often used for final checks and mimics the production build process. + +To run: + +``` +ng serve --configuration production +``` + +Once compiled, open your browser and navigate to: [http://localhost:4200](https://www.google.com/search?q=http://localhost:4200 "null") -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template. +### B. Development Serve (JIT) -## Suggestions for a good README -Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. +For active development, using **Just-in-Time (JIT)** compilation is strongly encouraged. JIT compiles templates in the browser at runtime, resulting in significantly faster build times and rapid live reloads after code changes. -## Name -Choose a self-explaining name for your project. +1. **Create Development Config:** To use this mode, you must first create a specific development configuration file: + + ``` + cp src/assets/config/config.prod.json src/assets/config/config.dev.json + ``` + +2. **Run JIT Serve:** Execute the serve command using the new development configuration: + + ``` + ng serve --configuration development + ``` + -## Description -Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. +**Important Development Note:** While JIT mode is great for iteration speed, AOT compilation runs a more comprehensive check. After development and before committing, it is highly recommended to perform at least one test run using the AOT configuration (`ng serve --configuration production`) to ensure no template or dependency issues are present in the full build. -## Badges -On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. +## Building the Project -## Visuals -Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. +To create a deployable package containing optimized JavaScript, CSS, and HTML assets, use the build command. -## Installation -Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. +### Build Command (Production) -## Usage -Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. +Assuming all configurations are set and dependencies are installed (`npm i`), execute: + +``` +ng build --configuration production +``` -## Support -Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. +### Output -## Roadmap -If you have ideas for releases in the future, it is a good idea to list them in the README. +The compiled, production-ready assets will be generated in the `/dist` directory within the project root. This directory contains the static files ready for deployment on any web server. -## Contributing -State if you are open to contributions and what your requirements are for accepting them. +## Running Tests (Cypress) -For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. +This project uses Cypress for End-to-End (E2E) testing. -You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. +### Prerequisites +*Environment Variables*: Ensure you have created the `.env` file in the `./cypress/` directory as specified in the **Configuration Setup** table above. -## Authors and acknowledgment -Show your appreciation to those who have contributed to the project. +### Interactive Mode (Test Runner) +Use this mode for developing tests. It opens the Cypress Test Runner UI, allowing you to select and watch tests run in a real browser -## License -For open source projects, say how it is licensed. +``` +npm run cy:open +``` +1. Select E2E Testing. +2. Choose your preferred browser (e.g. Chrome, Electron). +3. Click on a spec file (e.g. auth.cy.ts) to run it. -## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. +### Headless Mode +Use this mode to run all tests in the terminal without opening a browser window. +``` +npm run cy:run +``` \ No newline at end of file diff --git a/cypress.config.ts b/cypress.config.ts new file mode 100644 index 0000000000000000000000000000000000000000..2bcb6eeb8b78906c794afcc0ca21bd6bc4ac9510 --- /dev/null +++ b/cypress.config.ts @@ -0,0 +1,31 @@ +import { defineConfig } from "cypress"; +import * as dotenv from "dotenv"; + +dotenv.config( { path: 'cypress/.env'}); + +export default defineConfig({ + + e2e: { + setupNodeEvents(on, config) { + require("ts-node").register({ + project: "tsconfig.json", + }); + return config; + }, + baseUrl: process.env.CYPRESS_BASE_URL, + pageLoadTimeout: 16000, + viewportWidth: 1500, + viewportHeight: 900, + env: { + username: process.env.CYPRESS_username, + password: process.env.CYPRESS_password, + authURL: process.env.CYPRESS_AUTH_URL, + authRealm: process.env.CYPRESS_AUTH_REALM, + resetCredentials: process.env.CYPRESS_RESET_CREDENTIALS, + registration: process.env.CYPRESS_REGISTRATION + + + } + }, +}); + diff --git a/cypress/default.env b/cypress/default.env new file mode 100644 index 0000000000000000000000000000000000000000..77bd891df36460abc3b4931cb9bb3b20b1a11a01 --- /dev/null +++ b/cypress/default.env @@ -0,0 +1,7 @@ +CYPRESS_username=admin +CYPRESS_password=openslice +CYPRESS_BASE_URL=http://localhost:4200/ +CYPRESS_AUTH_URL=https://portal.openslice.eu/ +CYPRESS_AUTH_REALM=/auth/realms/openslice/protocol/openid-connect/auth +CYPRESS_RESET_CREDENTIALS=/auth/realms/openslice/login-actions/reset-credentials +CYPRESS_REGISTRATION=/auth/realms/openslice/login-actions/registration \ No newline at end of file diff --git a/cypress/e2e/auth.cy.ts b/cypress/e2e/auth.cy.ts new file mode 100644 index 0000000000000000000000000000000000000000..bbdbd470165c1fd9b1c1a3b8e19494d511418643 --- /dev/null +++ b/cypress/e2e/auth.cy.ts @@ -0,0 +1,131 @@ +describe("user authentication", () => { + beforeEach(() => { + cy.visit(window.location.origin); + }); + + it("should block unauthenticated user from entering a protected route", () => { + cy.fixture("routes.json").then((data) => { + cy.log(data.routes); + for (let route of data.routes) { + cy.intercept(route); + cy.log(route); + cy.visit(route); + cy.location("pathname").should("equal", "/"); + } + }); + }); + it("should display login errors when nothing is typed", () => { + cy.get(":nth-child(1) > .nav-link").click(); + cy.location("pathname").should("equal", "/services"); + cy.get(".btn").should("contain", "Sign In").click(); + cy.origin(Cypress.env("authURL"), () => { + cy.location("pathname").should("equal", Cypress.env("authRealm")); + cy.get("#kc-login").click(); + cy.get("#input-error") + .should("be.visible") + .and("contain", "Invalid username or password."); + cy.get('[aria-invalid="true"]').should("have.length", 2); //the 2 input fields should have selector aria-invalid = 'true' + }); + }); + it("should display login errors when credentials are wrong", () => { + cy.get(":nth-child(1) > .nav-link").click(); + cy.location("pathname").should("equal", "/services"); + cy.get(".btn").should("contain", "Sign In").click(); + cy.origin(Cypress.env("authURL"), () => { + cy.location("pathname").should("equal", Cypress.env("authRealm")); + + cy.get("#username").type("test").blur(); + cy.get("#password").type("test").blur(); + cy.get("#kc-login").click(); + cy.get("#input-error") + .should("be.visible") + .and("contain", "Invalid username or password."); + cy.get('[aria-invalid="true"]').should("have.length", 2); //the 2 input fields should have selector aria-invalid = 'true' + }); + }); + it("should login, logout", () => { + cy.loginPath( + ":nth-child(1) > .nav-link", + "/services" + ); + cy.get("#navbarDropdown2").click(); + cy.window().then((win) => { + expect(win.localStorage.getItem("access_token")).to.exist; + }); + + cy.get( + ":nth-child(2) > .dropdown > .dropdown-menu > :nth-child(8)" + ).click(); + cy.location("pathname").should("equal", "/"); + }); + it("forget password should work", () => { + cy.get(":nth-child(1) > .nav-link").click(); + cy.location("pathname").should("equal", "/services"); + cy.get(".btn").should("contain", "Sign In").click(); + cy.origin(Cypress.env("authURL"), () => { + cy.location("pathname").should("equal", Cypress.env("authRealm")); + cy.get(":nth-child(2) > span > a").click(); + cy.log(Cypress.env("resetCredentials")); + cy.location("pathname").should("equal", Cypress.env("resetCredentials")); + cy.get("#username").should("exist"); + }); + }); + context("register form", () => { + beforeEach(() => { + cy.get(":nth-child(1) > .nav-link").click(); + cy.location("pathname").should("equal", "/services"); + cy.get(".btn").should("contain", "Sign In").click(); + cy.origin(Cypress.env("authURL"), () => { + cy.location("pathname").should("equal", Cypress.env("authRealm")); + cy.get("#kc-registration > span > a").click(); + cy.location("pathname").should("equal", Cypress.env("registration")); + }); + }); + it("register form should not be empty when submitted", () => { + cy.origin(Cypress.env("authURL") + Cypress.env("registration"), () => { + cy.get(".pf-c-button").click(); + cy.get("#input-error-firstname") + .should("exist") + .and("contain", "Please specify first name."); + cy.get("#input-error-lastname") + .should("exist") + .and("contain", "Please specify last name."); + cy.get("#input-error-email") + .should("exist") + .and("contain", "Please specify email."); + cy.get("#input-error-username") + .should("exist") + .and("contain", "Please specify username."); + cy.get("#input-error-password") + .should("exist") + .and("contain", "Please specify password."); + }); + }); + it("invalid email", () => { + cy.origin(Cypress.env("authURL") + Cypress.env("registration"), () => { + cy.get("#email").type("email"); + cy.get(".pf-c-button").click(); + cy.get("#input-error-email") + .should("exist") + .and("contain", "Invalid email address."); + cy.get("#email").type("@example.com"); + cy.get(".pf-c-button").click(); + cy.get("#input-error-email").should("not.exist"); + }); + }); + it("confirm password field should be the same with password", () => { + cy.origin(Cypress.env("authURL") + Cypress.env("registration"), () => { + cy.get("#password").type("123"); + cy.get("#password-confirm").type("1234"); + cy.get(".pf-c-button").click(); + cy.get("#input-error-password-confirm") + .should("exist") + .and("contain", "Password confirmation doesn't match."); + cy.get("#password").type("123"); + cy.get("#password-confirm").type("123"); + cy.get(".pf-c-button").click(); + cy.get("#input-error-password-confirm").should("not.exist"); + }); + }); + }); +}); diff --git a/cypress/e2e/user-journeys-logged-in.cy.ts b/cypress/e2e/user-journeys-logged-in.cy.ts new file mode 100644 index 0000000000000000000000000000000000000000..6aeeb4215f7afb1e436a57dbb7e004ccf02d5974 --- /dev/null +++ b/cypress/e2e/user-journeys-logged-in.cy.ts @@ -0,0 +1,41 @@ +describe('logged user journeys', () => { + beforeEach(() => { + cy.visit(window.location.origin); + + }); + afterEach(() => { + //log user out after each test + cy.get('#navbarDropdown2').click(); + cy.get(':nth-child(2) > .dropdown > .dropdown-menu > :nth-child(8)').click(); + cy.location("pathname").should("equal", "/"); + }); + + + it('logs in through services', () => { + cy.loginPath('[data-cy="servicesPortal"]', '/services'); + cy.location("pathname").should("equal", "/services/services_marketplace"); + cy.navigateThroughDropdowns("Services Marketplace"); + + }); + + it('logs in through resources', () => { + cy.loginPath('[data-cy="resourcesPortal"]', '/resources'); + cy.location("pathname").should("equal", "/resources/resource_inventory"); + cy.navigateThroughDropdowns("Resource Inventory"); + + }); + + + it('logs in through testing', () => { + cy.loginPath('[data-cy="testingPortal"]', '/testing'); + cy.location("pathname").should("equal", "/testing/service_tests"); + cy.navigateThroughDropdowns("Test Instances"); + }); + + + it('logs in through products', () => { + cy.loginPath('[data-cy="productsPortal"]', '/products'); + cy.location("pathname").should("equal", "/products/marketplace"); + cy.navigateThroughDropdowns(""); + }); +}) \ No newline at end of file diff --git a/cypress/e2e/user-journeys.cy.ts b/cypress/e2e/user-journeys.cy.ts new file mode 100644 index 0000000000000000000000000000000000000000..7d2a6d7def3fc9ba881175874f9277013e4a111a --- /dev/null +++ b/cypress/e2e/user-journeys.cy.ts @@ -0,0 +1,133 @@ +describe('user journey', () => { + + beforeEach(() => { + cy.visit(window.location.origin); + }) + + context('user-not-logged-in', () => { + + it('checks metrics portal', () => { + cy.navigateToMetrics('[data-cy="metricsPortal"]'); + }); + + it('checks services portal', () => { + cy.navigateToServices('[data-cy="servicesPortal"]'); + }); + it('checks services portal via nav-bar anchor', () => { + cy.navigateToServices(':nth-child(1) > .nav-link'); + }); + it('checks services through metrics portal', () => { + cy.navigateToMetrics('[data-cy="metricsPortal"]'); + cy.navigateToServices('[data-cy="servicesPortal"]'); + }); + + it('checks resources portal', () => { + //cy.get(':nth-child(2) > .nav-link').click(); + cy.navigateToResources('[data-cy="resourcesPortal"]'); + }); + it('checks resources portal via nav-bar anchor', () => { + cy.navigateToResources(':nth-child(2) > .nav-link'); + }); + it('checks resources through metrics portal', () => { + cy.navigateToMetrics('[data-cy="metricsPortal"]'); + cy.navigateToResources('[data-cy="resourcesPortal"]'); + }); + + it('checks testing portal', () => { + cy.navigateToTesting('[data-cy="testingPortal"]'); + }); + it('checks testing portal via nav-bar anchor', () => { + cy.navigateToTesting(':nth-child(4) > .nav-link') + }); + + it('checks products portal', () => { + cy.navigateToProducts('[data-cy="productsPortal"]'); + }); + it('checks products portal via nav-bar anchor', () => { + cy.navigateToProducts(':nth-child(5) > .nav-link'); + }); + }); + + + context(' links', () => { + + beforeEach(() => { + cy.get('[id="contact"]').scrollIntoView().should('be.visible'); + }); + + it('checks OpenSlice version', () => { + cy.get('[data-cy="osl"]').click(); + cy.origin("https://labs.etsi.org/", () => { + cy.location("pathname").should("contain", "releases"); + }); + }); + + it('checks OpenSlice wiki via portal card', () => { + cy.get('[data-cy="wiki"]').click(); + cy.origin("https://osl.etsi.org/", () => { + cy.location("pathname").should("equal", "/documentation/latest/"); + }); + }); + + it('checks OpenSlice by ETSI Portal Link', () => { + cy.get(':nth-child(1) > .osl-anchor').click(); + cy.location("pathname").should("equal", "/"); + + }); + it("checks OpenSlice by ETSI wiki", () => { + cy.get(':nth-child(2) > .osl-anchor').click(); + cy.origin('https://osl.etsi.org/', () => { + cy.location("pathname").should("equal", "/documentation/latest/"); + + }); + }); + + it('checks ETSI SDG for OpenSlice link', () => { + cy.get(':nth-child(3) > .osl-anchor').click(); + cy.origin('https://osl.etsi.org/', () => { + cy.location("pathname").should("equal", "/"); + + }); + }); + + it('checks linkedin link', () => { + cy.get(':nth-child(1) > a > .button-outline').click(); + cy.origin('https://www.linkedin.com/company/openslice', ()=> { + cy.location("pathname").should("equal", "/company/openslice"); + }); + }); + + it('checks slack link', () => { + cy.get(':nth-child(2) > a > .button-outline').click(); + cy.origin('https://openslice.slack.com/', () => { + cy.location("pathname").should("contain", "/join"); + + }); + }); + + it('checks twitter link', () => { + cy.get(':nth-child(3) > a > .button-outline').click(); + cy.origin('https://x.com/OpensliceOSS', () => { + cy.location("pathname").should("satisfy", (url) => { + return url === '/OpensliceOSS' || url === '/i/flow/login'; + }) + }); + }); + + it('checks ecosystem link', () => { + cy.get('.col-md-10 > :nth-child(1) > a').click(); + cy.origin('https://osl.etsi.org/ecosystem/', () => { + cy.location("pathname").should("equal", "/ecosystem/"); + }); + }); + + it('checks osl etsi link', () => { + cy.get('[target="_blank"]').click(); + cy.location("pathname").should("equal", "/") + + }) + + }); + + +}) \ No newline at end of file diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts new file mode 100644 index 0000000000000000000000000000000000000000..6d4b7ee675e53e9b0e04f890f628a28870bb8562 --- /dev/null +++ b/cypress/support/commands.ts @@ -0,0 +1,276 @@ +declare namespace Cypress { + interface Chainable { + navigateToMetrics(selector): Chainable; + navigateToServices(selector): Chainable; + navigateToResources(selector): Chainable; + navigateToTesting(selector): Chainable; + navigateToProducts(selector): Chainable; + authUser(): Chainable; + loginPath(selector, path): Chainable; + navigateThroughDropdowns(headerTitle): Chainable; + // manageEntities(selector, numOfItems): Chainable; + checkProtectedRoutes(): Chainable; + } +} + +Cypress.Commands.add("navigateToMetrics", (selector) => { + cy.get(selector).click(); + cy.location("pathname").should("equal", "/metrics"); + +}) + +Cypress.Commands.add("navigateToServices", (selector) => { + cy.get(selector).click(); + cy.location("pathname").should("equal", "/services"); + cy.get(".btn").should("contain", "Sign In"); + cy.get(":nth-child(2) > .nav-item > .nav-link").should("exist"); + //service marketplace button should exist and should redirect to /services_marketplace + cy.get(".mr-auto > .nav-item > .nav-link").click(); + cy.get(".catalog-tree-header").should("exist"); + //sign in button should exist + cy.get(":nth-child(2) > .nav-item > .nav-link").click(); + //sign in button should redirect to auth form + cy.origin(Cypress.env("authURL"), () => { + cy.location("pathname").should("equal", Cypress.env("authRealm")); + }); +}); + +Cypress.Commands.add("navigateToResources", (selector) => { + cy.get(selector).click(); + cy.location("pathname").should("equal", "/resources"); + //sign in button should exist + cy.get(".btn").should("exist").click(); + //sign in button should redirect to auth form + cy.origin(Cypress.env("authURL"), () => { + cy.location("pathname").should("equal", Cypress.env("authRealm")); + }); +}); + +Cypress.Commands.add("navigateToTesting", (selector) => { + cy.get(selector).click(); + cy.location("pathname").should("equal", "/testing"); + //sign in button should exist + cy.get(".btn").should("exist").click(); + //sign in button should redirect to auth form + cy.origin(Cypress.env("authURL"), () => { + cy.location("pathname").should("equal", Cypress.env("authRealm")); + }); +}); + +Cypress.Commands.add("navigateToProducts", (selector) => { + cy.get(selector).click(); + cy.location("pathname").should("equal", "/products"); + cy.get(".btn").should("contain", "Sign In"); + cy.get(":nth-child(2) > .nav-item > .nav-link").should("exist"); + //marketplace button should exist and should redirect to products/marketplace + cy.get(".mr-auto > .nav-item > .nav-link").click(); + cy.get(".catalog-tree-header").should("exist"); + cy.get(".mb-0").should("contain", "Product Catalog Explorer"); + //sign in button should exist + cy.get(":nth-child(2) > .nav-item > .nav-link").click(); + //sign in button should redirect to auth form + cy.origin(Cypress.env("authURL"), () => { + cy.location("pathname").should("equal", Cypress.env("authRealm")); + }); +}); + +Cypress.Commands.add("authUser", () => { + cy.get(".btn").should("contain", "Sign In").click(); + cy.origin(Cypress.env("authURL"), () => { + cy.location("pathname").should("equal", Cypress.env("authRealm")); + cy.get("#username").type(Cypress.env("username")); + cy.get("#password").type(Cypress.env("password")); + cy.get("#kc-login").click(); + }); + cy.location("pathname").should("equal", "/redirect"); +}); + +Cypress.Commands.add("loginPath", (selector, path) => { + cy.get(selector).click(); + cy.intercept(path); + cy.location("pathname").should("equal", path); + cy.authUser(); +}); + +//navigate through all the dropdowns, all the dropdown items and nested items +Cypress.Commands.add("navigateThroughDropdowns", (headerTitle: string) => { + cy.get('[data-cy^="dropdown-"]').its('length').then((dropdownCount: number) => { + + const ensureDropdownOpen = (dropdownSelector: string, itemPattern: string) => { + cy.get(dropdownSelector).then(($dropdown) => { + const isOpen = $dropdown.attr('aria-expanded') === 'true' || $dropdown.hasClass('show'); + if (!isOpen) { + cy.wrap($dropdown).should('exist').click(); + } + }); + + //wait until items exist & are visible + cy.get(itemPattern, { timeout: 10000 }) + .should('have.length.greaterThan', 0) + .filter(':visible') + .should('have.length.greaterThan', 0); + }; + + const processDropdown = (dropdownIndex: number) => { + if (dropdownIndex >= dropdownCount) return; + + const dropdownSelector = `[data-cy="dropdown-${dropdownIndex}"]`; + const itemPattern = `[data-cy^="dropdown-${dropdownIndex}-item-"]`; + + ensureDropdownOpen(dropdownSelector, itemPattern); + + cy.get(itemPattern).its('length').then((itemCount: number) => { + if (itemCount === 0) { + cy.log(`Dropdown ${dropdownIndex} had no items, skipping.`); + processDropdown(dropdownIndex + 1); + return; + } + + const processItem = (itemIndex: number) => { + if (itemIndex >= itemCount) { + cy.log(`Finished dropdown ${dropdownIndex}`); + processDropdown(dropdownIndex + 1); + return; + } + + const itemSelector = `[data-cy="dropdown-${dropdownIndex}-item-${itemIndex}"]`; + + ensureDropdownOpen(dropdownSelector, itemPattern); + + cy.get(itemSelector).filter(':visible').invoke('text').then((rawText) => { + const itemText = rawText.trim(); + + cy.location('pathname').then((initialPath) => { + cy.log(`Clicking ${itemSelector}`); + cy.get(itemSelector).filter(':visible').should('exist').click(); + + cy.get('body').then(() => { + cy.location('pathname').then((newPath) => { + // if a redirect doesn't happen when an item is clicked, it has nested subitems + if (newPath === initialPath && itemText !== headerTitle) { + const nestedPattern = `[data-cy^="dropdown-${dropdownIndex}-item-${itemIndex}-subitem-"]`; + cy.get(nestedPattern).its('length').then((nestedCount: number) => { + if (nestedCount === 0) { + processItem(itemIndex + 1); + return; + } + + const processNested = (nestedIndex: number) => { + if (nestedIndex >= nestedCount) { + processItem(itemIndex + 1); + return; + } + + const nestedSelector = `[data-cy="dropdown-${dropdownIndex}-item-${itemIndex}-subitem-${nestedIndex}"]`; + cy.get(nestedSelector).filter(':visible').should('exist').click(); + + // a dialog may exist in place of a nested subitem + cy.get('body').then(($bodyAfterNested) => { + const dialogExists = + $bodyAfterNested.find('mat-dialog').length > 0 || + $bodyAfterNested.find('#mat-dialog-0').length > 0; + + if (dialogExists) { + cy.get('#mat-dialog-0').should('be.visible'); + cy.go('back'); + cy.wait(200); + ensureDropdownOpen(dropdownSelector, itemPattern); + cy.get(itemSelector).filter(':visible').click(); + processNested(nestedIndex + 1); + } else { + cy.location('pathname').then((afterNestedPath) => { + if (afterNestedPath !== initialPath) { + cy.location("pathname").should("not.equal", initialPath); + cy.go('back'); + cy.wait(200); + } + ensureDropdownOpen(dropdownSelector, itemPattern); + cy.get(itemSelector).filter(':visible').click(); + processNested(nestedIndex + 1); + }); + } + }); + }; + + processNested(0); + }); + } else if (itemText === headerTitle) { + // if the redirect doesn't happen, then we are at the item of the initial route + cy.location("pathname").should("equal", initialPath); + processItem(itemIndex + 1); + } else { + cy.location("pathname").should("not.equal", initialPath); + cy.go('back'); + cy.wait(200); + processItem(itemIndex + 1); + } + }); + }); + }); + }); + }; + + processItem(0); + }); + }; + + processDropdown(0); + }); +}); + +Cypress.Commands.add("checkProtectedRoutes", () => { + for (let route of Cypress.env("protectedRoutes")) { + cy.intercept(route); + cy.log(route); + cy.visit(route); + cy.location("pathname").should("equal", "/"); + } +}); + + +// Cypress.Commands.add("manageEntities", (selector, numOfItems) => { +// function clickItem(index) { +// if (index > numOfItems+1) return; + +// cy.get(selector).click(); // open navbar dropdown + +// cy.get('body').then(($body) => { +// const menuItem = $body.find( +// `.nav-item.open > #navbarDropdown > .dropdown-menu > :nth-child(${index}) > .dropdown-item` +// ); + +// if (menuItem.length === 0) { +// cy.log(`Skipping missing item at index ${index}`); +// cy.get('body').click(); +// clickItem(index + 1); +// return; +// } + +// cy.wrap(menuItem).click(); + +// cy.get('body').then(($page) => { +// const hasButton = $page.find('.text-md-right > .btn, .jumbotron-heading > .btn').length > 0; +// const hasHeader = $page.find('h2.shadowed').length > 0; + +// expect( +// hasButton || hasHeader, +// `Expected either a button or a header on page for item ${index}` +// ).to.be.true; + +// if (hasButton) { +// cy.get('.text-md-right > .btn, .jumbotron-heading > .btn') +// .first() +// .click(); +// } else { +// cy.log(`Found header instead of button for item ${index}`); +// } + +// cy.go('back').then(() => clickItem(index + 1)); +// }); +// }); +// } + +// clickItem(1); +// }); + + diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts new file mode 100644 index 0000000000000000000000000000000000000000..c90b6b6d3e0799ca98447d4d6645bec3bfe9efe1 --- /dev/null +++ b/cypress/support/e2e.ts @@ -0,0 +1,17 @@ +// *********************************************************** +// This example support/e2e.ts is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' diff --git a/package-lock.json b/package-lock.json index 35286f3148baa40ba7f706730b5fb66660db86cd..e04812b768654290839a971fd8983a98a0c0c3cd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,6 +36,9 @@ "blockly": "git://github.com/google/blockly.git#6.20210701.0", "bootstrap": "~4.6.0", "chartjs-plugin-datalabels": "~2.2.0", + "concurrently": "~9.2.1", + "cypress": "~14.5.4", + "dotenv": "~17.2.2", "jsoneditor": "~9.10.0", "jwt-decode": "~2.2.0", "marked": "^15.0.8", @@ -46,7 +49,9 @@ "ngx-progressbar": "~9.0.0", "ngx-toastr": "~15.2.2", "rxjs": "~7.4.0", + "timing-object": "~3.1.93", "tslib": "~2.0.0", + "wait-on": "^8.0.4", "zone.js": "~0.11.8" }, "devDependencies": { @@ -59,6 +64,7 @@ "@types/node": "~12.11.1", "@types/vimeo__player": "^2.18.3", "codelyzer": "~6.0.2", + "cypress": "~14.1.0", "jasmine-core": "~3.5.0", "jasmine-spec-reporter": "~5.0.0", "karma": "~6.4.1", @@ -71,17 +77,22 @@ "protractor": "~7.0.0", "ts-node": "~7.0.0", "tslint": "~6.1.0", - "typescript": "~4.6.4" + "tsx": "^4.19.3", + "typescript": "~4.6.4", + "wait-on": "^8.0.2" } }, "node_modules/@adobe/css-tools": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", - "integrity": "sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==", - "dev": true + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", + "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", + "dev": true, + "license": "MIT" }, "node_modules/@ampproject/remapping": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.1.0", @@ -96,6 +107,7 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.13.tgz", "integrity": "sha512-n0ISBuvkZHoOpAzuAZql1TU9VLHUE9e/a9g4VNOPHewjMzpN02VqeGKvJfOCKtzkCs6gVssIlILm2/SXxkIFxQ==", "dev": true, + "license": "MIT", "dependencies": { "@angular-devkit/core": "14.2.13", "rxjs": "6.6.7" @@ -111,6 +123,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -122,13 +135,15 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/@angular-devkit/build-angular": { "version": "14.2.13", "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.13.tgz", "integrity": "sha512-FJZKQ3xYFvEJ807sxVy4bCVyGU2NMl3UUPNfLIdIdzwwDEP9tx/cc+c4VtVPEZZfU8jVenu8XOvL6L0vpjt3yg==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "2.2.0", "@angular-devkit/architect": "0.1402.13", @@ -232,92 +247,12 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/core": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", - "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@angular-devkit/build-angular/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": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -329,34 +264,22 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@angular-devkit/build-angular/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "license": "0BSD" }, "node_modules/@angular-devkit/build-angular/node_modules/tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/@angular-devkit/build-webpack": { "version": "0.1402.13", "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.13.tgz", "integrity": "sha512-K27aJmuw86ZOdiu5PoGeGDJ2v7g2ZCK0bGwc8jzkjTLRfvd4FRKIIZumGv3hbQ3vQRLikiU6WMDRTFyCZky/EA==", "dev": true, + "license": "MIT", "dependencies": { "@angular-devkit/architect": "0.1402.13", "rxjs": "6.6.7" @@ -376,6 +299,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -387,13 +311,15 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/@angular-devkit/core": { "version": "14.2.13", "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.13.tgz", "integrity": "sha512-aIefeZcbjghQg/V6U9CTLtyB5fXDJ63KwYqVYkWP+i0XriS5A9puFgq2u/OVsWxAfYvqpDqp5AdQ0g0bi3CAsA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "8.11.0", "ajv-formats": "2.1.1", @@ -420,6 +346,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -431,13 +358,15 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/@angular-devkit/schematics": { "version": "14.2.13", "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.13.tgz", "integrity": "sha512-2zczyeNzeBcrT2HOysv52X9SH3tZoHfWJvVf6H0SIa74rfDKEl7hFpKNXnh3x8sIMLj5mZn05n5RCqGxCczcIg==", "dev": true, + "license": "MIT", "dependencies": { "@angular-devkit/core": "14.2.13", "jsonc-parser": "3.1.0", @@ -456,6 +385,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -467,12 +397,14 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/@angular/animations": { "version": "14.3.0", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.3.0.tgz", "integrity": "sha512-QoBcIKy1ZiU+4qJsAh5Ls20BupWiXiZzKb0s6L9/dntPt5Msr4Ao289XR2P6O1L+kTsCprH9Kt41zyGQ/bkRqg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -484,13 +416,16 @@ } }, "node_modules/@angular/animations/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/@angular/cdk": { "version": "14.2.7", "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.7.tgz", "integrity": "sha512-/tEsYaUbDSnfEmKVvAMramIptmhI67O+9STjOV0i+74XR2NospeK0fkbywIANu1n3w6AHGMotvRWJrjmbCElFg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -504,7 +439,9 @@ } }, "node_modules/@angular/cdk/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/@angular/cli": { @@ -512,6 +449,7 @@ "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.13.tgz", "integrity": "sha512-I5EepRem2CCyS3GDzQxZ2ZrqQwVqoGoLY+ZQhsK1QGWUnUyFOjbv3OlUGxRUYwcedu19V1EBAKjmQ96HzMIcVQ==", "dev": true, + "license": "MIT", "dependencies": { "@angular-devkit/architect": "0.1402.13", "@angular-devkit/core": "14.2.13", @@ -543,54 +481,11 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular/cli/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, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/@angular/cli/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@angular/cli/node_modules/yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@angular/common": { "version": "14.3.0", "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.3.0.tgz", "integrity": "sha512-pV9oyG3JhGWeQ+TFB0Qub6a1VZWMNZ6/7zEopvYivdqa5yDLLDSBRWb6P80RuONXyGnM1pa7l5nYopX+r/23GQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -603,13 +498,16 @@ } }, "node_modules/@angular/common/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/@angular/compiler": { "version": "14.3.0", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.3.0.tgz", "integrity": "sha512-E15Rh0t3vA+bctbKnBCaDmLvc3ix+ZBt6yFZmhZalReQ+KpOlvOJv+L9oiFEgg+rYVl2QdvN7US1fvT0PqswLw==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -629,6 +527,7 @@ "version": "14.3.0", "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.3.0.tgz", "integrity": "sha512-eoKpKdQ2X6axMgzcPUMZVYl3bIlTMzMeTo5V29No4BzgiUB+QoOTYGNJZkGRyqTNpwD9uSBJvmT2vG9+eC4ghQ==", + "license": "MIT", "dependencies": { "@babel/core": "^7.17.2", "chokidar": "^3.0.0", @@ -654,88 +553,23 @@ "typescript": ">=4.6.2 <4.9" } }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.19.6", - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.6", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helpers": "^7.19.4", - "@babel/parser": "^7.19.6", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.6", - "@babel/types": "^7.19.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { - "version": "7.20.1", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.0", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@angular/compiler-cli/node_modules/magic-string": { - "version": "0.26.7", - "license": "MIT", - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@angular/compiler-cli/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/@angular/compiler/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/@angular/core": { "version": "14.3.0", "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.3.0.tgz", "integrity": "sha512-wYiwItc0Uyn4FWZ/OAx/Ubp2/WrD3EgUJ476y1XI7yATGPF8n9Ld5iCXT08HOvc4eBcYlDfh90kTXR6/MfhzdQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -748,13 +582,16 @@ } }, "node_modules/@angular/core/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/@angular/forms": { "version": "14.3.0", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.3.0.tgz", "integrity": "sha512-fBZZC2UFMom2AZPjGQzROPXFWO6kvCsPDKctjJwClVC8PuMrkm+RRyiYRdBbt2qxWHEqOZM2OCQo73xUyZOYHw==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -769,7 +606,9 @@ } }, "node_modules/@angular/forms/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/@angular/language-service": { @@ -777,6 +616,7 @@ "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.3.0.tgz", "integrity": "sha512-Sij3OQzj1UGs1O8H9PxVAY/o27+oqZwQRnib66rsWvtbIBTjHp4FV3dTs5iVcr62GGv4V4Mff/2I82NP10GPQg==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || >=16.10.0" } @@ -785,6 +625,7 @@ "version": "14.3.0", "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.3.0.tgz", "integrity": "sha512-YmwlOEGnFonfDrIcWqlxXVFFjd0Q6yXeHGZCBFBfwbtjIseiJJ4UBmkTUgFeq7qlWevSFQzHdQnraFRGZpnMig==", + "license": "MIT", "dependencies": { "@babel/core": "7.18.9", "glob": "8.0.3", @@ -803,49 +644,50 @@ "@angular/compiler-cli": "14.3.0" } }, - "node_modules/@angular/localize/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/@angular/localize/node_modules/@babel/core": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@angular/localize/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" }, "engines": { - "node": ">=12" + "node": ">=6.9.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@angular/localize/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" + "node_modules/@angular/localize/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, "node_modules/@angular/material": { "version": "14.2.7", "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.7.tgz", "integrity": "sha512-WXHh8pEStpgkXZJmYOg2cI8BSHkV82ET4XTJCNPdveumaCn1UYnaNzsXD13kw5z+zmy8CufhFEzdXTrv/yt7KQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -860,13 +702,16 @@ } }, "node_modules/@angular/material/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/@angular/platform-browser": { "version": "14.3.0", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.3.0.tgz", "integrity": "sha512-w9Y3740UmTz44T0Egvc+4QV9sEbO61L+aRHbpkLTJdlEGzHByZvxJmJyBYmdqeyTPwc/Zpy7c02frlpfAlyB7A==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -888,6 +733,7 @@ "version": "14.3.0", "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.3.0.tgz", "integrity": "sha512-rneZiMrIiYRhrkQvdL40E2ErKRn4Zdo6EtjBM9pAmWeyoM8oMnOZb9gz5vhrkNWg06kVMVg0yKqluP5How7j3A==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -902,17 +748,22 @@ } }, "node_modules/@angular/platform-browser-dynamic/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/@angular/platform-browser/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/@angular/router": { "version": "14.3.0", "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.3.0.tgz", "integrity": "sha512-uip0V7w7k7xyxxpTPbr7EuMnYLj3FzJrwkLVJSEw3TMMGHt5VU5t4BBa9veGZOta2C205XFrTAHnp8mD+XYY1w==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -927,7 +778,9 @@ } }, "node_modules/@angular/router/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/@apidevtools/json-schema-ref-parser": { @@ -951,9 +804,9 @@ "license": "Python-2.0" }, "node_modules/@apidevtools/json-schema-ref-parser/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -965,45 +818,50 @@ }, "node_modules/@assemblyscript/loader": { "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", "dev": true, "license": "Apache-2.0" }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "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.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", - "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", - "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", + "@babel/generator": "^7.18.10", "@babel/helper-compilation-targets": "^7.18.9", "@babel/helper-module-transforms": "^7.18.9", "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1022,6 +880,7 @@ "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" } @@ -1030,6 +889,7 @@ "version": "7.18.12", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", + "license": "MIT", "dependencies": { "@babel/types": "^7.18.10", "@jridgewell/gen-mapping": "^0.3.2", @@ -1040,16 +900,13 @@ } }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "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": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@babel/helper-annotate-as-pure": { @@ -1057,6 +914,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" }, @@ -1065,12 +923,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "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.26.5", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -1079,39 +938,28 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/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==", - "dependencies": { - "yallist": "^3.0.2" - } - }, "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-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz", - "integrity": "sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz", + "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.26.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.26.9", + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.5", "semver": "^6.3.1" }, "engines": { @@ -1122,12 +970,13 @@ } }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "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" @@ -1138,18 +987,20 @@ "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/helper-create-regexp-features-plugin": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", - "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.2.0", + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", "semver": "^6.3.1" }, "engines": { @@ -1160,12 +1011,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "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" @@ -1176,6 +1028,7 @@ "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" } @@ -1185,6 +1038,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.17.7", "@babel/helper-plugin-utils": "^7.16.7", @@ -1202,52 +1056,69 @@ "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/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.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.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", - "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "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.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "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.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -1257,35 +1128,38 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", - "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "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": { - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", - "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "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": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", - "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + "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": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-wrap-function": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1295,26 +1169,28 @@ } }, "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "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" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", - "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", + "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": { - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.26.5" + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1324,104 +1200,110 @@ } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", - "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "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": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "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" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "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.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", - "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + "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.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", - "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", - "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", + "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.0", - "@babel/types": "^7.27.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers/node_modules/@babel/template": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", - "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "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.26.2", - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", - "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.27.0" + "@babel/types": "^7.28.5" }, "bin": { "parser": "bin/babel-parser.js" @@ -1431,12 +1313,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.9", - "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.25.9.tgz", - "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1446,14 +1329,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + "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.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9" + "@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" @@ -1468,6 +1352,7 @@ "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-plugin-utils": "^7.18.9", @@ -1487,6 +1372,7 @@ "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1504,6 +1390,7 @@ "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-static-block instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.21.0", "@babel/helper-plugin-utils": "^7.20.2", @@ -1522,6 +1409,7 @@ "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-dynamic-import instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1539,6 +1427,7 @@ "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1556,6 +1445,7 @@ "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-json-strings instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1573,6 +1463,7 @@ "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1590,6 +1481,7 @@ "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1607,6 +1499,7 @@ "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1624,6 +1517,7 @@ "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.20.5", "@babel/helper-compilation-targets": "^7.20.7", @@ -1644,6 +1538,7 @@ "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1661,6 +1556,7 @@ "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", @@ -1679,6 +1575,7 @@ "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1696,6 +1593,7 @@ "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-create-class-features-plugin": "^7.21.0", @@ -1715,6 +1613,7 @@ "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1731,6 +1630,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1743,6 +1643,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -1755,6 +1656,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1770,6 +1672,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1782,6 +1685,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -1790,12 +1694,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", - "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1809,6 +1714,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1821,6 +1727,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1833,6 +1740,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1845,6 +1753,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1857,6 +1766,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1869,6 +1779,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1881,6 +1792,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1893,6 +1805,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1908,6 +1821,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1919,12 +1833,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", - "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1938,6 +1853,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -1951,12 +1867,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", - "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", + "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": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1966,12 +1883,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", - "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz", + "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1981,17 +1899,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", - "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "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.25.9", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "globals": "^11.1.0" + "@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.28.4" }, "engines": { "node": ">=6.9.0" @@ -2001,25 +1920,27 @@ } }, "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "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" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", - "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/template": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2029,26 +1950,29 @@ } }, "node_modules/@babel/plugin-transform-computed-properties/node_modules/@babel/template": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", - "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", - "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -2058,13 +1982,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", - "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", + "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": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2074,12 +1999,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", - "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2089,12 +2015,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", - "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz", + "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2104,13 +2031,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", - "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", + "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": { - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2120,14 +2048,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", - "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + "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": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2137,12 +2066,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", - "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2152,12 +2082,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", - "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2167,13 +2098,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", - "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + "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": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2183,13 +2115,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", - "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", + "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": { - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2199,15 +2132,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", - "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", + "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -2217,13 +2151,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", - "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + "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": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2233,13 +2168,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", + "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": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2249,12 +2185,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", - "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2264,13 +2201,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", - "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2280,13 +2218,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz", + "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2296,12 +2235,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", - "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2311,12 +2251,13 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", - "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2326,13 +2267,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", - "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9", - "regenerator-transform": "^0.15.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2342,12 +2283,13 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", - "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2361,6 +2303,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.9", @@ -2381,17 +2324,19 @@ "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-transform-shorthand-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", - "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2401,13 +2346,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", - "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2417,12 +2363,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", - "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2432,12 +2379,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", - "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", + "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": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2447,12 +2395,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", - "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", + "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": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2462,12 +2411,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", - "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2477,13 +2427,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", - "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", + "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": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2497,6 +2448,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.18.8", "@babel/helper-compilation-targets": "^7.18.9", @@ -2586,6 +2538,7 @@ "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" } @@ -2595,6 +2548,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -2611,6 +2565,7 @@ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", "dev": true, + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -2622,6 +2577,7 @@ "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.10", @@ -2632,31 +2588,33 @@ } }, "node_modules/@babel/traverse": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz", - "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.10", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", - "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.10", - "@babel/types": "^7.26.10", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -2664,35 +2622,34 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/template": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", - "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", + "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.26.2", - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "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": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@babel/traverse/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" }, @@ -2701,13 +2658,13 @@ } }, "node_modules/@babel/types": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", - "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -2716,10 +2673,13 @@ "node_modules/@braintree/sanitize-url": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", - "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==" + "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==", + "license": "MIT" }, "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": { @@ -2731,6 +2691,7 @@ "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.2", "postcss-selector-parser": "^6.0.10" @@ -2751,6 +2712,7 @@ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", "dev": true, + "license": "CC0-1.0", "engines": { "node": "^14 || ^16 || >=18" }, @@ -2767,6 +2729,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2780,6 +2743,7 @@ "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -2800,6 +2764,7 @@ "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2819,6 +2784,7 @@ "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2838,6 +2804,7 @@ "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -2858,6 +2825,7 @@ "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" @@ -2878,6 +2846,7 @@ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", "dev": true, + "license": "CC0-1.0", "engines": { "node": "^14 || ^16 || >=18" }, @@ -2894,6 +2863,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2907,6 +2877,7 @@ "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2926,6 +2897,7 @@ "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2945,6 +2917,7 @@ "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -2965,6 +2938,7 @@ "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2980,6 +2954,7 @@ "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2999,6 +2974,7 @@ "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -3018,6 +2994,7 @@ "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -3037,6 +3014,7 @@ "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", "dev": true, + "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -3048,10 +3026,62 @@ "postcss": "^8.2" } }, + "node_modules/@cypress/request": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.9.tgz", + "integrity": "sha512-I3l7FdGRXluAS44/0NguwWlO83J18p0vlr2FYHrJkWdNYhgVoiYo61IXPqaOsL+vNxU1ZqMACzItGK3/KKDsdw==", + "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": "~4.0.4", + "http-signature": "~1.4.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "6.14.0", + "safe-buffer": "^5.1.2", + "tough-cookie": "^5.0.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/@danielmoncada/angular-datetime-picker": { "version": "14.2.0", "resolved": "https://registry.npmjs.org/@danielmoncada/angular-datetime-picker/-/angular-datetime-picker-14.2.0.tgz", "integrity": "sha512-84EqUeGyHKMVBgipWYUNdLTczjfF8TXnX6WpVZzeFB/t+ciZ7VtLm4OGgIV1tJ3Nxanr1g1Ft1TmzQoebz0iTA==", + "license": "MIT", "dependencies": { "tslib": "^2.3.1" }, @@ -3065,6 +3095,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@danielmoncada/angular-datetime-picker-moment-adapter/-/angular-datetime-picker-moment-adapter-3.0.1.tgz", "integrity": "sha512-A4mWzCHU8u1s0c12bfMMKtauUM3Md+kbXhWV8LDEUyS9bBuZvpaj6dimDyyAC0ztJ+c/iz8jI41OgX6GhbCS3Q==", + "license": "MIT", "dependencies": { "tslib": "^2.0.0" }, @@ -3078,19 +3109,465 @@ "node_modules/@danielmoncada/angular-datetime-picker/node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", + "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@fortawesome/fontawesome-free": { "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", + "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==", "hasInstallScript": true, "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", "engines": { @@ -3098,133 +3575,201 @@ } }, "node_modules/@fullcalendar/angular": { - "version": "6.1.16", - "resolved": "https://registry.npmjs.org/@fullcalendar/angular/-/angular-6.1.16.tgz", - "integrity": "sha512-Qqs0MZPlIDretmWgtOr0H+uiLO6DKeqxqH1Y2oeWufwEbQTaAxhH7mivdTmxL596JkiuJ/1dhCm+v4tVbFb40w==", + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/angular/-/angular-6.1.19.tgz", + "integrity": "sha512-a3TmjKnF8xprH1aNgFn9zYehEhM4GBAyh+91SJymno2j1cE8D8z0+W1HNwtDekKWwJt/5YoinCvDTHydmF/kKw==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "12 - 19", - "@angular/core": "12 - 19", - "@fullcalendar/core": "~6.1.15" + "@angular/common": "12 - 20", + "@angular/core": "12 - 20", + "@fullcalendar/core": "~6.1.19" } }, "node_modules/@fullcalendar/angular/node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/@fullcalendar/core": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.15.tgz", - "integrity": "sha512-BuX7o6ALpLb84cMw1FCB9/cSgF4JbVO894cjJZ6kP74jzbUZNjtwffwRdA+Id8rrLjT30d/7TrkW90k4zbXB5Q==", + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.19.tgz", + "integrity": "sha512-z0aVlO5e4Wah6p6mouM0UEqtRf1MZZPt4mwzEyU6kusaNL+dlWQgAasF2cK23hwT4cmxkEmr4inULXgpyeExdQ==", + "license": "MIT", "dependencies": { "preact": "~10.12.1" } }, "node_modules/@fullcalendar/daygrid": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.15.tgz", - "integrity": "sha512-j8tL0HhfiVsdtOCLfzK2J0RtSkiad3BYYemwQKq512cx6btz6ZZ2RNc/hVnIxluuWFyvx5sXZwoeTJsFSFTEFA==", + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.19.tgz", + "integrity": "sha512-IAAfnMICnVWPjpT4zi87i3FEw0xxSza0avqY/HedKEz+l5MTBYvCDPOWDATpzXoLut3aACsjktIyw9thvIcRYQ==", + "license": "MIT", "peerDependencies": { - "@fullcalendar/core": "~6.1.15" + "@fullcalendar/core": "~6.1.19" } }, "node_modules/@fullcalendar/interaction": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.15.tgz", - "integrity": "sha512-DOTSkofizM7QItjgu7W68TvKKvN9PSEEvDJceyMbQDvlXHa7pm/WAVtAc6xSDZ9xmB1QramYoWGLHkCYbTW1rQ==", + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.19.tgz", + "integrity": "sha512-GOciy79xe8JMVp+1evAU3ytdwN/7tv35t5i1vFkifiuWcQMLC/JnLg/RA2s4sYmQwoYhTw/p4GLcP0gO5B3X5w==", + "license": "MIT", "peerDependencies": { - "@fullcalendar/core": "~6.1.15" + "@fullcalendar/core": "~6.1.19" } }, "node_modules/@fullcalendar/list": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-6.1.15.tgz", - "integrity": "sha512-U1bce04tYDwkFnuVImJSy2XalYIIQr6YusOWRPM/5ivHcJh67Gm8CIMSWpi3KdRSNKFkqBxLPkfZGBMaOcJYug==", + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-6.1.19.tgz", + "integrity": "sha512-knZHpAVF0LbzZpSJSUmLUUzF0XlU/MRGK+Py2s0/mP93bCtno1k2L3XPs/kzh528hSjehwLm89RgKTSfW1P6cA==", + "license": "MIT", "peerDependencies": { - "@fullcalendar/core": "~6.1.15" + "@fullcalendar/core": "~6.1.19" } }, "node_modules/@fullcalendar/premium-common": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/@fullcalendar/premium-common/-/premium-common-6.1.15.tgz", - "integrity": "sha512-IwUHptHNzWDOgAsXLoBntGxmbfCKvUy6iYFMCP3F3ahbG58E0PJMYsXvgw+NaA7Cz4gcQoVHioGjIFgQqs3Keg==", + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/premium-common/-/premium-common-6.1.19.tgz", + "integrity": "sha512-bOWHm1u1dUy6M4fQ0hNK7qEI7SrVWrN1ovv/z4/FE/ybfM19ukz7SFs907Ur7KUBWLNKTQYXBtdrY/ginwWraw==", + "license": "SEE LICENSE IN LICENSE.md", "peerDependencies": { - "@fullcalendar/core": "~6.1.15" + "@fullcalendar/core": "~6.1.19" } }, "node_modules/@fullcalendar/resource": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/@fullcalendar/resource/-/resource-6.1.15.tgz", - "integrity": "sha512-s9Rz3HNDQWBYCG+V4wqg8x5+UTD5kC3S2poq+5zwbPeyWT8+FEILikQZIgfESX70Z4fn8bBlLJ04Jd/LijfqWw==", + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/resource/-/resource-6.1.19.tgz", + "integrity": "sha512-br1ylX/aIOfd8m7Tzl2LpJBSI+N9Q6aS1qw7K9qnQjYXWQyHBlfLG6ZcPmmkjfaqTUJc8ARRbtNWj1ts5qOZgQ==", + "license": "SEE LICENSE IN LICENSE.md", "peer": true, "dependencies": { - "@fullcalendar/premium-common": "~6.1.15" + "@fullcalendar/premium-common": "~6.1.19" }, "peerDependencies": { - "@fullcalendar/core": "~6.1.15" + "@fullcalendar/core": "~6.1.19" } }, "node_modules/@fullcalendar/resource-timeline": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/@fullcalendar/resource-timeline/-/resource-timeline-6.1.15.tgz", - "integrity": "sha512-3bvGNDE84ZEV6RLZcYWvMWaViLm22Uw182PMXmFjvq2Vh/bPrrzeLkmyocPsyiT2Bbv5THxwLyzMd7X3Qi/v3Q==", + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/resource-timeline/-/resource-timeline-6.1.19.tgz", + "integrity": "sha512-oC3aVR++dLqJNeBwmLHq9sDgRDFfIG0qSteV7bgBekvNlqEMqXx8wPjUxnELrq8rrhMmK4iV3wO7AB/48IVgyg==", + "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@fullcalendar/premium-common": "~6.1.15", - "@fullcalendar/scrollgrid": "~6.1.15", - "@fullcalendar/timeline": "~6.1.15" + "@fullcalendar/premium-common": "~6.1.19", + "@fullcalendar/scrollgrid": "~6.1.19", + "@fullcalendar/timeline": "~6.1.19" }, "peerDependencies": { - "@fullcalendar/core": "~6.1.15", - "@fullcalendar/resource": "~6.1.15" + "@fullcalendar/core": "~6.1.19", + "@fullcalendar/resource": "~6.1.19" } }, "node_modules/@fullcalendar/scrollgrid": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/@fullcalendar/scrollgrid/-/scrollgrid-6.1.15.tgz", - "integrity": "sha512-z7q6eh9bUSQ60YwgztPlJzQAMr6XQgky6bxNQR9cMqfzcwyo/ww11G7OZUp840VIXyqT3g8XPziEDbS5zB4VVQ==", + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/scrollgrid/-/scrollgrid-6.1.19.tgz", + "integrity": "sha512-S1pbiYHvmV0ep6z5sWXJQfgW4Y/jrS5iLIAqSagDFPK0jr327nBxl7Ryi3Zb5UdMIP0/O4GXs8jwZabQPd8SOg==", + "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@fullcalendar/premium-common": "~6.1.15" + "@fullcalendar/premium-common": "~6.1.19" }, "peerDependencies": { - "@fullcalendar/core": "~6.1.15" + "@fullcalendar/core": "~6.1.19" } }, "node_modules/@fullcalendar/timegrid": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-6.1.15.tgz", - "integrity": "sha512-61ORr3A148RtxQ2FNG7JKvacyA/TEVZ7z6I+3E9Oeu3dqTf6M928bFcpehRTIK6zIA6Yifs7BeWHgOE9dFnpbw==", + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-6.1.19.tgz", + "integrity": "sha512-OuzpUueyO9wB5OZ8rs7TWIoqvu4v3yEqdDxZ2VcsMldCpYJRiOe7yHWKr4ap5Tb0fs7Rjbserc/b6Nt7ol6BRg==", + "license": "MIT", "dependencies": { - "@fullcalendar/daygrid": "~6.1.15" + "@fullcalendar/daygrid": "~6.1.19" }, "peerDependencies": { - "@fullcalendar/core": "~6.1.15" + "@fullcalendar/core": "~6.1.19" } }, "node_modules/@fullcalendar/timeline": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/@fullcalendar/timeline/-/timeline-6.1.15.tgz", - "integrity": "sha512-VWylStpFFS8lZVUqu0c1b0MF5gkuVH2lzyCK/gopMsbrppqr97sHDTfWEYDHaQXCeO7cd4gKXSliQ0dc9GMlUw==", + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/timeline/-/timeline-6.1.19.tgz", + "integrity": "sha512-d2P961mnUTXtJeWNmIq1neoDmZcrPUaK7nGFoc+jQAlnmG3aNSVWQmD1ia694AMqLWtcWkwipW9MuaJgx2QvrA==", + "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@fullcalendar/premium-common": "~6.1.15", - "@fullcalendar/scrollgrid": "~6.1.15" + "@fullcalendar/premium-common": "~6.1.19", + "@fullcalendar/scrollgrid": "~6.1.19" }, "peerDependencies": { - "@fullcalendar/core": "~6.1.15" + "@fullcalendar/core": "~6.1.19" } }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/@hapi/address": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-5.1.1.tgz", + "integrity": "sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/formula": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-3.0.2.tgz", + "integrity": "sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/hoek": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.7.tgz", + "integrity": "sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/pinpoint": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz", + "integrity": "sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/tlds": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@hapi/tlds/-/tlds-1.1.4.tgz", + "integrity": "sha512-Fq+20dxsxLaUn5jSSWrdtSRcIUba2JquuorF9UW1wIJS5cSUwxIsO2GIhaWynPRflvxSzFN+gxKte2HEW1OuoA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2" + } }, "node_modules/@iplab/ngx-file-upload": { "version": "14.0.2", "resolved": "https://registry.npmjs.org/@iplab/ngx-file-upload/-/ngx-file-upload-14.0.2.tgz", "integrity": "sha512-VUNqvM/cmltGHKvix5yMX0S04u6f5b3mz22EYL6aSpE96th3QdTIYCTz0PL2+MFJGW5bfzXfRozanpYVpolDOw==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -3237,11 +3782,15 @@ } }, "node_modules/@iplab/ngx-file-upload/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "license": "ISC", "dependencies": { @@ -3257,6 +3806,8 @@ }, "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", "engines": { @@ -3265,6 +3816,8 @@ }, "node_modules/@jridgewell/gen-mapping": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.0", @@ -3275,7 +3828,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", + "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", "engines": { "node": ">=6.0.0" @@ -3285,40 +3840,44 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", + "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", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", + "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==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", + "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.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -3343,6 +3902,7 @@ "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.13.tgz", "integrity": "sha512-RQx/rGX7K/+R55x1R6Ax1JzyeHi8cW11dEXpzHWipyuSpusQLUN53F02eMB4VTakXsL3mFNWWy4bX3/LSq8/9w==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || >=16.10.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", @@ -3359,6 +3919,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -3372,6 +3933,7 @@ "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" } @@ -3381,6 +3943,7 @@ "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": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -3394,6 +3957,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, + "license": "ISC", "dependencies": { "@gar/promisify": "^1.1.3", "semver": "^7.3.5" @@ -3407,6 +3971,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^3.0.0", "lru-cache": "^7.4.4", @@ -3416,34 +3981,20 @@ "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", - "which": "^2.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@npmcli/git/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, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "which": "^2.0.2" }, "engines": { - "node": ">= 8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" } }, "node_modules/@npmcli/installed-package-contents": { @@ -3451,6 +4002,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", "dev": true, + "license": "ISC", "dependencies": { "npm-bundled": "^1.1.1", "npm-normalize-package-bin": "^1.0.1" @@ -3468,6 +4020,7 @@ "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, + "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -3481,6 +4034,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", "dev": true, + "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } @@ -3490,6 +4044,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", "dev": true, + "license": "ISC", "dependencies": { "infer-owner": "^1.0.4" }, @@ -3502,6 +4057,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^2.0.0", "@npmcli/promise-spawn": "^3.0.0", @@ -3513,26 +4069,12 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@npmcli/run-script/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, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/@schematics/angular": { "version": "14.2.13", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.13.tgz", "integrity": "sha512-MLxTpTU3E8QACQ/5c0sENMR2gRiMXpGaKeD5IHY+3wyU2fUSJVB0QPU/l1WhoyZbX8N9ospBgf5UEG7taVF9rg==", "dev": true, + "license": "MIT", "dependencies": { "@angular-devkit/core": "14.2.13", "@angular-devkit/schematics": "14.2.13", @@ -3545,29 +4087,41 @@ } }, "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", + "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/@sphinxxxx/color-conversion": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", - "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==" + "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==", + "license": "ISC" + }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "dev": true, + "license": "MIT" }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "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": { "@types/connect": "*", "@types/node": "*" @@ -3578,6 +4132,7 @@ "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -3587,6 +4142,7 @@ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -3596,15 +4152,16 @@ "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": { "@types/express-serve-static-core": "*", "@types/node": "*" } }, "node_modules/@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "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", "dependencies": { @@ -3612,7 +4169,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.4.9", + "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", "dependencies": { @@ -3621,7 +4180,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.4", + "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", "dependencies": { @@ -3631,26 +4192,30 @@ }, "node_modules/@types/estree": { "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true, "license": "MIT" }, "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", - "@types/serve-static": "*" + "@types/serve-static": "^1" } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", - "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz", + "integrity": "sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -3659,10 +4224,11 @@ } }, "node_modules/@types/express/node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "version": "4.19.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", + "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -3671,27 +4237,33 @@ } }, "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true + "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==", + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/jasmine": { "version": "3.3.16", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.3.16.tgz", + "integrity": "sha512-Nveep4zKGby8uIvG2AEUyYOwZS8uVeHK9TgbuWYSawUDDdIgfhCKz28QzamTo//Jk7Ztt9PO3f+vzlB6a4GV1Q==", "dev": true, "license": "MIT" }, "node_modules/@types/jasminewd2": { - "version": "2.0.10", + "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": { @@ -3699,30 +4271,38 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.11", + "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/@types/marked": { - "version": "4.0.7", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.3.2.tgz", + "integrity": "sha512-a79Yc3TOk6dGdituy8hmTTJXjOkZ7zsFYV10L337ttq/rec8lRMDBpV7fL3uLx6TgbFCa5DU/h8FmIBQPSbU0w==", "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "12.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.11.7.tgz", + "integrity": "sha512-JNbGaHFCLwgHn/iCckiGSOZ1XYHsKFwREtzPwSGCVld1SGhOlmZw2D4ZI94HQCrBHbADzW9m4LER/8olJTRGHA==", "dev": true, "license": "MIT" }, "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "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": { "@types/node": "*" } @@ -3731,43 +4311,51 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/q": { "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==", "dev": true, "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.9.18", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", - "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", - "dev": true + "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 + "dev": true, + "license": "MIT" }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/selenium-webdriver": { - "version": "3.0.20", + "version": "3.0.26", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.26.tgz", + "integrity": "sha512-dyIGFKXfUFiwkMfNGn1+F6b80ZjR3uSYv1j6xVJSDlft5waZ2cwkHW4e7zNzvq7hiEackcgvBpmnXZrI1GltPg==", "dev": true, "license": "MIT" }, "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/mime": "^1", "@types/node": "*" } }, @@ -3776,26 +4364,54 @@ "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", "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", - "@types/send": "*" + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" } }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sizzle": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.10.tgz", + "integrity": "sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==", + "dev": true, + "license": "MIT" + }, "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": "MIT", "dependencies": { "@types/node": "*" } @@ -3808,18 +4424,30 @@ "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==", + "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": { + "@types/node": "*" + } + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { "@types/node": "*" } }, "node_modules/@vimeo/player": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/@vimeo/player/-/player-2.29.0.tgz", - "integrity": "sha512-9JjvjeqUndb9otCCFd0/+2ESsLk7VkDE6sxOBy9iy2ukezuQbplVRi+g9g59yAurKofbmTi/KcKxBGO/22zWRw==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/@vimeo/player/-/player-2.30.1.tgz", + "integrity": "sha512-rbPMASxUPR6tq4KQatOqL2ZMUOA6hrDS9xReRoTNF/s1Ru+NZr+5qWS4xxHJ4cqwZF6Ri38/qOAQRe66sYY6bg==", "license": "MIT", "dependencies": { "native-promise-only": "0.8.1", @@ -3828,6 +4456,8 @@ }, "node_modules/@webassemblyjs/ast": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, "license": "MIT", "dependencies": { @@ -3837,21 +4467,29 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3862,11 +4500,15 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, "license": "MIT", "dependencies": { @@ -3878,6 +4520,8 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3886,6 +4530,8 @@ }, "node_modules/@webassemblyjs/leb128": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3894,11 +4540,15 @@ }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, "license": "MIT", "dependencies": { @@ -3914,6 +4564,8 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, "license": "MIT", "dependencies": { @@ -3926,6 +4578,8 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, "license": "MIT", "dependencies": { @@ -3937,6 +4591,8 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, "license": "MIT", "dependencies": { @@ -3950,6 +4606,8 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, "license": "MIT", "dependencies": { @@ -3959,31 +4617,43 @@ }, "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/@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, "license": "Apache-2.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": "BSD-2-Clause" }, "node_modules/abab": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", "license": "BSD-3-Clause" }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "dev": true, + "license": "ISC" }, "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": { @@ -3994,13 +4664,26 @@ "node": ">= 0.6" } }, + "node_modules/accepts/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/ace-builds": { - "version": "1.34.1", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.34.1.tgz", - "integrity": "sha512-hwRzr6BkRwsq5A19yA9E36KNNtn0+zESYolnWK3TADJsWVQS0T24nvbgdjXwqk2JEMQXE4PlqAw+ZgprvFtKjw==" + "version": "1.43.4", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.43.4.tgz", + "integrity": "sha512-8hAxVfo2ImICd69BWlZwZlxe9rxDGDjuUhh+WeWgGDvfBCE+r3lkynkQvIovDz4jcMi8O7bsEaFygaDT+h9sBA==", + "license": "BSD-3-Clause" }, "node_modules/acorn": { "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -4011,6 +4694,8 @@ }, "node_modules/acorn-globals": { "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", "license": "MIT", "dependencies": { "acorn": "^6.0.1", @@ -4019,6 +4704,8 @@ }, "node_modules/acorn-globals/node_modules/acorn": { "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -4029,6 +4716,8 @@ }, "node_modules/acorn-walk": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", "license": "MIT", "engines": { "node": ">=0.4.0" @@ -4036,6 +4725,8 @@ }, "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": { @@ -4051,6 +4742,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -4061,12 +4753,13 @@ } }, "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", + "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.0" + "node": ">=12.0" } }, "node_modules/agent-base": { @@ -4074,6 +4767,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "4" }, @@ -4086,6 +4780,7 @@ "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", "dev": true, + "license": "MIT", "dependencies": { "humanize-ms": "^1.2.1" }, @@ -4098,6 +4793,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -4111,6 +4807,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -4127,6 +4824,7 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -4144,6 +4842,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -4155,6 +4854,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/ang-jsoneditor/-/ang-jsoneditor-3.0.2.tgz", "integrity": "sha512-Xt3OcXOrZ7go/IEVZFJTzsZErFg9tx5cPKr1ADoIfa7gX3Y1sy3GJKtT5oMpDgilWPt6/hkjuaXY62cRAwBjng==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -4165,14 +4865,16 @@ } }, "node_modules/ang-jsoneditor/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/angular-oauth2-oidc": { "version": "14.0.1", "resolved": "https://registry.npmjs.org/angular-oauth2-oidc/-/angular-oauth2-oidc-14.0.1.tgz", "integrity": "sha512-2DgIqGapAQYSYwgMmMv5Ef7BfpGO7DJvU3kZyjL7Z2aMbpacuzia17eUb2Y/lwqrzJZyMl/sgacAE1SJI4lQ4w==", + "license": "MIT", "dependencies": { "tslib": "^2.0.0" }, @@ -4186,6 +4888,7 @@ "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" } @@ -4195,6 +4898,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -4213,30 +4917,39 @@ "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } }, "node_modules/ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/anymatch": { - "version": "3.1.2", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", @@ -4248,6 +4961,8 @@ }, "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, "license": "MIT", "engines": { @@ -4255,10 +4970,32 @@ } }, "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.1.0.tgz", + "integrity": "sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==", + "dev": true, + "license": "ISC" + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, "node_modules/are-we-there-yet": { "version": "3.0.1", @@ -4266,6 +5003,7 @@ "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -4276,6 +5014,8 @@ }, "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": { @@ -4284,11 +5024,15 @@ }, "node_modules/argparse/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/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": "Apache-2.0", "dependencies": { @@ -4297,17 +5041,38 @@ } }, "node_modules/array-equal": { - "version": "1.0.0", - "license": "MIT" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.2.tgz", + "integrity": "sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "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 + "dev": true, + "license": "MIT" + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/array-uniq": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true, "license": "MIT", "engines": { @@ -4316,6 +5081,8 @@ }, "node_modules/arrify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, "license": "MIT", "engines": { @@ -4324,6 +5091,8 @@ }, "node_modules/asn1": { "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" @@ -4331,6 +5100,8 @@ }, "node_modules/assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "license": "MIT", "engines": { "node": ">=0.8" @@ -4338,17 +5109,48 @@ }, "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/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, "node_modules/asynckit": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "version": "10.4.22", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz", + "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==", "dev": true, "funding": [ { @@ -4364,10 +5166,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", + "browserslist": "^4.27.0", + "caniuse-lite": "^1.0.30001754", + "fraction.js": "^5.3.4", "normalize-range": "^0.1.2", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" @@ -4384,17 +5187,42 @@ }, "node_modules/aws-sign2": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/aws4": { - "version": "1.11.0", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, "license": "MIT" }, "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": "Apache-2.0", "dependencies": { @@ -4403,6 +5231,8 @@ }, "node_modules/babel-loader": { "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4424,6 +5254,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -4435,6 +5266,8 @@ }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4453,6 +5286,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.17.7", "@babel/helper-define-polyfill-provider": "^0.3.3", @@ -4467,6 +5301,7 @@ "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" } @@ -4476,6 +5311,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.2", "core-js-compat": "^3.21.0" @@ -4489,6 +5325,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.3" }, @@ -4498,10 +5335,14 @@ }, "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==", "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true, "funding": [ { @@ -4529,14 +5370,26 @@ "node": "^4.5.0 || >= 5.9" } }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.29.tgz", + "integrity": "sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==", + "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 + "dev": true, + "license": "MIT" }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" @@ -4544,6 +5397,8 @@ }, "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": { @@ -4551,14 +5406,21 @@ } }, "node_modules/binary-extensions": { - "version": "2.2.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bl": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "license": "MIT", "dependencies": { @@ -4567,8 +5429,17 @@ "readable-stream": "^3.4.0" } }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/blocking-proxy": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", "dev": true, "license": "MIT", "dependencies": { @@ -4589,11 +5460,19 @@ "jsdom": "15.2.1" } }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, "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", @@ -4615,22 +5494,43 @@ }, "node_modules/body-parser/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/body-parser/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, + "node_modules/body-parser/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/body-parser/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": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "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": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" @@ -4638,11 +5538,16 @@ }, "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/boolean": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "license": "MIT" }, @@ -4650,6 +5555,7 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", + "deprecated": "This version of Bootstrap is no longer supported. Please upgrade to the latest version.", "funding": [ { "type": "github", @@ -4660,26 +5566,26 @@ "url": "https://opencollective.com/bootstrap" } ], + "license": "MIT", "peerDependencies": { "jquery": "1.9.1 - 3", "popper.js": "^1.16.1" } }, "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, + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.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==", + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -4689,12 +5595,14 @@ }, "node_modules/browser-process-hrtime": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "license": "BSD-2-Clause" }, "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "funding": [ { "type": "opencollective", @@ -4709,11 +5617,13 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" @@ -4724,6 +5634,8 @@ }, "node_modules/browserstack": { "version": "1.6.1", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz", + "integrity": "sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==", "dev": true, "license": "MIT", "dependencies": { @@ -4732,6 +5644,8 @@ }, "node_modules/browserstack/node_modules/agent-base": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "dev": true, "license": "MIT", "dependencies": { @@ -4743,6 +5657,8 @@ }, "node_modules/browserstack/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4751,6 +5667,8 @@ }, "node_modules/browserstack/node_modules/https-proxy-agent": { "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", "dev": true, "license": "MIT", "dependencies": { @@ -4763,6 +5681,8 @@ }, "node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { @@ -4784,13 +5704,27 @@ "ieee754": "^1.1.13" } }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, "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": "MIT" }, "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": { @@ -4802,12 +5736,15 @@ "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.0.0" } }, "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": { @@ -4819,6 +5756,7 @@ "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz", "integrity": "sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^2.0.0", @@ -4843,55 +5781,24 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/cacache/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/cacache/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, - "node_modules/cacache/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6" } }, "node_modules/call-bind-apply-helpers": { @@ -4899,6 +5806,7 @@ "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": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -4912,6 +5820,7 @@ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -4924,7 +5833,9 @@ } }, "node_modules/call-me-maybe": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", "dev": true, "license": "MIT" }, @@ -4933,12 +5844,15 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelcase": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "license": "MIT", "engines": { @@ -4946,9 +5860,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001705", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001705.tgz", - "integrity": "sha512-S0uyMMiYvA7CxNgomYBwwwPUnWzFD83f3B1ce5jHUfHTH//QL6hHsreI8RVC5606R4ssqravelYO5TU6t8sEyg==", + "version": "1.0.30001756", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001756.tgz", + "integrity": "sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==", "funding": [ { "type": "opencollective", @@ -4962,30 +5876,49 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/caseless": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "license": "Apache-2.0" }, "node_modules/chalk": { - "version": "2.4.2", - "dev": true, + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/chart.js": { "version": "3.9.1", @@ -5003,14 +5936,20 @@ "chart.js": ">=3.0.0" } }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/chokidar": { - "version": "3.5.3", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -5024,6 +5963,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -5033,29 +5975,51 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/chrome-trace-event": { - "version": "1.0.3", + "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", "engines": { "node": ">=6.0" } }, + "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", + "engines": { + "node": ">=8" + } + }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cli-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "license": "MIT", "dependencies": { @@ -5066,7 +6030,9 @@ } }, "node_modules/cli-spinners": { - "version": "2.7.0", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "license": "MIT", "engines": { @@ -5076,11 +6042,45 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, + "license": "ISC", "engines": { "node": ">= 10" } @@ -5089,6 +6089,7 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "license": "MIT", "dependencies": { "good-listener": "^1.2.2", "select": "^1.1.2", @@ -5096,19 +6097,20 @@ } }, "node_modules/cliui": { - "version": "8.0.1", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "license": "ISC", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", + "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" } }, "node_modules/clone": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "license": "MIT", "engines": { @@ -5117,6 +6119,8 @@ }, "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": { @@ -5130,6 +6134,8 @@ }, "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": "MIT", "dependencies": { @@ -5156,6 +6162,8 @@ }, "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", "peerDependencies": { @@ -5164,6 +6172,8 @@ }, "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": "MIT", "peerDependencies": { @@ -5177,6 +6187,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -5186,6 +6197,8 @@ }, "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": "BSD-3-Clause", "engines": { @@ -5194,25 +6207,34 @@ }, "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": "0BSD" }, "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": "MIT" }, "node_modules/color-convert": { - "version": "1.9.3", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "dev": true, + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, "node_modules/color-support": { @@ -5220,6 +6242,7 @@ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, + "license": "ISC", "bin": { "color-support": "bin.js" } @@ -5228,10 +6251,13 @@ "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "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": { @@ -5240,6 +6266,8 @@ }, "node_modules/combined-stream": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" @@ -5250,11 +6278,25 @@ }, "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/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/commondir": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true, "license": "MIT" }, @@ -5263,6 +6305,7 @@ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -5271,16 +6314,17 @@ } }, "node_modules/compression": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz", - "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", + "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": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", - "on-headers": "~1.0.2", + "on-headers": "~1.1.0", "safe-buffer": "5.2.1", "vary": "~1.1.2" }, @@ -5293,6 +6337,7 @@ "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" } @@ -5301,24 +6346,91 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "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, - "engines": { - "node": ">= 0.6" - } + "license": "MIT" }, "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/concurrently": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz", + "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==", + "license": "MIT", + "dependencies": { + "chalk": "4.1.2", + "rxjs": "7.8.2", + "shell-quote": "1.8.3", + "supports-color": "8.1.1", + "tree-kill": "1.2.2", + "yargs": "17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/concurrently/node_modules/rxjs": { + "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", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/concurrently/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/concurrently/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/config-chain": { "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5328,11 +6440,15 @@ }, "node_modules/config-chain/node_modules/ini": { "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, "license": "ISC" }, "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": { @@ -5350,12 +6466,15 @@ "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", "engines": { "node": ">=0.8" } }, "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": "MIT", "dependencies": { @@ -5364,6 +6483,8 @@ }, "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" }, @@ -5371,13 +6492,15 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true + "dev": true, + "license": "ISC" }, "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" }, @@ -5390,12 +6513,15 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "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": { @@ -5412,13 +6538,15 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true + "dev": true, + "license": "MIT" }, "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": { "is-what": "^3.14.1" }, @@ -5431,6 +6559,7 @@ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "dev": true, + "license": "MIT", "dependencies": { "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", @@ -5455,6 +6584,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -5463,10 +6593,11 @@ } }, "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "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": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -5482,7 +6613,9 @@ } }, "node_modules/core-js": { - "version": "3.20.3", + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz", + "integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -5492,12 +6625,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.41.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", - "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", + "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.24.4" + "browserslist": "^4.28.0" }, "funding": { "type": "opencollective", @@ -5506,6 +6640,8 @@ }, "node_modules/core-util-is": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "license": "MIT" }, "node_modules/cors": { @@ -5526,6 +6662,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", "dependencies": { "layout-base": "^1.0.0" } @@ -5535,6 +6672,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -5548,6 +6686,8 @@ }, "node_modules/critters": { "version": "0.0.16", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", + "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5559,80 +6699,19 @@ "pretty-bytes": "^5.3.0" } }, - "node_modules/critters/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/critters/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/critters/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/critters/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/critters/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/critters/node_modules/parse5": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true, "license": "MIT" }, - "node_modules/critters/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "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", @@ -5642,26 +6721,12 @@ "node": ">= 8" } }, - "node_modules/cross-spawn/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, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/css-blank-pseudo": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -5680,6 +6745,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -5693,6 +6759,7 @@ "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -5711,6 +6778,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -5724,6 +6792,7 @@ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.7", @@ -5750,6 +6819,7 @@ "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", "dev": true, + "license": "CC0-1.0", "bin": { "css-prefers-color-scheme": "dist/cli.cjs" }, @@ -5762,6 +6832,8 @@ }, "node_modules/css-select": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -5777,6 +6849,8 @@ }, "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", "dependencies": { @@ -5785,7 +6859,9 @@ } }, "node_modules/css-what": { - "version": "6.1.0", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -5797,6 +6873,8 @@ }, "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": { @@ -5817,10 +6895,13 @@ "type": "github", "url": "https://github.com/sponsors/csstools" } - ] + ], + "license": "CC0-1.0" }, "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": { @@ -5832,10 +6913,14 @@ }, "node_modules/cssom": { "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", "license": "MIT" }, "node_modules/cssstyle": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "license": "MIT", "dependencies": { "cssom": "~0.3.6" @@ -5846,17 +6931,91 @@ }, "node_modules/cssstyle/node_modules/cssom": { "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "license": "MIT" }, "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/cypress": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-14.1.0.tgz", + "integrity": "sha512-pPPj8Uu9NwjaaiXAEcjYZZmgsq6v9Zs1Nw6a+zRF+ANgYSNhH4S32SjFRsvMcuOHR/8dp4GBJhBPqIPSs+TxaA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@cypress/request": "^3.0.7", + "@cypress/xvfb": "^1.2.4", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.7.1", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "ci-info": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.3", + "tree-kill": "1.2.2", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + } + }, + "node_modules/cypress/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, "node_modules/cytoscape": { - "version": "3.31.2", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.31.2.tgz", - "integrity": "sha512-/eOXg2uGdMdpGlEes5Sf6zE+jUG+05f3htFNQIxLxduOH/SsaUZiPBfAwP1btVIVzsnhiNOdi+hvDRLYfMZjGw==", + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", + "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", + "license": "MIT", "engines": { "node": ">=0.10" } @@ -5865,6 +7024,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", "dependencies": { "cose-base": "^1.0.0" }, @@ -5876,6 +7036,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", "dependencies": { "cose-base": "^2.2.0" }, @@ -5887,6 +7048,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", "dependencies": { "layout-base": "^2.0.0" } @@ -5894,12 +7056,14 @@ "node_modules/cytoscape-fcose/node_modules/layout-base": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", - "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==" + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "license": "MIT" }, "node_modules/d3": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -5940,6 +7104,7 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", "dependencies": { "internmap": "1 - 2" }, @@ -5951,6 +7116,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -5959,6 +7125,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -5974,6 +7141,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", "dependencies": { "d3-path": "1 - 3" }, @@ -5985,6 +7153,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -5993,6 +7162,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", "dependencies": { "d3-array": "^3.2.0" }, @@ -6004,6 +7174,7 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", "dependencies": { "delaunator": "5" }, @@ -6015,6 +7186,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6023,6 +7195,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" @@ -6035,6 +7208,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", "dependencies": { "commander": "7", "iconv-lite": "0.6", @@ -6059,6 +7233,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", "engines": { "node": ">= 10" } @@ -6067,6 +7242,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -6078,6 +7254,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", "engines": { "node": ">=12" } @@ -6086,6 +7263,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", "dependencies": { "d3-dsv": "1 - 3" }, @@ -6097,6 +7275,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", @@ -6110,6 +7289,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6118,6 +7298,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", "dependencies": { "d3-array": "2.5.0 - 3" }, @@ -6129,6 +7310,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6137,6 +7319,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3" }, @@ -6148,6 +7331,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6156,6 +7340,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6164,6 +7349,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6172,6 +7358,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6180,6 +7367,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", @@ -6195,6 +7383,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" @@ -6207,6 +7396,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6215,6 +7405,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", "dependencies": { "d3-path": "^3.1.0" }, @@ -6226,6 +7417,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", "dependencies": { "d3-array": "2 - 3" }, @@ -6237,6 +7429,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", "dependencies": { "d3-time": "1 - 3" }, @@ -6248,6 +7441,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6256,6 +7450,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", @@ -6274,6 +7469,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -6289,6 +7485,7 @@ "version": "7.0.9", "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.9.tgz", "integrity": "sha512-rYR4QfVmy+sR44IBDvVtcAmOReGBvRCWDpO2QjYwqgh9yijw6eSHBqaPG/LIOEy7aBsniLvtMW6pg19qJhq60w==", + "license": "MIT", "dependencies": { "d3": "^7.8.2", "lodash-es": "^4.17.21" @@ -6296,11 +7493,15 @@ }, "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/dashdash": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" @@ -6311,6 +7512,8 @@ }, "node_modules/data-urls": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", "license": "MIT", "dependencies": { "abab": "^2.0.0", @@ -6320,6 +7523,8 @@ }, "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": { @@ -6327,14 +7532,16 @@ } }, "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "license": "MIT" }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -6349,6 +7556,8 @@ }, "node_modules/decamelize": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, "license": "MIT", "engines": { @@ -6357,6 +7566,8 @@ }, "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==", "license": "MIT" }, "node_modules/default-gateway": { @@ -6364,6 +7575,7 @@ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "execa": "^5.0.0" }, @@ -6371,8 +7583,57 @@ "node": ">= 10" } }, + "node_modules/default-gateway/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/defaults": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "license": "MIT", "dependencies": { @@ -6382,8 +7643,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "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" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, "license": "MIT", "engines": { @@ -6391,10 +7672,13 @@ } }, "node_modules/define-properties": { - "version": "1.1.4", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "license": "MIT", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -6407,6 +7691,8 @@ }, "node_modules/del": { "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6422,19 +7708,43 @@ "node": ">=0.10.0" } }, - "node_modules/del/node_modules/array-union": { - "version": "1.0.2", + "node_modules/del/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", "dependencies": { - "array-uniq": "^1.0.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/del/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/del/node_modules/globby": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6449,16 +7759,24 @@ "node": ">=0.10.0" } }, - "node_modules/del/node_modules/pify": { - "version": "2.3.0", + "node_modules/del/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": "MIT", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, "node_modules/del/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": { @@ -6472,12 +7790,15 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", "dependencies": { "robust-predicates": "^3.0.2" } }, "node_modules/delayed-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "license": "MIT", "engines": { "node": ">=0.4.0" @@ -6486,16 +7807,20 @@ "node_modules/delegate": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "license": "MIT" }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "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", "engines": { @@ -6504,6 +7829,8 @@ }, "node_modules/dependency-graph": { "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "license": "MIT", "engines": { "node": ">= 0.6.0" @@ -6511,6 +7838,8 @@ }, "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": { @@ -6520,16 +7849,22 @@ }, "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/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": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -6541,6 +7876,7 @@ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -6553,6 +7889,7 @@ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, + "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -6562,6 +7899,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", "dependencies": { @@ -6573,6 +7912,8 @@ }, "node_modules/dom-serializer": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "license": "MIT", "dependencies": { @@ -6586,6 +7927,8 @@ }, "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, "funding": [ { @@ -6597,6 +7940,9 @@ }, "node_modules/domexception": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "deprecated": "Use your platform's native DOMException instead", "license": "MIT", "dependencies": { "webidl-conversions": "^4.0.2" @@ -6604,6 +7950,8 @@ }, "node_modules/domhandler": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -6619,10 +7967,13 @@ "node_modules/dompurify": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz", - "integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==" + "integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==", + "license": "(MPL-2.0 OR Apache-2.0)" }, "node_modules/domutils": { "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -6631,7 +7982,19 @@ "domhandler": "^4.2.0" }, "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dotenv": { + "version": "17.2.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", + "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, "node_modules/dunder-proto": { @@ -6639,6 +8002,7 @@ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -6650,6 +8014,8 @@ }, "node_modules/ecc-jsbn": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "license": "MIT", "dependencies": { "jsbn": "~0.1.0", @@ -6658,29 +8024,39 @@ }, "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.119", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.119.tgz", - "integrity": "sha512-Ku4NMzUjz3e3Vweh7PhApPrZSS4fyiCIbcIrG9eKrriYVLmbMepETR/v6SU7xPm98QTqMSYiCwfO89QNjXLkbQ==" + "version": "1.5.256", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.256.tgz", + "integrity": "sha512-uqYq1IQhpXXLX+HgiXdyOZml7spy4xfy42yPxcCCRjswp0fYM2X+JwCON07lqnpLEGVCj739B7Yr+FngmHBMEQ==", + "license": "ISC" }, "node_modules/elkjs": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz", - "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==" + "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==", + "license": "EPL-2.0" }, "node_modules/emoji-regex": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, "node_modules/emoji-toolkit": { "version": "6.6.0", + "resolved": "https://registry.npmjs.org/emoji-toolkit/-/emoji-toolkit-6.6.0.tgz", + "integrity": "sha512-pEu0kow2p1N8zCKnn/L6H0F3rWUBB3P3hVjr/O5yl1fK7N9jU4vO4G7EFapC5Y3XwZLUCY0FZbOPyTkH+4V2eQ==", "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": { @@ -6689,6 +8065,8 @@ }, "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": { @@ -6700,6 +8078,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -6710,6 +8089,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -6718,6 +8098,16 @@ "node": ">=0.10.0" } }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/engine.io": { "version": "6.6.4", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", @@ -6772,7 +8162,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.10.0", + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", "dev": true, "license": "MIT", "dependencies": { @@ -6783,13 +8175,40 @@ "node": ">=10.13.0" } }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/ent": { - "version": "2.2.0", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.2.tgz", + "integrity": "sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==", "dev": true, - "license": "MIT" + "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": ">= 0.4" + } }, "node_modules/entities": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, "license": "BSD-2-Clause", "funding": { @@ -6801,6 +8220,7 @@ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6819,13 +8239,15 @@ "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 + "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, "dependencies": { "prr": "~1.0.1" @@ -6835,10 +8257,11 @@ } }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -6848,89 +8271,406 @@ "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": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true, + "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": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/esbuild": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", + "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/linux-loong64": "0.15.5", + "esbuild-android-64": "0.15.5", + "esbuild-android-arm64": "0.15.5", + "esbuild-darwin-64": "0.15.5", + "esbuild-darwin-arm64": "0.15.5", + "esbuild-freebsd-64": "0.15.5", + "esbuild-freebsd-arm64": "0.15.5", + "esbuild-linux-32": "0.15.5", + "esbuild-linux-64": "0.15.5", + "esbuild-linux-arm": "0.15.5", + "esbuild-linux-arm64": "0.15.5", + "esbuild-linux-mips64le": "0.15.5", + "esbuild-linux-ppc64le": "0.15.5", + "esbuild-linux-riscv64": "0.15.5", + "esbuild-linux-s390x": "0.15.5", + "esbuild-netbsd-64": "0.15.5", + "esbuild-openbsd-64": "0.15.5", + "esbuild-sunos-64": "0.15.5", + "esbuild-windows-32": "0.15.5", + "esbuild-windows-64": "0.15.5", + "esbuild-windows-arm64": "0.15.5" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", + "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", + "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", + "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", + "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", + "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", + "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", + "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", + "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", + "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", + "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "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==", + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", + "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", + "cpu": [ + "mips64el" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/es-module-lexer": { - "version": "0.9.3", + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", + "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", + "cpu": [ + "ppc64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } }, - "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==", + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", + "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "es-errors": "^1.3.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/es6-error": { - "version": "4.1.1", + "node_modules/esbuild-linux-s390x": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", + "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", + "cpu": [ + "s390x" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/es6-promise": { - "version": "4.2.8", + "node_modules/esbuild-netbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", + "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/es6-promisify": { - "version": "5.0.0", + "node_modules/esbuild-openbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", + "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "es6-promise": "^4.0.3" + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/esbuild": { + "node_modules/esbuild-sunos-64": { "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", - "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", + "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", + "cpu": [ + "x64" + ], "dev": true, - "hasInstallScript": true, + "license": "MIT", "optional": true, - "bin": { - "esbuild": "bin/esbuild" - }, + "os": [ + "sunos" + ], "engines": { "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/linux-loong64": "0.15.5", - "esbuild-android-64": "0.15.5", - "esbuild-android-arm64": "0.15.5", - "esbuild-darwin-64": "0.15.5", - "esbuild-darwin-arm64": "0.15.5", - "esbuild-freebsd-64": "0.15.5", - "esbuild-freebsd-arm64": "0.15.5", - "esbuild-linux-32": "0.15.5", - "esbuild-linux-64": "0.15.5", - "esbuild-linux-arm": "0.15.5", - "esbuild-linux-arm64": "0.15.5", - "esbuild-linux-mips64le": "0.15.5", - "esbuild-linux-ppc64le": "0.15.5", - "esbuild-linux-riscv64": "0.15.5", - "esbuild-linux-s390x": "0.15.5", - "esbuild-netbsd-64": "0.15.5", - "esbuild-openbsd-64": "0.15.5", - "esbuild-sunos-64": "0.15.5", - "esbuild-windows-32": "0.15.5", - "esbuild-windows-64": "0.15.5", - "esbuild-windows-arm64": "0.15.5" } }, "node_modules/esbuild-wasm": { @@ -6938,6 +8678,7 @@ "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz", "integrity": "sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A==", "dev": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -6945,6 +8686,23 @@ "node": ">=12" } }, + "node_modules/esbuild-windows-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", + "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/esbuild-windows-64": { "version": "0.15.5", "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", @@ -6953,6 +8711,24 @@ "x64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", + "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -6965,17 +8741,22 @@ "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" } }, "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": "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": { @@ -6984,6 +8765,8 @@ }, "node_modules/escodegen": { "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", @@ -7004,6 +8787,8 @@ }, "node_modules/escodegen/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==", "license": "BSD-3-Clause", "optional": true, "engines": { @@ -7012,6 +8797,8 @@ }, "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": "BSD-2-Clause", "dependencies": { @@ -7024,6 +8811,8 @@ }, "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==", "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", @@ -7035,6 +8824,8 @@ }, "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": { @@ -7046,6 +8837,8 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "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": { @@ -7054,6 +8847,8 @@ }, "node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -7061,6 +8856,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==", "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" @@ -7071,22 +8868,36 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/eventemitter-asyncresource": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", "dev": true, "license": "MIT" }, "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": { @@ -7094,19 +8905,20 @@ } }, "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", "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", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", "strip-final-newline": "^2.0.0" }, "engines": { @@ -7116,24 +8928,41 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/exit": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" } }, "node_modules/exponential-backoff": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", - "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", - "dev": true + "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", "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", @@ -7180,6 +9009,7 @@ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7189,6 +9019,7 @@ "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" } @@ -7198,6 +9029,7 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7207,6 +9039,7 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", @@ -7224,19 +9057,39 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/express/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": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/express/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/extend": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "license": "MIT" }, "node_modules/external-editor": { @@ -7244,6 +9097,7 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, + "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -7253,8 +9107,44 @@ "node": ">=4" } }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, "node_modules/extsprintf": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "engines": [ "node >=0.6.0" ], @@ -7262,6 +9152,8 @@ }, "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==", "license": "MIT" }, "node_modules/fast-glob": { @@ -7269,6 +9161,7 @@ "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", @@ -7282,14 +9175,20 @@ }, "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==", "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==", "license": "MIT" }, "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" }, @@ -7298,6 +9197,7 @@ "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" } @@ -7307,6 +9207,7 @@ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -7314,11 +9215,22 @@ "node": ">=0.8.0" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -7333,6 +9245,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -7342,6 +9255,8 @@ }, "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": { @@ -7359,6 +9274,8 @@ }, "node_modules/finalhandler/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": { @@ -7367,11 +9284,15 @@ }, "node_modules/finalhandler/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/finalhandler/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": { @@ -7383,6 +9304,8 @@ }, "node_modules/find-cache-dir": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "license": "MIT", "dependencies": { @@ -7399,6 +9322,8 @@ }, "node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { @@ -7410,14 +9335,16 @@ } }, "node_modules/flatted": { - "version": "3.2.7", + "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", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "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": [ { @@ -7437,25 +9364,34 @@ }, "node_modules/forever-agent": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/form-data": { - "version": "2.3.3", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.12" + "node": ">= 6" } }, "node_modules/format-util": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/format-util/-/format-util-1.0.5.tgz", + "integrity": "sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==", "dev": true, "license": "MIT" }, @@ -7464,20 +9400,22 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "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==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" }, "funding": { - "type": "patreon", + "type": "github", "url": "https://github.com/sponsors/rawify" } }, @@ -7486,21 +9424,25 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/fs-extra": { - "version": "8.1.0", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { + "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=10" } }, "node_modules/fs-minipass": { @@ -7508,6 +9450,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -7516,20 +9459,38 @@ } }, "node_modules/fs-monkey": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", - "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "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==", "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==", + "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" } @@ -7540,6 +9501,7 @@ "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -7556,6 +9518,8 @@ }, "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" @@ -7563,6 +9527,8 @@ }, "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.*" @@ -7573,6 +9539,7 @@ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -7594,6 +9561,8 @@ }, "node_modules/get-package-type": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "license": "MIT", "engines": { @@ -7605,6 +9574,7 @@ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, + "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -7614,38 +9584,68 @@ } }, "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-tsconfig": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.0" + } + }, "node_modules/getpass": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" } }, "node_modules/glob": { - "version": "7.2.0", - "dev": true, + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7653,6 +9653,8 @@ }, "node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -7663,11 +9665,15 @@ }, "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/global-agent": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.2.0.tgz", + "integrity": "sha512-+20KpaW6DDLqhG7JDiJpD1JvNvb8ts+TNl7BPOYcURqCrXqnN1Vf+XVOrkKJAFPqfX+oEhsdzOj1hLWkBTdNJg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -7683,8 +9689,36 @@ "node": ">=10.0" } }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/global-tunnel-ng": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -7697,19 +9731,15 @@ "node": ">=0.10" } }, - "node_modules/globals": { - "version": "11.12.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/globalthis": { - "version": "1.0.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -7723,6 +9753,7 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, + "license": "MIT", "dependencies": { "dir-glob": "^3.0.1", "fast-glob": "^3.3.0", @@ -7741,6 +9772,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "license": "MIT", "dependencies": { "delegate": "^3.1.2" } @@ -7750,6 +9782,7 @@ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7758,7 +9791,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", + "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" }, @@ -7766,7 +9801,8 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/handlebars": { "version": "4.7.8", @@ -7802,6 +9838,8 @@ }, "node_modules/har-schema": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "license": "ISC", "engines": { "node": ">=4" @@ -7809,6 +9847,9 @@ }, "node_modules/har-validator": { "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "license": "MIT", "dependencies": { "ajv": "^6.12.3", @@ -7820,6 +9861,8 @@ }, "node_modules/har-validator/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -7834,21 +9877,14 @@ }, "node_modules/har-validator/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==", "license": "MIT" }, - "node_modules/has": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-ansi": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "dev": true, "license": "MIT", "dependencies": { @@ -7860,6 +9896,8 @@ }, "node_modules/has-ansi/node_modules/ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, "license": "MIT", "engines": { @@ -7867,19 +9905,22 @@ } }, "node_modules/has-flag": { - "version": "3.0.0", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7890,6 +9931,23 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "has-symbols": "^1.0.3" + }, "engines": { "node": ">= 0.4" }, @@ -7901,13 +9959,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "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" }, @@ -7917,6 +9977,8 @@ }, "node_modules/hdr-histogram-js": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", "dev": true, "license": "BSD", "dependencies": { @@ -7927,6 +9989,8 @@ }, "node_modules/hdr-histogram-percentiles-obj": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", "dev": true, "license": "MIT" }, @@ -7935,6 +9999,7 @@ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -7947,6 +10012,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -7956,6 +10022,7 @@ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -7968,6 +10035,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -7982,28 +10050,32 @@ "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 + "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-encoding-sniffer": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "license": "MIT", "dependencies": { "whatwg-encoding": "^1.0.1" } }, "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", "dev": true, "funding": [ { @@ -8014,27 +10086,34 @@ "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/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true + "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 + "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": { @@ -8050,6 +10129,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": { @@ -8057,13 +10138,16 @@ } }, "node_modules/http-parser-js": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.9.tgz", - "integrity": "sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==", - "dev": true + "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": { @@ -8080,6 +10164,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -8115,16 +10200,18 @@ } }, "node_modules/http-signature": { - "version": "1.2.0", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", + "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", + "dev": true, "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "jsprim": "^2.0.2", + "sshpk": "^1.18.0" }, "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" + "node": ">=0.10" } }, "node_modules/https-proxy-agent": { @@ -8132,6 +10219,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -8141,12 +10229,13 @@ } }, "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=10.17.0" + "node": ">=8.12.0" } }, "node_modules/humanize-ms": { @@ -8154,12 +10243,15 @@ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.0.0" } }, "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==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" @@ -8173,6 +10265,7 @@ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -8182,6 +10275,8 @@ }, "node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, "funding": [ { @@ -8204,6 +10299,7 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -8213,6 +10309,7 @@ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", "dev": true, + "license": "ISC", "dependencies": { "minimatch": "^5.0.1" }, @@ -8220,33 +10317,12 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/ignore-walk/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "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, "bin": { "image-size": "bin/image-size.js" @@ -8257,6 +10333,8 @@ }, "node_modules/immediate": { "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true, "license": "MIT" }, @@ -8264,13 +10342,15 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", - "dev": true + "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": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -8287,6 +10367,7 @@ "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": ">=4" } @@ -8296,6 +10377,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -8305,6 +10387,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8313,10 +10396,14 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true + "dev": true, + "license": "ISC" }, "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.", "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -8325,6 +10412,8 @@ }, "node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, "node_modules/ini": { @@ -8332,6 +10421,7 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz", "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==", "dev": true, + "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } @@ -8341,6 +10431,7 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -8359,65 +10450,7 @@ "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/inquirer/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, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/inquirer/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, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/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, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/inquirer/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 - }, - "node_modules/inquirer/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, - "engines": { - "node": ">=8" + "node": ">=12.0.0" } }, "node_modules/inquirer/node_modules/rxjs": { @@ -8425,57 +10458,41 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, - "node_modules/inquirer/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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/inquirer/node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/internmap": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, + "license": "MIT", "engines": { "node": ">= 12" } }, - "node_modules/ip-address/node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true - }, "node_modules/ip-regex": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", "license": "MIT", "engines": { "node": ">=4" @@ -8486,6 +10503,7 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -8494,10 +10512,13 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "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==", "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -8507,11 +10528,16 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", + "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": { - "has": "^1.0.3" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8519,6 +10545,8 @@ }, "node_modules/is-docker": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, "license": "MIT", "bin": { @@ -8533,6 +10561,8 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8540,6 +10570,8 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", "engines": { "node": ">=8" @@ -8547,6 +10579,8 @@ }, "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==", "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -8555,8 +10589,27 @@ "node": ">=0.10.0" } }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-interactive": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, "license": "MIT", "engines": { @@ -8567,18 +10620,22 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "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==", + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-path-cwd": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==", "dev": true, "license": "MIT", "engines": { @@ -8587,6 +10644,8 @@ }, "node_modules/is-path-in-cwd": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8596,8 +10655,10 @@ "node": ">=0.10.0" } }, - "node_modules/is-path-inside": { + "node_modules/is-path-in-cwd/node_modules/is-path-inside": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", "dev": true, "license": "MIT", "dependencies": { @@ -8607,11 +10668,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "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": { "node": ">=10" }, @@ -8621,6 +10693,8 @@ }, "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": { @@ -8630,11 +10704,31 @@ "node": ">=0.10.0" } }, + "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": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -8644,10 +10738,14 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "license": "MIT" }, "node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", "engines": { @@ -8661,10 +10759,13 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "license": "MIT", "dependencies": { @@ -8676,11 +10777,15 @@ }, "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": { @@ -8692,11 +10797,15 @@ }, "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": { @@ -8705,10 +10814,14 @@ }, "node_modules/isstream": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "license": "MIT" }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", + "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": { @@ -8717,6 +10830,8 @@ }, "node_modules/istanbul-lib-instrument": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -8735,33 +10850,46 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", + "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": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { + "node_modules/istanbul-lib-report/node_modules/make-dir": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/istanbul-lib-report/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": { @@ -8773,6 +10901,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": { @@ -8786,8 +10916,43 @@ "node": ">=6" } }, + "node_modules/istanbul-lib-source-maps/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", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/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": { @@ -8796,6 +10961,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": { @@ -8806,8 +10973,23 @@ "node": ">=6" } }, + "node_modules/istanbul-lib-source-maps/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" + }, + "engines": { + "node": "*" + } + }, "node_modules/istanbul-lib-source-maps/node_modules/pify": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, "license": "MIT", "engines": { @@ -8816,6 +10998,9 @@ }, "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": { @@ -8830,12 +11015,15 @@ "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/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": { @@ -8843,7 +11031,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.5", + "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": { @@ -8856,6 +11046,8 @@ }, "node_modules/jasmine": { "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==", "dev": true, "license": "MIT", "dependencies": { @@ -8869,24 +11061,78 @@ }, "node_modules/jasmine-core": { "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.5.0.tgz", + "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==", "dev": true, "license": "MIT" }, "node_modules/jasmine-spec-reporter": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.2.tgz", + "integrity": "sha512-6gP1LbVgJ+d7PKksQBc2H0oDGNRQI3gKUsWlswKaQ2fif9X5gzhQcgM5+kiJGCQVurOG09jqNhk7payggyp5+g==", "dev": true, "license": "Apache-2.0", "dependencies": { "colors": "1.4.0" } }, + "node_modules/jasmine/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", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jasmine/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/jasmine/node_modules/jasmine-core": { "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ==", "dev": true, "license": "MIT" }, + "node_modules/jasmine/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" + }, + "engines": { + "node": "*" + } + }, "node_modules/jasminewd2": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==", "dev": true, "license": "MIT", "engines": { @@ -8896,10 +11142,13 @@ "node_modules/javascript-natural-sort": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==" + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "license": "MIT" }, "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": { @@ -8911,48 +11160,51 @@ "node": ">= 10.13.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">= 0.6.0" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/joi": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-18.0.2.tgz", + "integrity": "sha512-RuCOQMIt78LWnktPoeBL0GErkNaJPTBGcYuyaBvUOQSpcpcLfWrHPPihYdOGbV5pam9VTWbeoF7TsGiHugcjGA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@hapi/address": "^5.1.1", + "@hapi/formula": "^3.0.2", + "@hapi/hoek": "^11.0.7", + "@hapi/pinpoint": "^2.0.1", + "@hapi/tlds": "^1.1.1", + "@hapi/topo": "^6.0.2", + "@standard-schema/spec": "^1.0.0" }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jmespath": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", - "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", "engines": { - "node": ">= 0.6.0" + "node": ">= 20" } }, "node_modules/jquery": { - "version": "3.6.1", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", "license": "MIT", "peer": true }, "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==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -8965,10 +11217,14 @@ }, "node_modules/jsbn": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "license": "MIT" }, "node_modules/jsdom": { "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", "license": "MIT", "dependencies": { "abab": "^2.0.0", @@ -9012,10 +11268,37 @@ }, "node_modules/jsdom/node_modules/parse5": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", "license": "MIT" }, + "node_modules/jsdom/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/jsdom/node_modules/tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "license": "BSD-3-Clause", + "dependencies": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jsesc": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -9028,14 +11311,20 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/json-schema": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-ref-parser": { "version": "5.1.3", + "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-5.1.3.tgz", + "integrity": "sha512-CpDFlBwz/6la78hZxyB9FECVKGYjIIl3Ms3KLqFj99W7IIb7D00/RDgc++IGB4BBALl0QRhh5m4q5WNSopvLtQ==", + "deprecated": "Please switch to @apidevtools/json-schema-ref-parser", "dev": true, "license": "MIT", "dependencies": { @@ -9047,6 +11336,8 @@ }, "node_modules/json-schema-ref-parser/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9057,21 +11348,26 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/json-source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz", - "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==" + "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==", + "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "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" }, @@ -9083,12 +11379,14 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsoneditor": { "version": "9.10.0", "resolved": "https://registry.npmjs.org/jsoneditor/-/jsoneditor-9.10.0.tgz", "integrity": "sha512-vmVSD3ubZ8jwkiDKVW5MB5ESI/MUm4trVUw5WnT4j5FV6m81liA2YfQ0l84PlN4qJ3DCeYWFWfprOUoCjzkDhQ==", + "license": "Apache-2.0", "dependencies": { "ace-builds": "^1.15.2", "ajv": "^6.12.6", @@ -9105,6 +11403,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -9119,12 +11418,18 @@ "node_modules/jsoneditor/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==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" }, "node_modules/jsonfile": { - "version": "4.0.0", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -9136,31 +11441,38 @@ "dev": true, "engines": [ "node >= 0.2.0" - ] + ], + "license": "MIT" }, "node_modules/jsonrepair": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonrepair/-/jsonrepair-3.1.0.tgz", - "integrity": "sha512-idqReg23J0PVRAADmZMc5xQM3xeOX5bTB6OTyMnzq33IXJXmn9iJuWIEvGmrN80rQf4d7uLTMEDwpzujNcI0Rg==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/jsonrepair/-/jsonrepair-3.13.1.tgz", + "integrity": "sha512-WJeiE0jGfxYmtLwBTEk8+y/mYcaleyLXWaqp5bJu0/ZTSeG0KQq/wWQ8pmnkKenEdN6pdnn6QtcoSUkbqDHWNw==", + "license": "ISC", "bin": { "jsonrepair": "bin/cli.js" } }, "node_modules/jsprim": { - "version": "1.4.2", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], "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", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dev": true, "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { @@ -9171,7 +11483,9 @@ } }, "node_modules/jszip/node_modules/readable-stream": { - "version": "2.3.7", + "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": { @@ -9186,11 +11500,15 @@ }, "node_modules/jszip/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/jszip/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": { @@ -9199,10 +11517,14 @@ }, "node_modules/jwt-decode": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz", + "integrity": "sha512-86GgN2vzfUu7m9Wcj63iUkuDzFNYFVmjeDm2GzWpUk+opB0pEpMsw6ePCMrhYkumz2C1ihqtZzOMAg7FiXcNoQ==", "license": "MIT" }, "node_modules/karma": { - "version": "6.4.1", + "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", "dependencies": { @@ -9225,7 +11547,7 @@ "qjobs": "^1.2.0", "range-parser": "^1.2.1", "rimraf": "^3.0.2", - "socket.io": "^4.4.1", + "socket.io": "^4.7.2", "source-map": "^0.6.1", "tmp": "^0.2.1", "ua-parser-js": "^0.7.30", @@ -9240,14 +11562,31 @@ }, "node_modules/karma-chrome-launcher": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", "dev": true, "license": "MIT", "dependencies": { - "which": "^1.2.1" + "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": { @@ -9261,8 +11600,34 @@ "url": "https://github.com/sponsors/mattlewis92" } }, + "node_modules/karma-coverage-istanbul-reporter/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", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/karma-coverage-istanbul-reporter/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" + }, + "engines": { + "node": "*" + } + }, "node_modules/karma-jasmine": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.2.tgz", + "integrity": "sha512-ggi84RMNQffSDmWSyyt4zxzh2CQGwsxvYYsprgyR1j8ikzIduEdOlcLvXjZGwXG/0j41KUXOWsUCBfbEHPWP9g==", "dev": true, "license": "MIT", "dependencies": { @@ -9277,6 +11642,8 @@ }, "node_modules/karma-jasmine-html-reporter": { "version": "1.5.4", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", + "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", "dev": true, "license": "MIT", "peerDependencies": { @@ -9287,29 +11654,71 @@ }, "node_modules/karma-jasmine/node_modules/jasmine-core": { "version": "3.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz", + "integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==", "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/cliui": { - "version": "7.0.4", + "node_modules/karma/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", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/karma/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/karma/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" + }, + "engines": { + "node": "*" } }, "node_modules/karma/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": { @@ -9321,25 +11730,18 @@ }, "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": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/karma/node_modules/tmp": { - "version": "0.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, "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": { @@ -9357,6 +11759,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": { @@ -9364,13 +11768,14 @@ } }, "node_modules/katex": { - "version": "0.16.21", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.21.tgz", - "integrity": "sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==", + "version": "0.16.25", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.25.tgz", + "integrity": "sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" ], + "license": "MIT", "dependencies": { "commander": "^8.3.0" }, @@ -9382,6 +11787,7 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", "engines": { "node": ">= 12" } @@ -9393,6 +11799,8 @@ }, "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": { @@ -9404,6 +11812,7 @@ "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -9411,13 +11820,25 @@ "node_modules/layout-base": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", - "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "license": "MIT" + }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "> 0.8" + } }, "node_modules/less": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -9444,6 +11865,7 @@ "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.0.0.tgz", "integrity": "sha512-9+LOWWjuoectIEx3zrfN83NAGxSUB5pWEabbbidVQVgZhN+wN68pOvuyirVlH1IK4VT1f3TmlyvAnCXh8O5KEw==", "dev": true, + "license": "MIT", "dependencies": { "klona": "^2.0.4" }, @@ -9464,6 +11886,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "pify": "^4.0.1", @@ -9478,6 +11901,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "optional": true, "bin": { "mime": "cli.js" @@ -9491,6 +11915,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -9501,6 +11926,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "optional": true, "bin": { "semver": "bin/semver" @@ -9511,6 +11937,7 @@ "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, "engines": { "node": ">=0.10.0" @@ -9520,10 +11947,13 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/levn": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2", @@ -9535,6 +11965,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": { @@ -9551,6 +11983,8 @@ }, "node_modules/lie": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9561,14 +11995,66 @@ "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 + "dev": true, + "license": "MIT" + }, + "node_modules/listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/listr2/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, "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": { @@ -9576,12 +12062,15 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.13.0" } }, "node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { @@ -9593,6 +12082,8 @@ }, "node_modules/lodash": { "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, "node_modules/lodash-es": { @@ -9605,14 +12096,26 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.sortby": { "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "license": "MIT", "dependencies": { @@ -9626,72 +12129,62 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/log-update/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": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { "node": ">=8" } }, "node_modules/log4js": { - "version": "6.7.0", + "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": { @@ -9699,28 +12192,26 @@ "debug": "^4.3.4", "flatted": "^3.2.7", "rfdc": "^1.3.0", - "streamroller": "^3.1.3" + "streamroller": "^3.1.5" }, "engines": { "node": ">=8.0" } }, "node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, + "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": "^4.0.0" - }, - "engines": { - "node": ">=10" + "yallist": "^3.0.2" } }, "node_modules/magic-string": { "version": "0.26.2", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", - "dev": true, + "license": "MIT", "dependencies": { "sourcemap-codec": "^1.4.8" }, @@ -9730,6 +12221,8 @@ }, "node_modules/make-dir": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "license": "MIT", "dependencies": { @@ -9747,12 +12240,15 @@ "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/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" }, @@ -9761,6 +12257,7 @@ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, + "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^16.1.0", @@ -9788,14 +12285,16 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/marked": { - "version": "15.0.8", - "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.8.tgz", - "integrity": "sha512-rli4l2LyZqpQuRve5C0rkn6pj3hT8EWPC+zkAxFTAJLxRbENfTAhEQq9itrmf1Y81QtAX5D/MYlGlIomNgj9lA==", + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", + "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", + "license": "MIT", "bin": { "marked": "bin/marked.js" }, @@ -9805,6 +12304,8 @@ }, "node_modules/matcher": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", "dev": true, "license": "MIT", "dependencies": { @@ -9816,6 +12317,8 @@ }, "node_modules/matcher/node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", "engines": { @@ -9830,12 +12333,15 @@ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "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": { @@ -9847,6 +12353,7 @@ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, + "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.4" }, @@ -9859,12 +12366,15 @@ "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/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" }, @@ -9873,6 +12383,7 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -9881,6 +12392,7 @@ "version": "9.4.3", "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.4.3.tgz", "integrity": "sha512-TLkQEtqhRSuEHSE34lh5bCa94KATCyluAXmFnNI2PRZwOpXFeqiJWwZl+d2CcemE1RS6QbbueSSq9QIg8Uxcyw==", + "license": "MIT", "dependencies": { "@braintree/sanitize-url": "^6.0.0", "cytoscape": "^3.23.0", @@ -9908,6 +12420,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -9917,6 +12430,7 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -9926,6 +12440,7 @@ "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", "picomatch": "^2.3.1" @@ -9936,6 +12451,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": { @@ -9947,6 +12464,8 @@ }, "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==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -9954,6 +12473,8 @@ }, "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==", "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -9964,6 +12485,8 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", "engines": { @@ -9975,6 +12498,7 @@ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", "dev": true, + "license": "MIT", "dependencies": { "schema-utils": "^4.0.0" }, @@ -9990,10 +12514,11 @@ } }, "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "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": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -10012,21 +12537,25 @@ "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 + "dev": true, + "license": "ISC" }, "node_modules/minimatch": { - "version": "3.0.5", - "dev": true, + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=10" } }, "node_modules/minimist": { - "version": "1.2.7", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", "funding": { @@ -10038,6 +12567,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -10050,6 +12580,7 @@ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -10062,6 +12593,7 @@ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^3.1.6", "minipass-sized": "^1.0.3", @@ -10079,6 +12611,7 @@ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -10091,6 +12624,7 @@ "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz", "integrity": "sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==", "dev": true, + "license": "MIT", "dependencies": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" @@ -10101,6 +12635,7 @@ "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": { "minipass": "^3.0.0" }, @@ -10113,6 +12648,7 @@ "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -10120,11 +12656,19 @@ "node": ">=8" } }, + "node_modules/minipass/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", "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" @@ -10133,11 +12677,19 @@ "node": ">= 8" } }, + "node_modules/minizlib/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/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": { "mkdirp": "bin/cmd.js" }, @@ -10148,7 +12700,8 @@ "node_modules/mobius1-selectr": { "version": "2.4.13", "resolved": "https://registry.npmjs.org/mobius1-selectr/-/mobius1-selectr-2.4.13.tgz", - "integrity": "sha512-Mk9qDrvU44UUL0EBhbAA1phfQZ7aMZPjwtL7wkpiBzGh8dETGqfsh50mWoX9EkjDlkONlErWXArHCKfoxVg0Bw==" + "integrity": "sha512-Mk9qDrvU44UUL0EBhbAA1phfQZ7aMZPjwtL7wkpiBzGh8dETGqfsh50mWoX9EkjDlkONlErWXArHCKfoxVg0Bw==", + "license": "MIT" }, "node_modules/moment": { "version": "2.30.1", @@ -10161,6 +12714,8 @@ }, "node_modules/ms": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "license": "MIT" }, "node_modules/multicast-dns": { @@ -10168,6 +12723,7 @@ "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": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -10178,6 +12734,8 @@ }, "node_modules/mustache": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.3.2.tgz", + "integrity": "sha512-KpMNwdQsYz3O/SBS1qJ/o3sqUJ5wSb8gb0pul8CO0S56b9Y2ALm8zCfsjPXsqGFfoNBkDwZuZIAjhsZI03gYVQ==", "dev": true, "license": "MIT", "bin": { @@ -10191,12 +12749,13 @@ "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/nanoid": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.10.tgz", - "integrity": "sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -10204,6 +12763,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -10222,6 +12782,7 @@ "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.3", @@ -10239,6 +12800,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -10248,7 +12810,9 @@ } }, "node_modules/negotiator": { - "version": "0.6.3", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, "license": "MIT", "engines": { @@ -10257,6 +12821,8 @@ }, "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" }, @@ -10313,24 +12879,11 @@ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ng-openapi-gen/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" + "bin": { + "jsesc": "bin/jsesc" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=6" } }, "node_modules/ng-openapi-gen/node_modules/typescript": { @@ -10347,18 +12900,10 @@ "node": ">=14.17" } }, - "node_modules/ng-openapi-gen/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/ng-swagger-gen": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/ng-swagger-gen/-/ng-swagger-gen-2.3.1.tgz", + "integrity": "sha512-PJ3nSP0Mpl2vaL7qdkFCF0UDkudk0M2FKNSNMw0le7sbCE4Jft7+s7cMFMDiuxxHEZ7q+w5BDbuUX2ItDDtecA==", "dev": true, "license": "MIT", "dependencies": { @@ -10425,6 +12970,7 @@ "version": "14.0.1", "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-14.0.1.tgz", "integrity": "sha512-y5CY4e0QM0uR6+MvU1rnh1Ks+rku14309kVVojyXLcWl4zlrt8VAYCcf/+A+8z/IDOaz38yTrxNBnvYDJzNzYA==", + "license": "MIT", "dependencies": { "@types/marked": "^4.0.3", "clipboard": "^2.0.11", @@ -10447,6 +12993,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "license": "MIT", "bin": { "marked": "bin/marked.js" }, @@ -10455,13 +13002,16 @@ } }, "node_modules/ngx-markdown/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/ngx-progressbar": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/ngx-progressbar/-/ngx-progressbar-9.0.0.tgz", "integrity": "sha512-QaDxKY3KNlOdzPgdVzoUZVemZIM4YHmn3XrzbyQHWUaD1Gd6fr3BOJ+tTMKEfrJzjFQte/lszAKCaTrHY0g95w==", + "license": "MIT", "dependencies": { "tslib": "^2.0.0" }, @@ -10476,6 +13026,7 @@ "version": "15.2.2", "resolved": "https://registry.npmjs.org/ngx-toastr/-/ngx-toastr-15.2.2.tgz", "integrity": "sha512-srdxKKf1+B/7z11M4Ty7bnkme2xjdUcnP/t7mNG/2gRM1h0P/7Lbz71FIQHuKZOCdnGdXjsT6OXU0dRvNyrkyg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -10486,14 +13037,41 @@ } }, "node_modules/ngx-toastr/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, + "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, + "license": "MIT", + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "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": { "node": ">= 6.13.0" } @@ -10503,6 +13081,7 @@ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -10523,36 +13102,83 @@ "node": "^12.13 || ^14.13 || >=16" } }, - "node_modules/node-gyp/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", "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": "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", "dependencies": { - "isexe": "^2.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, - "bin": { - "node-which": "bin/node-which" + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/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" }, "engines": { - "node": ">= 8" + "node": "*" } }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "license": "MIT" }, "node_modules/non-layered-tidy-tree-layout": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", - "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==" + "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==", + "license": "MIT" }, "node_modules/nopt": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, + "license": "ISC", "dependencies": { "abbrev": "^1.0.0" }, @@ -10568,6 +13194,7 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^5.0.0", "is-core-module": "^2.8.1", @@ -10580,6 +13207,8 @@ }, "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==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10590,6 +13219,7 @@ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10599,12 +13229,15 @@ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, + "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^1.0.1" } }, "node_modules/npm-conf": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", "dev": true, "license": "MIT", "dependencies": { @@ -10615,11 +13248,22 @@ "node": ">=4" } }, + "node_modules/npm-conf/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/npm-install-checks": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -10631,13 +13275,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/npm-package-arg": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", "dev": true, + "license": "ISC", "dependencies": { "hosted-git-info": "^5.0.0", "proc-log": "^2.0.1", @@ -10653,6 +13299,7 @@ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^8.0.1", "ignore-walk": "^5.0.1", @@ -10666,53 +13313,12 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-packlist/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm-packlist/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm-packlist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/npm-packlist/node_modules/npm-bundled": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", "dev": true, + "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^2.0.0" }, @@ -10725,6 +13331,7 @@ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, + "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } @@ -10734,6 +13341,7 @@ "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", "dev": true, + "license": "ISC", "dependencies": { "npm-install-checks": "^5.0.0", "npm-normalize-package-bin": "^1.0.1", @@ -10749,6 +13357,7 @@ "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", "dev": true, + "license": "ISC", "dependencies": { "make-fetch-happen": "^10.0.6", "minipass": "^3.1.6", @@ -10767,6 +13376,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -10780,6 +13390,7 @@ "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", @@ -10792,6 +13403,8 @@ }, "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": { @@ -10802,11 +13415,15 @@ } }, "node_modules/nwsapi": { - "version": "2.2.2", + "version": "2.2.22", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", + "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", "license": "MIT" }, "node_modules/oauth-sign": { "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "license": "Apache-2.0", "engines": { "node": "*" @@ -10814,6 +13431,8 @@ }, "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": { @@ -10825,6 +13444,7 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -10834,6 +13454,8 @@ }, "node_modules/object-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, "license": "MIT", "engines": { @@ -10844,10 +13466,13 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true + "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": { @@ -10858,16 +13483,19 @@ } }, "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "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": { "node": ">= 0.8" } }, "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==", "license": "ISC", "dependencies": { "wrappy": "1" @@ -10875,6 +13503,8 @@ }, "node_modules/onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", "dependencies": { @@ -10889,6 +13519,8 @@ }, "node_modules/ono": { "version": "4.0.11", + "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.11.tgz", + "integrity": "sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==", "dev": true, "license": "MIT", "dependencies": { @@ -10897,6 +13529,8 @@ }, "node_modules/open": { "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, "license": "MIT", "dependencies": { @@ -10913,6 +13547,8 @@ }, "node_modules/optionator": { "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "license": "MIT", "dependencies": { "deep-is": "~0.1.3", @@ -10928,6 +13564,8 @@ }, "node_modules/ora": { "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10948,80 +13586,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/os-tmpdir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true, + "license": "MIT" + }, "node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { @@ -11036,6 +13621,8 @@ }, "node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { @@ -11050,6 +13637,7 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -11065,6 +13653,7 @@ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" @@ -11078,12 +13667,15 @@ "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", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "license": "MIT", "engines": { @@ -11095,6 +13687,7 @@ "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/git": "^3.0.0", "@npmcli/installed-package-contents": "^1.0.7", @@ -11127,6 +13720,8 @@ }, "node_modules/pako": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true, "license": "(MIT AND Zlib)" }, @@ -11135,6 +13730,7 @@ "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": { "callsites": "^3.0.0" }, @@ -11147,6 +13743,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -11165,17 +13762,22 @@ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/parse5": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", "license": "MIT", "optional": true }, "node_modules/parse5-html-rewriting-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", + "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", "dev": true, "license": "MIT", "dependencies": { @@ -11185,11 +13787,15 @@ }, "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true, "license": "MIT" }, "node_modules/parse5-htmlparser2-tree-adapter": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, "license": "MIT", "dependencies": { @@ -11198,11 +13804,15 @@ }, "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true, "license": "MIT" }, "node_modules/parse5-sax-parser": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", "dev": true, "license": "MIT", "dependencies": { @@ -11211,11 +13821,15 @@ }, "node_modules/parse5-sax-parser/node_modules/parse5": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true, "license": "MIT" }, "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": { @@ -11224,6 +13838,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": { @@ -11232,6 +13848,8 @@ }, "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": { @@ -11240,6 +13858,8 @@ }, "node_modules/path-is-inside": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "dev": true, "license": "(WTFPL OR MIT)" }, @@ -11248,12 +13868,15 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "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" }, @@ -11261,28 +13884,42 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, "node_modules/performance-now": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "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==" + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -11294,18 +13931,23 @@ "node_modules/picomodal": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/picomodal/-/picomodal-3.0.0.tgz", - "integrity": "sha512-FoR3TDfuLlqUvcEeK5ifpKSVVns6B4BQvc8SDF6THVMuadya6LLtji0QgUDSStw0ZR2J7I6UGi5V2V23rnPWTw==" + "integrity": "sha512-FoR3TDfuLlqUvcEeK5ifpKSVVns6B4BQvc8SDF6THVMuadya6LLtji0QgUDSStw0ZR2J7I6UGi5V2V23rnPWTw==", + "license": "MIT" }, "node_modules/pify": { - "version": "3.0.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/pinkie": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true, "license": "MIT", "engines": { @@ -11314,6 +13956,8 @@ }, "node_modules/pinkie-promise": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "license": "MIT", "dependencies": { @@ -11325,6 +13969,8 @@ }, "node_modules/piscina": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", + "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", "dev": true, "license": "MIT", "dependencies": { @@ -11338,6 +13984,8 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11349,10 +13997,15 @@ }, "node_modules/pn": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", "license": "MIT" }, "node_modules/popper.js": { "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", "license": "MIT", "peer": true, "funding": { @@ -11379,6 +14032,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", @@ -11393,6 +14047,7 @@ "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -11412,6 +14067,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11425,6 +14081,7 @@ "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11440,6 +14097,7 @@ "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11459,6 +14117,7 @@ "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11478,6 +14137,7 @@ "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11497,6 +14157,7 @@ "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11516,6 +14177,7 @@ "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11535,6 +14197,7 @@ "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", "dev": true, + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -11554,6 +14217,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11567,6 +14231,7 @@ "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -11586,6 +14251,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11599,6 +14265,7 @@ "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -11619,6 +14286,7 @@ "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11634,6 +14302,7 @@ "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -11649,6 +14318,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11662,6 +14332,7 @@ "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -11677,6 +14348,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11690,6 +14362,7 @@ "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", "dev": true, + "license": "MIT", "peerDependencies": { "postcss": "^8.1.0" } @@ -11699,6 +14372,7 @@ "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", "dev": true, + "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -11715,6 +14389,7 @@ "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11734,6 +14409,7 @@ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -11751,6 +14427,7 @@ "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", "dev": true, + "license": "MIT", "peerDependencies": { "postcss": "^8.0.0" } @@ -11760,6 +14437,7 @@ "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -11780,6 +14458,7 @@ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz", "integrity": "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==", "dev": true, + "license": "MIT", "dependencies": { "cosmiconfig": "^7.0.0", "klona": "^2.0.5", @@ -11802,6 +14481,7 @@ "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", "dev": true, + "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -11814,6 +14494,7 @@ "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -11826,6 +14507,7 @@ "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": { "node": "^10 || ^12 || >= 14" }, @@ -11838,6 +14520,7 @@ "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": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^7.0.0", @@ -11855,6 +14538,7 @@ "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": { "postcss-selector-parser": "^7.0.0" }, @@ -11870,6 +14554,7 @@ "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": { "icss-utils": "^5.0.0" }, @@ -11885,6 +14570,7 @@ "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" @@ -11905,6 +14591,7 @@ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", "dev": true, + "license": "CC0-1.0", "engines": { "node": "^14 || ^16 || >=18" }, @@ -11921,6 +14608,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11944,6 +14632,7 @@ "url": "https://liberapay.com/mrcgrtz" } ], + "license": "MIT", "engines": { "node": "^12 || ^14 || >=16" }, @@ -11956,6 +14645,7 @@ "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11975,6 +14665,7 @@ "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", "dev": true, + "license": "MIT", "peerDependencies": { "postcss": "^8" } @@ -11984,6 +14675,7 @@ "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -12003,6 +14695,7 @@ "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz", "integrity": "sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-cascade-layers": "^1.0.5", "@csstools/postcss-color-function": "^1.1.1", @@ -12070,6 +14763,7 @@ "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -12089,6 +14783,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -12102,6 +14797,7 @@ "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", "dev": true, + "license": "MIT", "peerDependencies": { "postcss": "^8.0.3" } @@ -12111,6 +14807,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -12130,6 +14827,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -12143,6 +14841,7 @@ "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": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -12155,12 +14854,14 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/preact": { "version": "10.12.1", "resolved": "https://registry.npmjs.org/preact/-/preact-10.12.1.tgz", "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -12168,12 +14869,16 @@ }, "node_modules/prelude-ls": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "engines": { "node": ">= 0.8.0" } }, "node_modules/pretty-bytes": { "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true, "license": "MIT", "engines": { @@ -12197,12 +14902,25 @@ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "dev": true, + "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.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" }, @@ -12210,13 +14928,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true + "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": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -12227,11 +14947,16 @@ }, "node_modules/proto-list": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true, "license": "ISC" }, "node_modules/protractor": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", + "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", + "deprecated": "We have news to share - Protractor is deprecated and will reach end-of-life by Summer 2023. To learn more and find out about other options please refer to this post on the Angular blog. Thank you for using and contributing to Protractor. https://goo.gle/state-of-e2e-in-angular", "dev": true, "license": "MIT", "dependencies": { @@ -12261,6 +14986,8 @@ }, "node_modules/protractor/node_modules/ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, "license": "MIT", "engines": { @@ -12269,14 +14996,29 @@ }, "node_modules/protractor/node_modules/ansi-styles": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/protractor/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", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/protractor/node_modules/chalk": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "license": "MIT", "dependencies": { @@ -12292,6 +15034,8 @@ }, "node_modules/protractor/node_modules/cliui": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "license": "ISC", "dependencies": { @@ -12302,6 +15046,8 @@ }, "node_modules/protractor/node_modules/cliui/node_modules/ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { @@ -12310,6 +15056,8 @@ }, "node_modules/protractor/node_modules/cliui/node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { @@ -12319,24 +15067,45 @@ "node": ">=8" } }, - "node_modules/protractor/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/protractor/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": "MIT", + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/protractor/node_modules/color-name": { - "version": "1.1.4", + "node_modules/protractor/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": "MIT" + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, "node_modules/protractor/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": "BSD-3-Clause", "engines": { @@ -12345,6 +15114,8 @@ }, "node_modules/protractor/node_modules/source-map-support": { "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "license": "MIT", "dependencies": { @@ -12353,6 +15124,8 @@ }, "node_modules/protractor/node_modules/strip-ansi": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "license": "MIT", "dependencies": { @@ -12364,6 +15137,8 @@ }, "node_modules/protractor/node_modules/supports-color": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, "license": "MIT", "engines": { @@ -12372,6 +15147,8 @@ }, "node_modules/protractor/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": { @@ -12385,6 +15162,8 @@ }, "node_modules/protractor/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": { @@ -12393,6 +15172,8 @@ }, "node_modules/protractor/node_modules/wrap-ansi/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": { @@ -12407,6 +15188,8 @@ }, "node_modules/protractor/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": { @@ -12418,11 +15201,15 @@ }, "node_modules/protractor/node_modules/y18n": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true, "license": "ISC" }, "node_modules/protractor/node_modules/yargs": { "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "license": "MIT", "dependencies": { @@ -12444,6 +15231,8 @@ }, "node_modules/protractor/node_modules/yargs-parser": { "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "license": "ISC", "dependencies": { @@ -12459,6 +15248,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": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -12472,30 +15262,70 @@ "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": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true, + "license": "MIT" + }, "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.9.0", - "license": "MIT" + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } }, - "node_modules/punycode": { - "version": "2.1.1", + "node_modules/psl/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "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", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", "dev": true, "license": "MIT", "engines": { @@ -12505,6 +15335,8 @@ }, "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": { @@ -12512,12 +15344,13 @@ } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "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" @@ -12544,10 +15377,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "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": { @@ -12556,6 +15392,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": { @@ -12567,6 +15405,7 @@ "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": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -12582,25 +15421,18 @@ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^2.3.0" } }, - "node_modules/read-cache/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/read-package-json": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", "dev": true, + "license": "ISC", "dependencies": { "glob": "^8.0.1", "json-parse-even-better-errors": "^2.3.1", @@ -12616,6 +15448,7 @@ "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, + "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^2.3.0", "npm-normalize-package-bin": "^1.0.1" @@ -12624,59 +15457,20 @@ "node": ">=10" } }, - "node_modules/read-package-json/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/read-package-json/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/read-package-json/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, + "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/readable-stream": { - "version": "3.6.0", + "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": { @@ -12690,6 +15484,8 @@ }, "node_modules/readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -12699,20 +15495,24 @@ } }, "node_modules/reflect-metadata": { - "version": "0.1.13", + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", "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 + "dev": true, + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", - "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -12724,34 +15524,29 @@ "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } + "license": "MIT" }, "node_modules/regex-parser": { - "version": "2.2.11", + "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/regexpu-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", - "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", + "regenerate-unicode-properties": "^10.2.2", "regjsgen": "^0.8.0", - "regjsparser": "^0.12.0", + "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "unicode-match-property-value-ecmascript": "^2.2.1" }, "engines": { "node": ">=4" @@ -12761,25 +15556,28 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~3.0.2" + "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, "node_modules/regjsparser/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -12789,6 +15587,9 @@ }, "node_modules/request": { "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", @@ -12816,8 +15617,20 @@ "node": ">= 6" } }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "throttleit": "^1.0.0" + } + }, "node_modules/request-promise-core": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", "license": "ISC", "dependencies": { "lodash": "^4.17.19" @@ -12831,6 +15644,9 @@ }, "node_modules/request-promise-native": { "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", "license": "ISC", "dependencies": { "request-promise-core": "1.1.4", @@ -12844,8 +15660,19 @@ "request": "^2.34" } }, + "node_modules/request-promise-native/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/request-promise-native/node_modules/tough-cookie": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.28", @@ -12855,8 +15682,63 @@ "node": ">=0.8" } }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/request/node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "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/request/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/request/node_modules/qs": { "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "license": "BSD-3-Clause", "engines": { "node": ">=0.6" @@ -12864,6 +15746,8 @@ }, "node_modules/request/node_modules/tough-cookie": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.28", @@ -12875,6 +15759,9 @@ }, "node_modules/request/node_modules/uuid": { "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "license": "MIT", "bin": { "uuid": "bin/uuid" @@ -12882,6 +15769,8 @@ }, "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==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12892,17 +15781,22 @@ "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", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "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" }, @@ -12911,6 +15805,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -12925,14 +15820,28 @@ }, "node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "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": { @@ -12951,6 +15860,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -12962,6 +15872,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": { @@ -12970,6 +15882,8 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "license": "MIT", "dependencies": { @@ -12985,6 +15899,7 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -12994,32 +15909,86 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rfdc": { - "version": "1.3.0", + "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", + "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": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/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", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", "dependencies": { - "glob": "^7.1.3" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/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" + }, + "engines": { + "node": "*" + } + }, "node_modules/roarr": { "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -13037,13 +16006,15 @@ "node_modules/robust-predicates": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -13067,6 +16038,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -13074,12 +16046,14 @@ "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" }, "node_modules/rxjs": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", + "license": "Apache-2.0", "dependencies": { "tslib": "~2.1.0" } @@ -13087,10 +16061,13 @@ "node_modules/rxjs/node_modules/tslib": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "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==", "funding": [ { "type": "github", @@ -13107,8 +16084,28 @@ ], "license": "MIT" }, + "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": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, "node_modules/sass": { @@ -13116,6 +16113,7 @@ "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz", "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==", "dev": true, + "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -13133,6 +16131,7 @@ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", "dev": true, + "license": "MIT", "dependencies": { "klona": "^2.0.4", "neo-async": "^2.6.2" @@ -13168,6 +16167,8 @@ }, "node_modules/saucelabs": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", "dev": true, "dependencies": { "https-proxy-agent": "^2.2.1" @@ -13178,6 +16179,8 @@ }, "node_modules/saucelabs/node_modules/agent-base": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "dev": true, "license": "MIT", "dependencies": { @@ -13189,6 +16192,8 @@ }, "node_modules/saucelabs/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { @@ -13197,6 +16202,8 @@ }, "node_modules/saucelabs/node_modules/https-proxy-agent": { "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", "dev": true, "license": "MIT", "dependencies": { @@ -13208,12 +16215,16 @@ } }, "node_modules/sax": { - "version": "1.2.4", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", "dev": true, - "license": "ISC" + "license": "BlueOak-1.0.0" }, "node_modules/saxes": { "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", "license": "ISC", "dependencies": { "xmlchars": "^2.1.1" @@ -13224,6 +16235,8 @@ }, "node_modules/schema-utils": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -13241,6 +16254,8 @@ }, "node_modules/schema-utils/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": { @@ -13256,6 +16271,8 @@ }, "node_modules/schema-utils/node_modules/ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -13264,22 +16281,28 @@ }, "node_modules/schema-utils/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/select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "node_modules/selenium-webdriver": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -13292,8 +16315,57 @@ "node": ">= 6.9.0" } }, + "node_modules/selenium-webdriver/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", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/selenium-webdriver/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/selenium-webdriver/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" + }, + "engines": { + "node": "*" + } + }, "node_modules/selenium-webdriver/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": { @@ -13305,6 +16377,8 @@ }, "node_modules/selenium-webdriver/node_modules/tmp": { "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==", "dev": true, "license": "MIT", "dependencies": { @@ -13319,6 +16393,7 @@ "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" @@ -13328,10 +16403,13 @@ } }, "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" }, @@ -13341,11 +16419,15 @@ }, "node_modules/semver-compare": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true, "license": "MIT" }, "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": { @@ -13357,15 +16439,35 @@ "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", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, "node_modules/send": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -13390,6 +16492,7 @@ "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" } @@ -13398,13 +16501,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/send/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" }, @@ -13416,19 +16521,23 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/send/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/serialize-error": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", "dev": true, "license": "MIT", "dependencies": { @@ -13443,6 +16552,8 @@ }, "node_modules/serialize-error/node_modules/type-fest": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -13467,6 +16578,7 @@ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -13485,6 +16597,7 @@ "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" } @@ -13494,6 +16607,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -13503,6 +16617,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -13517,25 +16632,29 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true + "dev": true, + "license": "ISC" }, "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 + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "ISC" }, "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": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", @@ -13551,27 +16670,36 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/set-blocking": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true, "license": "ISC" }, "node_modules/setimmediate": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true, "license": "MIT" }, "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": { @@ -13586,6 +16714,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -13598,15 +16727,29 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "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": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -13626,6 +16769,7 @@ "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": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -13642,6 +16786,7 @@ "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": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -13660,6 +16805,7 @@ "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": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -13676,6 +16822,8 @@ }, "node_modules/signal-exit": { "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, @@ -13684,6 +16832,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -13691,11 +16840,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "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": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -13758,6 +16923,7 @@ "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": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -13771,6 +16937,7 @@ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, + "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -13778,12 +16945,13 @@ } }, "node_modules/socks": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", - "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "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": { @@ -13796,6 +16964,7 @@ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -13810,12 +16979,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, "node_modules/source-map-js": { - "version": "1.0.2", + "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": { @@ -13827,6 +16999,7 @@ "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.0.tgz", "integrity": "sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw==", "dev": true, + "license": "MIT", "dependencies": { "abab": "^2.0.6", "iconv-lite": "^0.6.3", @@ -13848,6 +17021,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -13857,6 +17031,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": { @@ -13866,6 +17042,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": { @@ -13874,6 +17052,9 @@ }, "node_modules/sourcemap-codec": { "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", "license": "MIT" }, "node_modules/spdx-correct": { @@ -13881,6 +17062,7 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -13890,29 +17072,33 @@ "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 + "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": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.21", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", - "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", - "dev": true + "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": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -13929,6 +17115,7 @@ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -13942,10 +17129,13 @@ "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 + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/sshpk": { - "version": "1.17.0", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "license": "MIT", "dependencies": { "asn1": "~0.2.3", @@ -13972,6 +17162,7 @@ "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -13981,6 +17172,8 @@ }, "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", "engines": { @@ -13989,13 +17182,17 @@ }, "node_modules/stealthy-require": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", "license": "ISC", "engines": { "node": ">=0.10.0" } }, "node_modules/streamroller": { - "version": "3.1.3", + "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": { @@ -14007,8 +17204,45 @@ "node": ">=8.0" } }, + "node_modules/streamroller/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/streamroller/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/streamroller/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/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": { @@ -14017,6 +17251,8 @@ }, "node_modules/string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -14029,6 +17265,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -14042,6 +17280,7 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -14049,13 +17288,15 @@ "node_modules/stylis": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", - "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==" + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT" }, "node_modules/stylus": { "version": "0.59.0", "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", "dev": true, + "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.0.1", "debug": "^4.3.2", @@ -14070,44 +17311,104 @@ "node": "*" }, "funding": { - "url": "https://opencollective.com/stylus" + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus-loader": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.0.0.tgz", + "integrity": "sha512-WTbtLrNfOfLgzTaR9Lj/BPhQroKk/LC1hfTXSUbrxmxgfUo3Y3LpmKRVA2R1XbjvTAvOfaian9vOyfv1z99E+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.11", + "klona": "^2.0.5", + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "stylus": ">=0.52.4", + "webpack": "^5.0.0" + } + }, + "node_modules/stylus/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", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/stylus/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/stylus-loader": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.0.0.tgz", - "integrity": "sha512-WTbtLrNfOfLgzTaR9Lj/BPhQroKk/LC1hfTXSUbrxmxgfUo3Y3LpmKRVA2R1XbjvTAvOfaian9vOyfv1z99E+A==", + "node_modules/stylus/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": { - "fast-glob": "^3.2.11", - "klona": "^2.0.5", - "normalize-path": "^3.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "stylus": ">=0.52.4", - "webpack": "^5.0.0" + "node": "*" } }, - "node_modules/supports-color": { - "version": "5.5.0", + "node_modules/stylus/node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, + "license": "ISC" + }, + "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==", "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "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": { @@ -14119,6 +17420,8 @@ }, "node_modules/symbol-observable": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", "dev": true, "license": "MIT", "engines": { @@ -14127,14 +17430,22 @@ }, "node_modules/symbol-tree": { "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "license": "MIT" }, "node_modules/tapable": { - "version": "2.2.1", + "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": { @@ -14142,6 +17453,7 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -14159,12 +17471,22 @@ "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/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.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -14181,15 +17503,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.6", + "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": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -14213,42 +17537,30 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", + "node_modules/terser-webpack-plugin/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", - "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" + "bin": { + "acorn": "bin/acorn" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", + "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": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 10.13.0" @@ -14258,8 +17570,29 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/terser-webpack-plugin/node_modules/terser": { + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.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.8.1", + "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", "bin": { @@ -14271,6 +17604,8 @@ }, "node_modules/test-exclude": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "license": "ISC", "dependencies": { @@ -14282,13 +17617,73 @@ "node": ">=8" } }, + "node_modules/test-exclude/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", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/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" + }, + "engines": { + "node": "*" + } + }, "node_modules/text-table": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, "license": "MIT" }, + "node_modules/throttleit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "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" }, @@ -14296,29 +17691,75 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/timing-object": { + "version": "3.1.94", + "resolved": "https://registry.npmjs.org/timing-object/-/timing-object-3.1.94.tgz", + "integrity": "sha512-sLUyYh2hJ8YRPV8AAO5c6lv+AuoodZ5rfEIu35JIFYtjn3yqi+zzUcDjghtaKEoG1BLzlhRpeK/ROv4X8o8svA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "tslib": "^2.8.1" + } + }, + "node_modules/timing-object/node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/timing-object/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "license": "MIT" }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/tldts": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", + "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", "dev": true, + "license": "MIT", "dependencies": { - "os-tmpdir": "~1.0.2" + "tldts-core": "^6.1.86" }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "dev": true, + "license": "MIT" + }, + "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": ">=0.6.0" + "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==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -14328,6 +17769,8 @@ }, "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": { @@ -14335,27 +17778,40 @@ } }, "node_modules/tough-cookie": { - "version": "3.0.1", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" + "tldts": "^6.1.32" }, "engines": { - "node": ">=6" + "node": ">=16" } }, "node_modules/tr46": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "license": "MIT", "dependencies": { "punycode": "^2.1.0" } }, + "node_modules/tr46/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/tree-kill": { "version": "1.2.2", - "dev": true, + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "license": "MIT", "bin": { "tree-kill": "cli.js" @@ -14365,12 +17821,15 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", "engines": { "node": ">=6.10" } }, "node_modules/ts-node": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", "dev": true, "license": "MIT", "dependencies": { @@ -14392,6 +17851,8 @@ }, "node_modules/ts-node/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": { @@ -14403,10 +17864,15 @@ }, "node_modules/tslib": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", "license": "0BSD" }, "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", "dependencies": { @@ -14428,22 +17894,127 @@ "tslint": "bin/tslint" }, "engines": { - "node": ">=4.8.0" + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + } + }, + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslint/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", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "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" + } + }, + "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/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/tslint/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" }, - "peerDependencies": { - "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/tslint/node_modules/diff": { - "version": "4.0.2", + "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": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.3.1" + "node": ">=4" + } + }, + "node_modules/tslint/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" + }, + "engines": { + "node": "*" } }, "node_modules/tslint/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": { @@ -14458,17 +18029,35 @@ "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/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" + }, + "engines": { + "node": ">=4" + } + }, "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": { @@ -14480,11 +18069,94 @@ }, "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/tsx": { + "version": "4.20.6", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz", + "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, "node_modules/tunnel": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", "dev": true, "license": "MIT", "engines": { @@ -14493,6 +18165,8 @@ }, "node_modules/tunnel-agent": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" @@ -14503,10 +18177,14 @@ }, "node_modules/tweetnacl": { "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "license": "Unlicense" }, "node_modules/type-check": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2" @@ -14520,6 +18198,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -14529,6 +18208,8 @@ }, "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": { @@ -14541,11 +18222,15 @@ }, "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": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -14556,9 +18241,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", - "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", + "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": [ { @@ -14574,6 +18259,10 @@ "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, "engines": { "node": "*" } @@ -14597,6 +18286,7 @@ "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" } @@ -14606,6 +18296,7 @@ "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": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -14615,19 +18306,21 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", - "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -14637,6 +18330,7 @@ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, + "license": "ISC", "dependencies": { "unique-slug": "^2.0.0" } @@ -14646,30 +18340,45 @@ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" } }, "node_modules/universalify": { - "version": "0.1.2", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4.0.0" + "node": ">= 10.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/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", "funding": [ { "type": "opencollective", @@ -14684,6 +18393,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" @@ -14697,18 +18407,33 @@ }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "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==", + "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": { @@ -14717,6 +18442,8 @@ }, "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", "bin": { @@ -14728,6 +18455,7 @@ "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", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -14738,6 +18466,7 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", "dev": true, + "license": "ISC", "dependencies": { "builtins": "^5.0.0" }, @@ -14749,12 +18478,15 @@ "version": "2.12.3", "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.12.3.tgz", "integrity": "sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==", + "license": "ISC", "dependencies": { "@sphinxxxx/color-conversion": "^2.2.2" } }, "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", "engines": { @@ -14763,6 +18495,8 @@ }, "node_modules/verror": { "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "engines": [ "node >=0.6.0" ], @@ -14775,6 +18509,8 @@ }, "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": { @@ -14783,6 +18519,9 @@ }, "node_modules/w3c-hr-time": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "license": "MIT", "dependencies": { "browser-process-hrtime": "^1.0.0" @@ -14790,6 +18529,8 @@ }, "node_modules/w3c-xmlserializer": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", "license": "MIT", "dependencies": { "domexception": "^1.0.1", @@ -14797,8 +18538,47 @@ "xml-name-validator": "^3.0.0" } }, + "node_modules/wait-on": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.5.tgz", + "integrity": "sha512-J3WlS0txVHkhLRb2FsmRg3dkMTCV1+M6Xra3Ho7HzZDHpE7DCOnoSoCJsZotrmW3uRMhvIJGSKUKrh/MeF4iag==", + "dev": true, + "license": "MIT", + "dependencies": { + "axios": "^1.12.1", + "joi": "^18.0.1", + "lodash": "^4.17.21", + "minimist": "^1.2.8", + "rxjs": "^7.8.2" + }, + "bin": { + "wait-on": "bin/wait-on" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/wait-on/node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/wait-on/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/watchpack": { - "version": "2.4.0", + "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": { @@ -14814,12 +18594,15 @@ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, + "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } }, "node_modules/wcwidth": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "license": "MIT", "dependencies": { @@ -14838,10 +18621,13 @@ "node_modules/web-worker": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.5.0.tgz", - "integrity": "sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==" + "integrity": "sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==", + "license": "Apache-2.0" }, "node_modules/webdriver-js-extender": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14857,6 +18643,7 @@ "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.9.tgz", "integrity": "sha512-Yl113uKm8z4m/KMUVWHq1Sjtla2uxEBtx2Ue3AmIlnlPAKloDn/Lvmy6pqWCUersVISpdMeVpAaGbNnvMuT2LQ==", "dev": true, + "license": "MIT", "dependencies": { "adm-zip": "^0.5.2", "chalk": "^1.1.1", @@ -14879,6 +18666,8 @@ }, "node_modules/webdriver-manager/node_modules/ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, "license": "MIT", "engines": { @@ -14887,14 +18676,29 @@ }, "node_modules/webdriver-manager/node_modules/ansi-styles": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/webdriver-manager/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", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/webdriver-manager/node_modules/chalk": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "license": "MIT", "dependencies": { @@ -14908,13 +18712,53 @@ "node": ">=0.10.0" } }, + "node_modules/webdriver-manager/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/webdriver-manager/node_modules/ini": { "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, "license": "ISC" }, + "node_modules/webdriver-manager/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" + }, + "engines": { + "node": "*" + } + }, "node_modules/webdriver-manager/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": { @@ -14929,12 +18773,15 @@ "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/webdriver-manager/node_modules/strip-ansi": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "license": "MIT", "dependencies": { @@ -14946,6 +18793,8 @@ }, "node_modules/webdriver-manager/node_modules/supports-color": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, "license": "MIT", "engines": { @@ -14954,6 +18803,8 @@ }, "node_modules/webidl-conversions": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "license": "BSD-2-Clause" }, "node_modules/webpack": { @@ -14961,6 +18812,7 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz", "integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^0.0.51", @@ -15008,6 +18860,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", "dev": true, + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", @@ -15027,10 +18880,11 @@ } }, "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "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": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -15050,6 +18904,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", "dev": true, + "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -15101,10 +18956,11 @@ } }, "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "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": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -15120,10 +18976,11 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "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" }, @@ -15142,6 +18999,8 @@ }, "node_modules/webpack-merge": { "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, "license": "MIT", "dependencies": { @@ -15153,7 +19012,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.2.3", + "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": { @@ -15162,6 +19023,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": { @@ -15181,7 +19044,9 @@ } }, "node_modules/webpack/node_modules/acorn": { - "version": "8.8.1", + "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", "bin": { @@ -15192,7 +19057,10 @@ } }, "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.8.0", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "deprecated": "package has been renamed to acorn-import-attributes", "dev": true, "license": "MIT", "peerDependencies": { @@ -15201,6 +19069,8 @@ }, "node_modules/webpack/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": { @@ -15216,6 +19086,8 @@ }, "node_modules/webpack/node_modules/ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -15224,11 +19096,15 @@ }, "node_modules/webpack/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/webpack/node_modules/schema-utils": { - "version": "3.1.1", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "license": "MIT", "dependencies": { @@ -15249,6 +19125,7 @@ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -15263,12 +19140,15 @@ "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": { "node": ">=0.8.0" } }, "node_modules/whatwg-encoding": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "license": "MIT", "dependencies": { "iconv-lite": "0.4.24" @@ -15276,10 +19156,14 @@ }, "node_modules/whatwg-mimetype": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", "license": "MIT" }, "node_modules/whatwg-url": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "license": "MIT", "dependencies": { "lodash.sortby": "^4.7.0", @@ -15288,18 +19172,25 @@ } }, "node_modules/which": { - "version": "1.3.1", + "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": { "isexe": "^2.0.0" }, "bin": { - "which": "bin/which" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/which-module": { - "version": "2.0.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", "dev": true, "license": "ISC" }, @@ -15308,12 +19199,15 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, "node_modules/wildcard": { - "version": "2.0.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true, "license": "MIT" }, @@ -15321,6 +19215,7 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -15334,6 +19229,8 @@ }, "node_modules/wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -15347,35 +19244,10 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, "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==", "license": "ISC" }, "node_modules/ws": { @@ -15401,10 +19273,14 @@ }, "node_modules/xml-name-validator": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "license": "Apache-2.0" }, "node_modules/xml2js": { "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", "dev": true, "license": "MIT", "dependencies": { @@ -15417,6 +19293,8 @@ }, "node_modules/xmlbuilder": { "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true, "license": "MIT", "engines": { @@ -15425,18 +19303,23 @@ }, "node_modules/xmlchars": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "license": "MIT" }, "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" } }, "node_modules/yallist": { - "version": "4.0.0", - "dev": true, + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "license": "ISC" }, "node_modules/yaml": { @@ -15444,15 +19327,18 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 6" } }, "node_modules/yargs": { - "version": "17.6.0", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "license": "MIT", "dependencies": { - "cliui": "^8.0.1", + "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", @@ -15466,13 +19352,28 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "license": "ISC", "engines": { "node": ">=12" } }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "node_modules/yn": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", "dev": true, "license": "MIT", "engines": { @@ -15481,13 +19382,17 @@ }, "node_modules/zone.js": { "version": "0.11.8", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" } }, "node_modules/zone.js/node_modules/tslib": { - "version": "2.4.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" } } diff --git a/package.json b/package.json index 78c25a26300ae21981e76d137c028fdab17b3035..f498191c80b230c4fa5e1e9c53c2284ff5d4fc9c 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,12 @@ "build": "ng build", "test": "ng test", "lint": "ng lint", - "e2e": "ng e2e" + "e2e": "ng e2e", + "extract-paths": "npx tsx scripts/extract.paths.ts", + "cypress:open": "npm run extract-paths && cypress open", + "cypress:run": "npm run extract-paths && cypress run", + "cy:open": "npm run extract-paths && concurrently \"ng serve\" \"wait-on http://localhost:4200 && cypress open\"", + "cy:run": "npm run extract-paths && concurrently \"ng serve\" \"wait-on http://localhost:4200 && cypress run\"" }, "private": true, "dependencies": { @@ -39,6 +44,9 @@ "blockly": "git://github.com/google/blockly.git#6.20210701.0", "bootstrap": "~4.6.0", "chartjs-plugin-datalabels": "~2.2.0", + "concurrently": "~9.2.1", + "cypress": "~14.5.4", + "dotenv": "~17.2.2", "jsoneditor": "~9.10.0", "jwt-decode": "~2.2.0", "marked": "^15.0.8", @@ -49,7 +57,9 @@ "ngx-progressbar": "~9.0.0", "ngx-toastr": "~15.2.2", "rxjs": "~7.4.0", + "timing-object": "~3.1.93", "tslib": "~2.0.0", + "wait-on": "^8.0.4", "zone.js": "~0.11.8" }, "devDependencies": { @@ -62,6 +72,7 @@ "@types/node": "~12.11.1", "@types/vimeo__player": "^2.18.3", "codelyzer": "~6.0.2", + "cypress": "~14.1.0", "jasmine-core": "~3.5.0", "jasmine-spec-reporter": "~5.0.0", "karma": "~6.4.1", @@ -74,6 +85,8 @@ "protractor": "~7.0.0", "ts-node": "~7.0.0", "tslint": "~6.1.0", - "typescript": "~4.6.4" + "tsx": "^4.19.3", + "typescript": "~4.6.4", + "wait-on": "^8.0.2" } } diff --git a/scripts/extract.paths.ts b/scripts/extract.paths.ts new file mode 100644 index 0000000000000000000000000000000000000000..a67ee268f23d374d76f7476522425815b209a2b9 --- /dev/null +++ b/scripts/extract.paths.ts @@ -0,0 +1,58 @@ +import { dirname, join } from "path"; +import { writeFileSync, existsSync, mkdirSync, readFileSync } from "fs"; +import { fileURLToPath } from "url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); +const routesFilePathResources = join(__dirname, "../src/app/app-resources-routing.module.ts"); +const routesFilePathTesting = join(__dirname, "../src/app/app-testing-routing.module.ts"); +const routesFilePathServices = join(__dirname, "../src/app/app-services-routing.module.ts"); +const routesFilePathProducts = join(__dirname, "../src/app/app-products-routing.module.ts"); + +//read route module files as plaintext and extract paths +function extractRoutesFromFile(filePath: string, parent: string): string[] { + try { + const fileContent = readFileSync(filePath, "utf-8"); + + // Regex to match route paths (excluding those with `/:id`) + const pathRegex = /path:\s*['"]([^'":]+)['"]/g; + let match; + const paths: string[] = []; + + while ((match = pathRegex.exec(fileContent)) !== null) { + if (!match[1].includes("/:id")) { + paths.push(`${parent}/${match[1]}`); + } + } + + return paths; + } catch (error) { + console.error(`❌ Error reading file: ${filePath}`, error); + return []; + } +} + +// Extract paths from every file +let resourceRoutesStr = extractRoutesFromFile(routesFilePathResources, "resources"); +let servicesRoutesStr = extractRoutesFromFile(routesFilePathServices, "services"); +let testingRoutesStr = extractRoutesFromFile(routesFilePathTesting, "testing"); +let productRoutesStr = extractRoutesFromFile(routesFilePathProducts, "products"); + +let allRoutes = resourceRoutesStr.concat(servicesRoutesStr, testingRoutesStr, productRoutesStr); +allRoutes.push('/products/individual_update/myuser', '/testing/individual_update/myuser', '/services/individual_update/myuser', '/resources/individual_update/myuser'); +let protectedRoutes: string[] = allRoutes.filter((el) => { return el!='services/services_marketplace' && el!='products/marketplace' + && el!='resources/resources_marketplace'}) + + +// Ensure `cypress/fixtures` directory exists +const fixturesDir = join(__dirname, "../cypress/fixtures"); +if (!existsSync(fixturesDir)) { + mkdirSync(fixturesDir, { recursive: true }); +} + +// Convert extracted routes to JSON and save to file +const jsonOutput = JSON.stringify({ routes: protectedRoutes }, null, 2); +const outputPath = join(fixturesDir, "routes.json"); +writeFileSync(outputPath, jsonOutput, "utf-8"); + +console.log("✅ Routes JSON file generated successfully!"); diff --git a/src/app/app-products-routing.module.ts b/src/app/app-products-routing.module.ts index 0c87cc63d6228111455ed353af85d270a8261651..7cfa3c336324ff99ac42778d68eb72ba71241ce6 100644 --- a/src/app/app-products-routing.module.ts +++ b/src/app/app-products-routing.module.ts @@ -15,6 +15,9 @@ import { EditIndividualsComponent } from './shared/components/partyManagement/ed import { ListProductOfferingsComponent } from './p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component'; import { EditProductCatalogsComponent } from './p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component'; import { EditProductOfferingsComponent } from './p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component'; +import { ProductOrderCheckoutComponent } from './p_product/orderCheckout/product-order-checkout/product-order-checkout.component'; +import { PreviewProductOrderComponent } from './p_product/admin/productOrderManagement/preview-product-order/preview-product-order.component'; +import { ListProductOrdersComponent } from './p_product/admin/productOrderManagement/list-product-orders/list-product-orders.component'; const routes: Routes = [ @@ -29,6 +32,11 @@ const routes: Routes = [ { path: 'product_category_update/:id', component: EditProductCategoriesComponent }, { path: 'product_category_update', component: EditProductCategoriesComponent }, + { path: 'product_orders', component: ListProductOrdersComponent }, + { path: 'product_order/:id', component: PreviewProductOrderComponent }, + + { path: 'product_order_checkout', component: ProductOrderCheckoutComponent }, + { path: 'product_offerings', component: ListProductOfferingsComponent }, { path: 'product_offering_update/:id', component: EditProductOfferingsComponent }, { path: 'product_offering_update', component: EditProductOfferingsComponent }, diff --git a/src/app/app-products.module.ts b/src/app/app-products.module.ts index 7ac9468423b6ce9eba80f9217f8ea5fe95d7c3a2..7837b0a1d05a7afb4176905fca899d1eeecb4f33 100644 --- a/src/app/app-products.module.ts +++ b/src/app/app-products.module.ts @@ -10,6 +10,8 @@ import { ListProductSpecsComponent } from './p_product/admin/productCatalogManag import { EditProductCatalogsComponent } from './p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component'; import { EditProductCategoriesComponent } from './p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component'; import { EditProductSpecsComponent } from './p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component'; +import { EditProductSpecCharacteristicsComponent } from './p_product/admin/productCatalogManagement/edit-product-specs/edit-product-spec-characteristics/edit-product-spec-characteristics.component'; +import { DeleteProductSpecCharacteristicsComponent } from './p_product/admin/productCatalogManagement/edit-product-specs/delete-product-spec-characteristics/delete-product-spec-characteristics.component'; import { DeleteProductCatalogsComponent } from './p_product/admin/productCatalogManagement/delete-product-catalogs/delete-product-catalogs.component'; import { DeleteProductCategoriesComponent } from './p_product/admin/productCatalogManagement/delete-product-categories/delete-product-categories.component'; import { DeleteProductSpecsComponent } from './p_product/admin/productCatalogManagement/delete-product-specs/delete-product-specs.component'; @@ -21,8 +23,17 @@ import { EditProductOfferingsComponent } from './p_product/admin/productCatalogM import { PreviewMarketPlaceItemComponent } from './p_product/marketplace/preview-market-place-item/preview-market-place-item.component'; import { AssignProductOfferingsComponent } from './p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component'; import { AssignSubcategoriesComponent } from './p_product/admin/productCatalogManagement/edit-product-categories/assign-subcategories/assign-subcategories.component'; - - +import { ConfirmCharacteristicAssignmentComponent } from './p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/confirm-characteristic-assignment/confirm-characteristic-assignment.component'; +import { SortByValuePipe } from './p_product/admin/productCatalogManagement/edit-product-offerings/sort-by-value.pipe'; +import { ProductOrderCheckoutComponent } from './p_product/orderCheckout/product-order-checkout/product-order-checkout.component'; +import { ProductOrderCalendarComponent } from './p_product/admin/productOrderManagement/product-order-calendar/product-order-calendar.component'; +import { ListProductOrdersComponent } from './p_product/admin/productOrderManagement/list-product-orders/list-product-orders.component'; +import { PreviewProductOrderComponent } from './p_product/admin/productOrderManagement/preview-product-order/preview-product-order.component'; +import { EditProductOrderItemsComponent } from './p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-product-order-items.component'; +import { TerminateProductOrderItemsComponent } from './p_product/admin/productOrderManagement/preview-product-order/terminate-product-order-items/terminate-product-order-items.component'; +import { DeleteProductOrderComponent } from './p_product/admin/productOrderManagement/delete-product-order/delete-product-order.component'; +import { EditOrdersProductSpecCharacteristicsComponent } from './p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-orders-product-spec-characteristics/edit-orders-product-spec-characteristics.component'; +import { FullCalendarModule } from "@fullcalendar/angular"; @NgModule({ declarations: [ @@ -34,22 +45,35 @@ import { AssignSubcategoriesComponent } from './p_product/admin/productCatalogMa EditProductCatalogsComponent, EditProductCategoriesComponent, EditProductSpecsComponent, + EditProductSpecCharacteristicsComponent, + DeleteProductSpecCharacteristicsComponent, DeleteProductCatalogsComponent, DeleteProductCategoriesComponent, DeleteProductSpecsComponent, AssignServiceSpecificationComponent, + ConfirmCharacteristicAssignmentComponent, ListProductOfferingsComponent, DeleteProductOfferingComponent, EditProductOfferingsComponent, PreviewMarketPlaceItemComponent, AssignProductOfferingsComponent, - AssignSubcategoriesComponent + AssignSubcategoriesComponent, + SortByValuePipe, + ProductOrderCheckoutComponent, + ProductOrderCalendarComponent, + PreviewProductOrderComponent, + EditProductOrderItemsComponent, + TerminateProductOrderItemsComponent, + DeleteProductOrderComponent, + ListProductOrdersComponent, + EditOrdersProductSpecCharacteristicsComponent ], imports: [ - CommonModule, - SharedModule, - AppProductsRoutingModule, - ] + CommonModule, + SharedModule, + AppProductsRoutingModule, + FullCalendarModule +] }) export class AppProductsModule { } diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 2853e74fab0d04af2741935f687aaffd9f02cbf1..6b8bb30b360e2031d1aa585bcd3fbb244c2384a4 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -5,6 +5,7 @@ import { MetricsComponent } from './landing/metrics/metrics.component'; import { PortalsComponent } from './landing/portals/portals.component'; import { PageNotFoundComponent } from './shared/components/page-not-found/page-not-found.component'; import { RedirectComponent } from './shared/components/redirect/redirect.component'; +import { AssistantComponent } from './p_chat/assistant/assistant.component'; import { LandingComponent } from './landing/landing.component'; const routes: Routes = [ @@ -27,6 +28,8 @@ const routes: Routes = [ { path: 'products', component: PortalsComponent}, { path: 'products', loadChildren: () => import('./app-products.module').then(m => m.AppProductsModule)}, + { path: 'assistant', loadChildren: () => import('./shared.module').then(m => m.SharedModule)}, + { path: '**', redirectTo: '404'}, { path: '404', component: PageNotFoundComponent} diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 90e14c2675b7895a8ebe5e771e00dd3e6124ce01..c9f6e3d60c77af2022ca720c96f4aa0c3eca9c9b 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -50,7 +50,7 @@ import { MatToolbarModule } from '@angular/material/toolbar'; import { MatTooltipModule } from '@angular/material/tooltip'; import { MatTreeModule } from '@angular/material/tree'; -import {DragDropModule} from '@angular/cdk/drag-drop'; +import { DragDropModule } from '@angular/cdk/drag-drop'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; @@ -88,14 +88,15 @@ import { DoughnutchartComponent } from './landing/metrics/doughnutchart/doughnut import { StatusCardComponent } from './landing/metrics/statuscard/statuscard.component'; import { PortalCardComponent } from './landing/portalcard/portalcard.component'; import { SkeletonComponent } from './landing/metrics/skeleton.component'; +import { CdkTableModule } from "@angular/cdk/table"; registerLocaleData(enGB); export function initializeApp(bootstrap: BootstrapService) { - return () => bootstrap.loadConfig() + return () => bootstrap.loadConfig() } export function initializeAppTheme(bootstrap: BootstrapService) { - return () => bootstrap.loadConfig() + return () => bootstrap.loadConfig() } @NgModule({ @@ -105,15 +106,15 @@ export function initializeAppTheme(bootstrap: BootstrapService) { FooterComponent, ContactComponent, MetricsComponent, - LandingComponent, + LandingComponent, PortalsComponent, CloneGstTemplateComponent, PageNotFoundComponent, RedirectComponent, - DoughnutchartComponent, - StatusCardComponent, - PortalCardComponent, - SkeletonComponent, + DoughnutchartComponent, + StatusCardComponent, + PortalCardComponent, + SkeletonComponent, ], imports: [ BrowserModule, @@ -129,9 +130,12 @@ export function initializeAppTheme(bootstrap: BootstrapService) { MatInputModule, MatDialogModule, MatCheckboxModule, + MatIconModule, + MatTooltipModule, OAuthModule.forRoot(), ToastrModule.forRoot({ progressBar: true, preventDuplicates: true }), - NgChartsModule + NgChartsModule, + CdkTableModule ], providers: [ AppService, diff --git a/src/app/landing/landing.component.html b/src/app/landing/landing.component.html index 424753450d3c64873c5c13cd772120b1ea6aeeac..5b330b7fdbc4b407024d1f1ccfd90175ae7e683b 100644 --- a/src/app/landing/landing.component.html +++ b/src/app/landing/landing.component.html @@ -46,14 +46,20 @@
-
{{animatedCounts.registeredUsers}}
+
+
+
+ + +
{{animatedCounts.registeredUsers}}
+
Registered Users
-
+
@@ -61,13 +67,19 @@
-
{{animatedCounts.publishedServiceSpecs}}
+
+
+
+ + +
{{animatedCounts.publishedServiceSpecs}}
+
Published Service Specifications
-
+
@@ -77,17 +89,22 @@
-
{{animatedCounts.registeredResourceSpecs}}
+
+
+
+ +
{{animatedCounts.registeredResourceSpecs}}
+
Registered Resource Specifications
-
+
See more on the
- Metrics Portal + Metrics Portal
diff --git a/src/app/landing/landing.component.scss b/src/app/landing/landing.component.scss index 944ec75065ccb442f386495617a48f37eefc3647..42340365c65be34f78f18074623cbeafb4930a5b 100644 --- a/src/app/landing/landing.component.scss +++ b/src/app/landing/landing.component.scss @@ -95,6 +95,8 @@ .card-title { padding-top: 1.5rem; transition: all 0.3s ease-in-out; + display: flex; + justify-content: center; } diff --git a/src/app/landing/landing.component.ts b/src/app/landing/landing.component.ts index 1cc25fd52eebb0adaec80fd170f47301a2b7f8a6..5ecfc724c925f8066d79fb04775ec69e56f9a90d 100644 --- a/src/app/landing/landing.component.ts +++ b/src/app/landing/landing.component.ts @@ -23,25 +23,23 @@ export class LandingComponent implements OnInit { config: IAppConfig loggedIn: boolean - // Video section variables private player: Player; videoLoaded: boolean = false; + isLoading: boolean = true; + @ViewChild('videoRef', { static: true }) videoElement!: ElementRef; // Metrics section variables - registeredUsers = 9999; - publishedServiceSpecs = 9999; - registeredResourceSpecs = 9999; animatedCounts = { - registeredUsers: 0, - publishedServiceSpecs: 0, - registeredResourceSpecs: 0 + registeredUsers: NaN, + publishedServiceSpecs: NaN, + registeredResourceSpecs: NaN }; targetCounts = { - registeredUsers: 0, - publishedServiceSpecs: 0, - registeredResourceSpecs: 0 + registeredUsers: NaN, + publishedServiceSpecs: NaN, + registeredResourceSpecs: NaN }; private intervalId: any; @@ -49,41 +47,49 @@ export class LandingComponent implements OnInit { this.config = this.appService.config this.authService.isAuthenticated$.subscribe( isAuthenticated => this.loggedIn = isAuthenticated - ) + ) this.initializePlayer() - // Initialize animated counts - this.startAnimation(); forkJoin({ registeredUsers: this.generalMetricsService.getRegisteredIndividuals().pipe( catchError(error => { console.error('Failed to load registered users', error); - return scheduled([{ registeredIndividuals: this.registeredUsers }], asyncScheduler); + return scheduled([{ registeredIndividuals: NaN }], asyncScheduler); }) ), publishedServiceSpecs: this.generalMetricsService.getPublishedServiceSpecifications().pipe( catchError(error => { console.error('Failed to load published specs', error); - return scheduled([{ publishedServiceSpecifications: this.publishedServiceSpecs }], asyncScheduler); + return scheduled([{ publishedServiceSpecifications: NaN }], asyncScheduler); }) ), registeredResourceSpecs: this.generalMetricsService.getRegisteredResourceSpecifications().pipe( catchError(error => { console.error('Failed to load resource specs', error); - return scheduled([{ registeredResourceSpecifications: this.registeredResourceSpecs }], asyncScheduler); + return scheduled([{ registeredResourceSpecifications: NaN }], asyncScheduler); }) ) - }).subscribe( - results => { - this.targetCounts.registeredUsers = results.registeredUsers.registeredIndividuals; - this.targetCounts.publishedServiceSpecs = results.publishedServiceSpecs.publishedServiceSpecifications; - this.targetCounts.registeredResourceSpecs = results.registeredResourceSpecs.registeredResourceSpecifications; - } - ) + }) + // .pipe(delay(500)) + .subscribe( + results => { + + this.targetCounts.registeredUsers = results.registeredUsers.registeredIndividuals; + this.targetCounts.publishedServiceSpecs = results.publishedServiceSpecs.publishedServiceSpecifications; + this.targetCounts.registeredResourceSpecs = results.registeredResourceSpecs.registeredResourceSpecifications; + this.isLoading = false; + // Initialize animated counts + this.startAnimation(); + + } + ); } + isNaN(value: any): boolean { + return isNaN(value); + } initializePlayer() { this.player = new Player(this.videoElement.nativeElement, { @@ -94,8 +100,8 @@ export class LandingComponent implements OnInit { muted: true, playsinline: true, // For mobile devices }); - - this.player.ready().then(() => { + + this.player.ready().then(() => { this.player.on('play', () => { this.videoLoaded = true; }); @@ -110,7 +116,7 @@ export class LandingComponent implements OnInit { // console.error('Player not initialized'); // return; // } - + // try { // if (this.isPlaying) { // await this.player.pause(); @@ -140,7 +146,7 @@ export class LandingComponent implements OnInit { // toggleFullscreen() { // const elem = this.videoElement.nativeElement.parentElement; - + // if (!document.fullscreenElement) { // if (elem?.requestFullscreen) { // elem.requestFullscreen(); @@ -159,12 +165,24 @@ export class LandingComponent implements OnInit { startAnimation() { const stepTime = 50; + // Initialize counts to NaN if the target is NaN (api didn't respond), otherwise start from 0 and animate the count + this.animatedCounts = { + registeredUsers: isNaN(this.targetCounts.registeredUsers) ? NaN : 0, + publishedServiceSpecs: isNaN(this.targetCounts.publishedServiceSpecs) ? NaN : 0, + registeredResourceSpecs: isNaN(this.targetCounts.registeredResourceSpecs) ? NaN : 0 + }; + this.intervalId = setInterval(() => { for (const key in this.animatedCounts) { const k = key as keyof typeof this.animatedCounts; const current = this.animatedCounts[k]; const target = this.targetCounts[k]; + if (isNaN(target)) { + this.animatedCounts[k] = NaN; + continue; + } + const delta = target - current; if (Math.abs(delta) > 0) { @@ -172,6 +190,7 @@ export class LandingComponent implements OnInit { } } }, stepTime); + } ngOnDestroy() { @@ -184,5 +203,5 @@ export class LandingComponent implements OnInit { this.authService.login() } - + } diff --git a/src/app/landing/metrics/doughnutchart/doughnutchart.component.html b/src/app/landing/metrics/doughnutchart/doughnutchart.component.html index 2eaed51db884397ce3aaea301dd73a08b0e0b4f2..d08cc83634ae6e9bd54462cf4a8017fce889af41 100644 --- a/src/app/landing/metrics/doughnutchart/doughnutchart.component.html +++ b/src/app/landing/metrics/doughnutchart/doughnutchart.component.html @@ -1,27 +1,27 @@
-
+
-
+
{{noDataMessage}}
-
-
+
-
+
{{chartTitle}}
-
+
-
+
  • Service Orders Last 15 Days
    -
    +
    @@ -78,7 +78,7 @@
    No Service Orders found for the last 15 days
    -
    diff --git a/src/app/landing/metrics/metrics.component.ts b/src/app/landing/metrics/metrics.component.ts index 29d214f9589c2884870bf73d68ed9219107b6062..180c86f61c11fd37534e6788babfc06b66e3f6e9 100644 --- a/src/app/landing/metrics/metrics.component.ts +++ b/src/app/landing/metrics/metrics.component.ts @@ -15,6 +15,8 @@ import { ResourcesGroupByStateItem, ServiceOrdersGroupByDayItem, ServicesGroupB import { asyncScheduler, forkJoin, scheduled } from 'rxjs'; import { catchError } from 'rxjs/internal/operators/catchError'; import * as moment from 'moment'; +import { ToastrService } from 'ngx-toastr'; + @Component({ selector: 'app-landing', @@ -30,30 +32,31 @@ export class MetricsComponent implements OnInit { private serviceMetricsService: ServiceMetricsApiService, private resourceMetricsService: ResourceMetricsApiService, private serviceOrderMetricsService: ServiceOrderMetricsApiService, - private nfvMetricsService: NfvMetricsApiService + private nfvMetricsService: NfvMetricsApiService, + private toast: ToastrService ) { } isLoading: boolean = true; config: IAppConfig loggedIn: boolean - registeredUsers = 9999; - activeServices = 9999; - registeredNSDs = 9999; - registeredVNFs = 9999; - registeredMANO = 9999; - registeredResourceSpecs = 9999; - publishedServiceSpecs = 9999; - availableResources = 9999; - activeServiceOrders = 9999; - publishedProductOfferings = 9999; - totalCreatedServices = 9999; - totalCompletedOrders = 9999; - totalResources = 9999; - serviceOrdersTotal15days = 9999; - serviceOrdersTotalMonth = 9999; - servicesTotalMonth = 9999; - resourcesTotalMonth = 9999; + registeredUsers = NaN; + activeServices = NaN; + registeredNSDs = NaN; + registeredVNFs = NaN; + registeredMANO = NaN; + registeredResourceSpecs = NaN; + publishedServiceSpecs = NaN; + availableResources = NaN; + activeServiceOrders = NaN; + publishedProductOfferings = NaN; + totalCreatedServices = NaN; + totalCompletedOrders = NaN; + totalResources = NaN; + serviceOrdersTotal15days = NaN; + serviceOrdersTotalMonth = NaN; + servicesTotalMonth = NaN; + resourcesTotalMonth = NaN; serviceOrdersByState = []; servicesByState: ServicesGroupByStateItem[]; @@ -118,8 +121,8 @@ export class MetricsComponent implements OnInit { datasets: [ { data: [], - backgroundColor: ['#428bca', '#42ca74', '#c5ca42' ], - hoverBackgroundColor: ['#235e91', '#24a34a', '#8d911f'], + backgroundColor: ['#fd8f00', '#28a745', '#dc3545' ], + hoverBackgroundColor: ['#d27700', '#1e873d', '#941822'], hoverBorderColor: 'white' } ], @@ -131,8 +134,8 @@ export class MetricsComponent implements OnInit { datasets: [ { data: [], - backgroundColor: ['#428bca', '#42ca74', '#c5ca42', '#ca42c1', '#d91424'], - hoverBackgroundColor: ['#235e91', '#24a34a', '#8d911f', '#871880', '#941822'], + backgroundColor: ['#428bca', '#cab642ff', '#fd8f00', '#28a745', '#dc3545'], + hoverBackgroundColor: ['#235e91', '#8d911f', '#d27700', '#1e873d', '#941822'], hoverBorderColor: 'white', } ], @@ -145,8 +148,8 @@ export class MetricsComponent implements OnInit { datasets: [ { data: [], - backgroundColor: ['#428bca', '#c5ca42', '#42ca74', '#d91424'], - hoverBackgroundColor: ['#235e91', '#8d911f', '#24a34a', '#941822'], + backgroundColor: ['#fd8f00', '#a2a3a4', '#28a745', '#d91424'], + hoverBackgroundColor: ['#d27700', '#818181', '#1e873d', '#941822'], hoverBorderColor: 'white' } ] @@ -168,85 +171,85 @@ export class MetricsComponent implements OnInit { forkJoin({ registeredMANO: this.nfvMetricsService.getRegisteredManoProviders().pipe( catchError(error => { - console.error('Failed to load registered MANO providers', error); - return scheduled([{ registeredManoProviders: this.registeredMANO }], asyncScheduler); + this.toast.error('API services are not responding. Please verify service health.'); + return scheduled([{ registeredManoProviders: NaN }], asyncScheduler); }) ), registeredNSDs: this.nfvMetricsService.getRegisteredNsds().pipe( catchError(error => { - console.error('Failed to load registered NSDs', error); - return scheduled([{ registeredNSDs: this.registeredNSDs }], asyncScheduler); + this.toast.error('API services are not responding. Please verify service health.'); + return scheduled([{ registeredNSDs: NaN }], asyncScheduler); }) ), registeredVNFs: this.nfvMetricsService.getRegisteredVnfs().pipe( catchError(error => { - console.error('Failed to load registered VNFs', error); - return scheduled([{ registeredVNFs: this.registeredVNFs }], asyncScheduler); + this.toast.error('API services are not responding. Please verify service health.'); + return scheduled([{ registeredVNFs: NaN }], asyncScheduler); }) ), registeredUsers: this.generalMetricsService.getRegisteredIndividuals().pipe( catchError(error => { - console.error('Failed to load registered users', error); - return scheduled([{ registeredIndividuals: this.registeredUsers }], asyncScheduler); + this.toast.error('API services are not responding. Please verify service health.'); + return scheduled([{ registeredIndividuals: NaN }], asyncScheduler); }) ), publishedServiceSpecs: this.generalMetricsService.getPublishedServiceSpecifications().pipe( catchError(error => { - console.error('Failed to load published specs', error); - return scheduled([{ publishedServiceSpecifications: this.publishedServiceSpecs }], asyncScheduler); + this.toast.error('API services are not responding. Please verify service health.'); + return scheduled([{ publishedServiceSpecifications: NaN }], asyncScheduler); }) ), registeredResourceSpecs: this.generalMetricsService.getRegisteredResourceSpecifications().pipe( catchError(error => { - console.error('Failed to load resource specs', error); - return scheduled([{ registeredResourceSpecifications: this.registeredResourceSpecs }], asyncScheduler); + this.toast.error('API services are not responding. Please verify service health.'); + return scheduled([{ registeredResourceSpecifications: NaN }], asyncScheduler); }) ), totalCreatedServices: this.serviceMetricsService.getTotalServices().pipe( catchError(error => { - console.error('Failed to load total services', error); - return scheduled([{ totalServices: this.totalCreatedServices }], asyncScheduler); + this.toast.error('API services are not responding. Please verify service health.'); + return scheduled([{ totalServices: NaN }], asyncScheduler); }) ), activeServices: this.serviceMetricsService.getTotalServices({ state: 'ACTIVE' }).pipe( catchError(error => { - console.error('Failed to load active services', error); - return scheduled([{ totalServices: this.activeServices }], asyncScheduler); + this.toast.error('API services are not responding. Please verify service health.'); + return scheduled([{ totalServices: NaN }], asyncScheduler); }) ), totalResources: this.resourceMetricsService.getTotalResources().pipe( catchError(error => { - console.error('Failed to load total resources', error); - return scheduled([{ totalResources: this.totalResources }], asyncScheduler); + this.toast.error('API services are not responding. Please verify service health.'); + return scheduled([{ totalResources: NaN }], asyncScheduler); }) ), availableResources: this.resourceMetricsService.getTotalResources({ state: 'AVAILABLE' }).pipe( catchError(error => { - console.error('Failed to load available resources', error); - return scheduled([{ totalResources: this.availableResources }], asyncScheduler); + this.toast.error('API services are not responding. Please verify service health.'); + return scheduled([{ totalResources: NaN }], asyncScheduler); }) ), activeServiceOrders: this.serviceOrderMetricsService.getTotalActiveServiceOrders().pipe( catchError(error => { - console.error('Failed to load active service orders', error); - return scheduled([{ activeServiceOrders: this.activeServiceOrders }], asyncScheduler); + this.toast.error('API services are not responding. Please verify service health.'); + return scheduled([{ activeServiceOrders: NaN }], asyncScheduler); }) ), totalCompletedOrders: this.serviceOrderMetricsService.getTotalServiceOrders({ state: 'COMPLETED' }).pipe( catchError(error => { - console.error('Failed to load completed service orders', error); - return scheduled([{ totalServiceOrders: this.totalCompletedOrders }], asyncScheduler); + this.toast.error('API services are not responding. Please verify service health.'); + return scheduled([{ totalServiceOrders: NaN }], asyncScheduler); }) ), serviceOrdersTotal15days: this.serviceOrderMetricsService.getServiceOrdersGroupedByDay({ starttime, endtime }).pipe( catchError(error => { - console.error('Failed to load service orders by day', error); + this.toast.error('API services are not responding. Please verify service health.'); return scheduled([{ serviceOrders:{ total: this.serviceOrdersTotal15days } }], asyncScheduler); }) ), serviceOrdersGroupedByDay: this.serviceOrderMetricsService.getServiceOrdersGroupedByDay({ starttime, endtime }).pipe( catchError(error => { - console.error('Failed to load service orders by day', error); + this.toast.error('API services are not responding. Please verify service health.'); const mockGroupByDay = this.barChartLabels.map(label => { const [day, month] = label.split('/').map(Number); const isoDate = new Date(Date.UTC(new Date().getFullYear(), month - 1, day)).toISOString(); @@ -266,13 +269,13 @@ export class MetricsComponent implements OnInit { ), serviceOrdersTotalMonth: this.serviceOrderMetricsService.getServiceOrdersGroupedByState({ starttime: starttimeMonth, endtime }).pipe( catchError(error => { - console.error('Failed to load service orders by state', error); + this.toast.error('API services are not responding. Please verify service health.'); return scheduled([{ serviceOrders:{ total: this.serviceOrdersTotalMonth } }], asyncScheduler); }) ), serviceOrdersGroupedByState: this.serviceOrderMetricsService.getServiceOrdersGroupedByState({ starttime: starttimeMonth, endtime }).pipe( catchError(error => { - console.error('Failed to load service orders by state', error); + this.toast.error('API services are not responding. Please verify service health.'); return scheduled([{ serviceOrders: { aggregations: { @@ -287,13 +290,13 @@ export class MetricsComponent implements OnInit { ), resourcesTotalMonth: this.resourceMetricsService.getResourcesGroupedByState({ starttime: starttimeMonth, endtime }).pipe( catchError(error => { - console.error('Failed to load resources by state', error); + this.toast.error('API services are not responding. Please verify service health.'); return scheduled([{ resources:{ total: this.resourcesTotalMonth } }], asyncScheduler); }) ), resourcesGroupedByState: this.resourceMetricsService.getResourcesGroupedByState({ starttime: starttimeMonth, endtime }).pipe( catchError(error => { - console.error('Failed to load resources by state', error); + this.toast.error('API services are not responding. Please verify service health.'); return scheduled([{ resources: { aggregations: { @@ -308,13 +311,13 @@ export class MetricsComponent implements OnInit { ), servicesTotalMonth: this.serviceMetricsService.getServicesGroupedByState({ starttime: starttimeMonth, endtime }).pipe( catchError(error => { - console.error('Failed to load services by state', error); + this.toast.error('API services are not responding. Please verify service health.'); return scheduled([{ services:{ total: this.servicesTotalMonth } }], asyncScheduler); }) ), servicesGroupedByState: this.serviceMetricsService.getServicesGroupedByState({ starttime: starttimeMonth, endtime }).pipe( catchError(error => { - console.error('Failed to load services by state', error); + this.toast.error('API services are not responding. Please verify service health.'); return scheduled([{ services: { aggregations: { @@ -365,6 +368,7 @@ export class MetricsComponent implements OnInit { .filter(item => chartLabelsServices.includes(item.key)); this.servicesData.datasets[0].data = this.servicesByState.map(data => data.count); this.isLoading = false; + }); } @@ -373,6 +377,9 @@ export class MetricsComponent implements OnInit { this.authService.login() } + isNaN(value: any): boolean { + return isNaN(value); + } chartOptions: ChartConfiguration<'doughnut'>['options'] = { responsive: true, diff --git a/src/app/landing/metrics/statuscard/statuscard.component.html b/src/app/landing/metrics/statuscard/statuscard.component.html index bdfc87762240a481973ceb85c6eeebd74eec63b3..cef80385b63005876404c7c09b9304aa26aa6734 100644 --- a/src/app/landing/metrics/statuscard/statuscard.component.html +++ b/src/app/landing/metrics/statuscard/statuscard.component.html @@ -21,10 +21,8 @@
    -
    - -
    -
    + +
    @@ -49,13 +47,17 @@
    -
    {{statusStats}}
    +
    +
    + +
    + +
    {{statusStats}}
    +
    +
    -
    - -
    -

    {{statusTitle}}

    +

    {{statusTitle}}

    diff --git a/src/app/landing/metrics/statuscard/statuscard.component.scss b/src/app/landing/metrics/statuscard/statuscard.component.scss index 3a55ea16ac11241b2eadd01ebd52594db065ff3f..e08e37a861d4f09f201cb5e03a12fab3b05bc193 100644 --- a/src/app/landing/metrics/statuscard/statuscard.component.scss +++ b/src/app/landing/metrics/statuscard/statuscard.component.scss @@ -50,6 +50,10 @@ font-size: 0.9rem; } +.status-stats { + font-weight: 700; +} + .portal-button { color: #0078AE; } diff --git a/src/app/landing/metrics/statuscard/statuscard.component.ts b/src/app/landing/metrics/statuscard/statuscard.component.ts index a7162037af0a4fa1cdda79851edc7f55d9eebe54..eecabe92dea9564e775930afc7520af443db0402 100644 --- a/src/app/landing/metrics/statuscard/statuscard.component.ts +++ b/src/app/landing/metrics/statuscard/statuscard.component.ts @@ -19,5 +19,9 @@ export class StatusCardComponent implements OnInit { ngOnInit(): void { } + + isNaN(value: any): boolean { + return isNaN(value); + } } \ No newline at end of file diff --git a/src/app/openApis/productOrderingManagement/api-configuration.ts b/src/app/openApis/productOrderingManagement/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..27e795c2ba98215bf3df38e848c8de0967d0e2be --- /dev/null +++ b/src/app/openApis/productOrderingManagement/api-configuration.ts @@ -0,0 +1,22 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { Injectable } from '@angular/core'; + +/** + * Global configuration + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = 'https://portal.openslice.eu/tmf-api'; +} + +/** + * Parameters for `ApiModule.forRoot()` + */ +export interface ApiConfigurationParams { + rootUrl?: string; +} diff --git a/src/app/openApis/productOrderingManagement/api.module.ts b/src/app/openApis/productOrderingManagement/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..91ee782eaa127b12ff16009f77486bc2fa1f81ce --- /dev/null +++ b/src/app/openApis/productOrderingManagement/api.module.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationParams } from './api-configuration'; + +import { ProductOrderService } from './services/product-order.service'; +import { ListenerService } from './services/listener.service'; +import { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +import { HubService } from './services/hub.service'; +import { EventsSubscriptionService } from './services/events-subscription.service'; +import { CancelProductOrderService } from './services/cancel-product-order.service'; + +/** + * Module that provides all services and configuration. + */ +@NgModule({ + imports: [], + exports: [], + declarations: [], + providers: [ + ProductOrderService, + ListenerService, + NotificationListenersClientSideService, + HubService, + EventsSubscriptionService, + CancelProductOrderService, + ApiConfiguration + ], +}) +export class ApiModule { + static forRoot(params: ApiConfigurationParams): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: params + } + ] + } + } + + constructor( + @Optional() @SkipSelf() parentModule: ApiModule, + @Optional() http: HttpClient + ) { + if (parentModule) { + throw new Error('ApiModule is already loaded. Import in your base AppModule only.'); + } + if (!http) { + throw new Error('You need to import the HttpClientModule in your AppModule! \n' + + 'See also https://github.com/angular/angular/issues/20575'); + } + } +} diff --git a/src/app/openApis/productOrderingManagement/base-service.ts b/src/app/openApis/productOrderingManagement/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..7bb77d7c45d988360808973f608eb2f9e808819b --- /dev/null +++ b/src/app/openApis/productOrderingManagement/base-service.ts @@ -0,0 +1,36 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Base class for services + */ +@Injectable() +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl?: string; + + /** + * Returns the root url for all operations in this service. If not set directly in this + * service, will fallback to `ApiConfiguration.rootUrl`. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } +} diff --git a/src/app/openApis/productOrderingManagement/fn/cancel-product-order/create-cancel-product-order.ts b/src/app/openApis/productOrderingManagement/fn/cancel-product-order/create-cancel-product-order.ts new file mode 100644 index 0000000000000000000000000000000000000000..6fbe5ffcd57de87029550a9ace7d9e5e35d257cf --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/cancel-product-order/create-cancel-product-order.ts @@ -0,0 +1,33 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { CancelProductOrderCreate } from '../../models/cancel-product-order-create'; + +export interface CreateCancelProductOrder$Params { + body: CancelProductOrderCreate +} + +export function createCancelProductOrder(http: HttpClient, rootUrl: string, params: CreateCancelProductOrder$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, createCancelProductOrder.PATH, 'post'); + if (params) { + rb.body(params.body, 'application/json;charset=utf-8'); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +createCancelProductOrder.PATH = '/cancelProductOrder'; diff --git a/src/app/openApis/productOrderingManagement/fn/cancel-product-order/list-cancel-product-order.ts b/src/app/openApis/productOrderingManagement/fn/cancel-product-order/list-cancel-product-order.ts new file mode 100644 index 0000000000000000000000000000000000000000..77384860c70a50d42d809c6a586ecdfade4badda --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/cancel-product-order/list-cancel-product-order.ts @@ -0,0 +1,49 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { CancelProductOrder } from '../../models/cancel-product-order'; + +export interface ListCancelProductOrder$Params { + +/** + * Comma-separated properties to be provided in response + */ + fields?: string; + +/** + * Requested index for start of resources to be provided in response + */ + offset?: number; + +/** + * Requested number of resources to be provided in response + */ + limit?: number; +} + +export function listCancelProductOrder(http: HttpClient, rootUrl: string, params?: ListCancelProductOrder$Params, context?: HttpContext): Observable>> { + const rb = new RequestBuilder(rootUrl, listCancelProductOrder.PATH, 'get'); + if (params) { + rb.query('fields', params.fields, {}); + rb.query('offset', params.offset, {}); + rb.query('limit', params.limit, {}); + } + + return http.request( + rb.build({ responseType: 'json', accept: 'application/json;charset=utf-8', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return r as StrictHttpResponse>; + }) + ); +} + +listCancelProductOrder.PATH = '/cancelProductOrder'; diff --git a/src/app/openApis/productOrderingManagement/fn/cancel-product-order/retrieve-cancel-product-order.ts b/src/app/openApis/productOrderingManagement/fn/cancel-product-order/retrieve-cancel-product-order.ts new file mode 100644 index 0000000000000000000000000000000000000000..1abf647ea6f737c538e99a7708ca4f526e4bd9ce --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/cancel-product-order/retrieve-cancel-product-order.ts @@ -0,0 +1,43 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { CancelProductOrder } from '../../models/cancel-product-order'; + +export interface RetrieveCancelProductOrder$Params { + +/** + * Identifier of the CancelProductOrder + */ + id: string; + +/** + * Comma-separated properties to provide in response + */ + fields?: string; +} + +export function retrieveCancelProductOrder(http: HttpClient, rootUrl: string, params: RetrieveCancelProductOrder$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, retrieveCancelProductOrder.PATH, 'get'); + if (params) { + rb.path('id', params.id, {}); + rb.query('fields', params.fields, {}); + } + + return http.request( + rb.build({ responseType: 'json', accept: 'application/json;charset=utf-8', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return r as StrictHttpResponse; + }) + ); +} + +retrieveCancelProductOrder.PATH = '/cancelProductOrder/{id}'; diff --git a/src/app/openApis/productOrderingManagement/fn/hub/register-listener.ts b/src/app/openApis/productOrderingManagement/fn/hub/register-listener.ts new file mode 100644 index 0000000000000000000000000000000000000000..4c3e3bedf473629d9450f00e77c8d3b9c8e66339 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/hub/register-listener.ts @@ -0,0 +1,33 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { EventSubscriptionInput } from '../../models/event-subscription-input'; + +export interface RegisterListener$Params { + body: EventSubscriptionInput +} + +export function registerListener(http: HttpClient, rootUrl: string, params: RegisterListener$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, registerListener.PATH, 'post'); + if (params) { + rb.body(params.body, 'application/json;charset=utf-8'); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +registerListener.PATH = '/productOrderingManagement/v4/hub'; diff --git a/src/app/openApis/productOrderingManagement/fn/hub/unregister-listener.ts b/src/app/openApis/productOrderingManagement/fn/hub/unregister-listener.ts new file mode 100644 index 0000000000000000000000000000000000000000..c225b70ae394234f2ae640358e7ddd56d97b15f7 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/hub/unregister-listener.ts @@ -0,0 +1,36 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + + +export interface UnregisterListener$Params { + +/** + * The id of the registered listener + */ + id: string; +} + +export function unregisterListener(http: HttpClient, rootUrl: string, params: UnregisterListener$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, unregisterListener.PATH, 'delete'); + if (params) { + rb.path('id', params.id, {}); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +unregisterListener.PATH = '/productOrderingManagement/v4/hub/{id}'; diff --git a/src/app/openApis/productOrderingManagement/fn/listener/listen-to-cancel-product-order-create-event.ts b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-cancel-product-order-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..597ffb6fad48260d0de051bc59e3089426614a91 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-cancel-product-order-create-event.ts @@ -0,0 +1,33 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { CancelProductOrderCreateEvent } from '../../models/cancel-product-order-create-event'; + +export interface ListenToCancelProductOrderCreateEvent$Params { + body: CancelProductOrderCreateEvent +} + +export function listenToCancelProductOrderCreateEvent(http: HttpClient, rootUrl: string, params: ListenToCancelProductOrderCreateEvent$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, listenToCancelProductOrderCreateEvent.PATH, 'post'); + if (params) { + rb.body(params.body, 'application/json;charset=utf-8'); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +listenToCancelProductOrderCreateEvent.PATH = '/productOrderingManagement/v4/listener/cancelProductOrderCreateEvent'; diff --git a/src/app/openApis/productOrderingManagement/fn/listener/listen-to-cancel-product-order-information-required-event.ts b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-cancel-product-order-information-required-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..900e7a3d824a9f82e92a27b493c34333b377b380 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-cancel-product-order-information-required-event.ts @@ -0,0 +1,33 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { CancelProductOrderInformationRequiredEvent } from '../../models/cancel-product-order-information-required-event'; + +export interface ListenToCancelProductOrderInformationRequiredEvent$Params { + body: CancelProductOrderInformationRequiredEvent +} + +export function listenToCancelProductOrderInformationRequiredEvent(http: HttpClient, rootUrl: string, params: ListenToCancelProductOrderInformationRequiredEvent$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, listenToCancelProductOrderInformationRequiredEvent.PATH, 'post'); + if (params) { + rb.body(params.body, 'application/json;charset=utf-8'); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +listenToCancelProductOrderInformationRequiredEvent.PATH = '/productOrderingManagement/v4/listener/cancelProductOrderInformationRequiredEvent'; diff --git a/src/app/openApis/productOrderingManagement/fn/listener/listen-to-cancel-product-order-state-change-event.ts b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-cancel-product-order-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..cc16411df3871e55d79ab1e55a57b1360afee153 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-cancel-product-order-state-change-event.ts @@ -0,0 +1,33 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { CancelProductOrderStateChangeEvent } from '../../models/cancel-product-order-state-change-event'; + +export interface ListenToCancelProductOrderStateChangeEvent$Params { + body: CancelProductOrderStateChangeEvent +} + +export function listenToCancelProductOrderStateChangeEvent(http: HttpClient, rootUrl: string, params: ListenToCancelProductOrderStateChangeEvent$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, listenToCancelProductOrderStateChangeEvent.PATH, 'post'); + if (params) { + rb.body(params.body, 'application/json;charset=utf-8'); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +listenToCancelProductOrderStateChangeEvent.PATH = '/productOrderingManagement/v4/listener/cancelProductOrderStateChangeEvent'; diff --git a/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-attribute-value-change-event.ts b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..5f00d6b02a10a196b6c3e765980162f367e4d3a3 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-attribute-value-change-event.ts @@ -0,0 +1,33 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { ProductOrderAttributeValueChangeEvent } from '../../models/product-order-attribute-value-change-event'; + +export interface ListenToProductOrderAttributeValueChangeEvent$Params { + body: ProductOrderAttributeValueChangeEvent +} + +export function listenToProductOrderAttributeValueChangeEvent(http: HttpClient, rootUrl: string, params: ListenToProductOrderAttributeValueChangeEvent$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, listenToProductOrderAttributeValueChangeEvent.PATH, 'post'); + if (params) { + rb.body(params.body, 'application/json;charset=utf-8'); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +listenToProductOrderAttributeValueChangeEvent.PATH = '/productOrderingManagement/v4/listener/productOrderAttributeValueChangeEvent'; diff --git a/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-create-event.ts b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..e65dca9fa07f7fe5dd9978c6c895dde50f22a690 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-create-event.ts @@ -0,0 +1,33 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { ProductOrderCreateEvent } from '../../models/product-order-create-event'; + +export interface ListenToProductOrderCreateEvent$Params { + body: ProductOrderCreateEvent +} + +export function listenToProductOrderCreateEvent(http: HttpClient, rootUrl: string, params: ListenToProductOrderCreateEvent$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, listenToProductOrderCreateEvent.PATH, 'post'); + if (params) { + rb.body(params.body, 'application/json;charset=utf-8'); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +listenToProductOrderCreateEvent.PATH = '/productOrderingManagement/v4/listener/productOrderCreateEvent'; diff --git a/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-delete-event.ts b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..2ccb89de64d304b7a73610dd77964f4da14a6dc8 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-delete-event.ts @@ -0,0 +1,33 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { ProductOrderDeleteEvent } from '../../models/product-order-delete-event'; + +export interface ListenToProductOrderDeleteEvent$Params { + body: ProductOrderDeleteEvent +} + +export function listenToProductOrderDeleteEvent(http: HttpClient, rootUrl: string, params: ListenToProductOrderDeleteEvent$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, listenToProductOrderDeleteEvent.PATH, 'post'); + if (params) { + rb.body(params.body, 'application/json;charset=utf-8'); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +listenToProductOrderDeleteEvent.PATH = '/productOrderingManagement/v4/listener/productOrderDeleteEvent'; diff --git a/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-information-required-event.ts b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-information-required-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..cd2583784a5c86d8555e83abea66b23f855b3136 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-information-required-event.ts @@ -0,0 +1,33 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { ProductOrderInformationRequiredEvent } from '../../models/product-order-information-required-event'; + +export interface ListenToProductOrderInformationRequiredEvent$Params { + body: ProductOrderInformationRequiredEvent +} + +export function listenToProductOrderInformationRequiredEvent(http: HttpClient, rootUrl: string, params: ListenToProductOrderInformationRequiredEvent$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, listenToProductOrderInformationRequiredEvent.PATH, 'post'); + if (params) { + rb.body(params.body, 'application/json;charset=utf-8'); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +listenToProductOrderInformationRequiredEvent.PATH = '/productOrderingManagement/v4/listener/productOrderInformationRequiredEvent'; diff --git a/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-state-change-event.ts b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..40e4b93a4ad4e22db39ac53ab1b95634a7c5aebd --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/listener/listen-to-product-order-state-change-event.ts @@ -0,0 +1,33 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { ProductOrderStateChangeEvent } from '../../models/product-order-state-change-event'; + +export interface ListenToProductOrderStateChangeEvent$Params { + body: ProductOrderStateChangeEvent +} + +export function listenToProductOrderStateChangeEvent(http: HttpClient, rootUrl: string, params: ListenToProductOrderStateChangeEvent$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, listenToProductOrderStateChangeEvent.PATH, 'post'); + if (params) { + rb.body(params.body, 'application/json;charset=utf-8'); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +listenToProductOrderStateChangeEvent.PATH = '/productOrderingManagement/v4/listener/productOrderStateChangeEvent'; diff --git a/src/app/openApis/productOrderingManagement/fn/product-order/create-product-order.ts b/src/app/openApis/productOrderingManagement/fn/product-order/create-product-order.ts new file mode 100644 index 0000000000000000000000000000000000000000..3f87735dbceba0a9171976768d512ef7a33aa93c --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/product-order/create-product-order.ts @@ -0,0 +1,34 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { ProductOrderCreate } from '../../models/product-order-create'; +import { ProductOrder } from '../../models'; + +export interface CreateProductOrder$Params { + body: ProductOrderCreate +} + +export function createProductOrder(http: HttpClient, rootUrl: string, params: CreateProductOrder$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, createProductOrder.PATH, 'post'); + if (params) { + rb.body(params.body, 'application/json;charset=utf-8'); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +createProductOrder.PATH = '/productOrderingManagement/v4/productOrder'; diff --git a/src/app/openApis/productOrderingManagement/fn/product-order/delete-product-order.ts b/src/app/openApis/productOrderingManagement/fn/product-order/delete-product-order.ts new file mode 100644 index 0000000000000000000000000000000000000000..4aff62c17c76133ffc81df903a93708532dc2968 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/product-order/delete-product-order.ts @@ -0,0 +1,36 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + + +export interface DeleteProductOrder$Params { + +/** + * Identifier of the ProductOrder + */ + id: string; +} + +export function deleteProductOrder(http: HttpClient, rootUrl: string, params: DeleteProductOrder$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, deleteProductOrder.PATH, 'delete'); + if (params) { + rb.path('id', params.id, {}); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +deleteProductOrder.PATH = '/productOrderingManagement/v4/productOrder/{id}'; diff --git a/src/app/openApis/productOrderingManagement/fn/product-order/get-image-product-order-item-relationship-graph.ts b/src/app/openApis/productOrderingManagement/fn/product-order/get-image-product-order-item-relationship-graph.ts new file mode 100644 index 0000000000000000000000000000000000000000..60aab18bf13d4754036066fd648468e0074fec2f --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/product-order/get-image-product-order-item-relationship-graph.ts @@ -0,0 +1,42 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + + +export interface GetImageProductOrderItemRelationshipGraph$Params { + +/** + * Identifier of the ProductOrder + */ + id: string; + +/** + * Identifier of the ProductOrderItem + */ + itemid: string; +} + +export function getImageProductOrderItemRelationshipGraph(http: HttpClient, rootUrl: string, params: GetImageProductOrderItemRelationshipGraph$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, getImageProductOrderItemRelationshipGraph.PATH, 'get'); + if (params) { + rb.path('id', params.id, {}); + rb.path('itemid', params.itemid, {}); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +getImageProductOrderItemRelationshipGraph.PATH = '/productOrderingManagement/v4/productOrder/{id}/item/{itemid}/relationship_graph'; diff --git a/src/app/openApis/productOrderingManagement/fn/product-order/get-image-product-order-notes-graph.ts b/src/app/openApis/productOrderingManagement/fn/product-order/get-image-product-order-notes-graph.ts new file mode 100644 index 0000000000000000000000000000000000000000..9b2f33cdaaa35dda023a35ec2acede5f273ee9db --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/product-order/get-image-product-order-notes-graph.ts @@ -0,0 +1,36 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + + +export interface GetImageProductOrderNotesGraph$Params { + +/** + * Identifier of the ProductOrder + */ + id: string; +} + +export function getImageProductOrderNotesGraph(http: HttpClient, rootUrl: string, params: GetImageProductOrderNotesGraph$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, getImageProductOrderNotesGraph.PATH, 'get'); + if (params) { + rb.path('id', params.id, {}); + } + + return http.request( + rb.build({ responseType: 'text', accept: '*/*', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse; + }) + ); +} + +getImageProductOrderNotesGraph.PATH = '/productOrderingManagement/v4/productOrder/{id}/notes_graph'; diff --git a/src/app/openApis/productOrderingManagement/fn/product-order/list-product-order.ts b/src/app/openApis/productOrderingManagement/fn/product-order/list-product-order.ts new file mode 100644 index 0000000000000000000000000000000000000000..e3ecebe2eb12174f0a93b2fc515ccd13af158dae --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/product-order/list-product-order.ts @@ -0,0 +1,61 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { ProductOrder } from '../../models/product-order'; + +export interface ListProductOrder$Params { + +/** + * Comma-separated properties to be provided in response + */ + fields?: string; + +/** + * Requested index for start of resources to be provided in response + */ + offset?: number; + +/** + * Requested number of resources to be provided in response + */ + limit?: number; + +/** + * Requested starttime for start of resources to be provided in response + */ + starttime?: string; + +/** + * Requested endtime for start of resources to be provided in response + */ + endtime?: string; +} + +export function listProductOrder(http: HttpClient, rootUrl: string, params?: ListProductOrder$Params, context?: HttpContext): Observable>> { + const rb = new RequestBuilder(rootUrl, listProductOrder.PATH, 'get'); + if (params) { + rb.query('fields', params.fields, {}); + rb.query('offset', params.offset, {}); + rb.query('limit', params.limit, {}); + rb.query('starttime', params.starttime, {}); + rb.query('endtime', params.endtime, {}); + } + + return http.request( + rb.build({ responseType: 'json', accept: 'application/json;charset=utf-8', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return r as StrictHttpResponse>; + }) + ); +} + +listProductOrder.PATH = '/productOrderingManagement/v4/productOrder'; diff --git a/src/app/openApis/productOrderingManagement/fn/product-order/patch-product-order.ts b/src/app/openApis/productOrderingManagement/fn/product-order/patch-product-order.ts new file mode 100644 index 0000000000000000000000000000000000000000..80f976c4d33c47be8a994bc1c4c04652574538e6 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/product-order/patch-product-order.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { ProductOrder } from '../../models/product-order'; +import { ProductOrderUpdate } from '../../models/product-order-update'; + +export interface PatchProductOrder$Params { + +/** + * Identifier of the ProductOrder + */ + id: string; + body: ProductOrderUpdate +} + +export function patchProductOrder(http: HttpClient, rootUrl: string, params: PatchProductOrder$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, patchProductOrder.PATH, 'patch'); + if (params) { + rb.path('id', params.id, {}); + rb.body(params.body, 'application/json;charset=utf-8'); + } + + return http.request( + rb.build({ responseType: 'json', accept: 'application/json;charset=utf-8', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return r as StrictHttpResponse; + }) + ); +} + +patchProductOrder.PATH = '/productOrderingManagement/v4/productOrder/{id}'; diff --git a/src/app/openApis/productOrderingManagement/fn/product-order/retrieve-product-order.ts b/src/app/openApis/productOrderingManagement/fn/product-order/retrieve-product-order.ts new file mode 100644 index 0000000000000000000000000000000000000000..bc402edc65c7df2140d7dc7c54f46a32bd5b5e67 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/fn/product-order/retrieve-product-order.ts @@ -0,0 +1,43 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { StrictHttpResponse } from '../../strict-http-response'; +import { RequestBuilder } from '../../request-builder'; + +import { ProductOrder } from '../../models/product-order'; + +export interface RetrieveProductOrder$Params { + +/** + * Identifier of the ProductOrder + */ + id: string; + +/** + * Comma-separated properties to provide in response + */ + fields?: string; +} + +export function retrieveProductOrder(http: HttpClient, rootUrl: string, params: RetrieveProductOrder$Params, context?: HttpContext): Observable> { + const rb = new RequestBuilder(rootUrl, retrieveProductOrder.PATH, 'get'); + if (params) { + rb.path('id', params.id, {}); + rb.query('fields', params.fields, {}); + } + + return http.request( + rb.build({ responseType: 'json', accept: 'application/json;charset=utf-8', context }) + ).pipe( + filter((r: any): r is HttpResponse => r instanceof HttpResponse), + map((r: HttpResponse) => { + return r as StrictHttpResponse; + }) + ); +} + +retrieveProductOrder.PATH = '/productOrderingManagement/v4/productOrder/{id}'; diff --git a/src/app/openApis/productOrderingManagement/models.ts b/src/app/openApis/productOrderingManagement/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..555584ea845f6a9bcd499f9ca0a7da11cdb42109 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +export type { AgreementItemRef } from './models/agreement-item-ref'; +export type { AgreementRef } from './models/agreement-ref'; +export type { AppointmentRef } from './models/appointment-ref'; +export type { BillingAccountRef } from './models/billing-account-ref'; +export type { CancelProductOrder } from './models/cancel-product-order'; +export type { CancelProductOrderCreate } from './models/cancel-product-order-create'; +export type { CancelProductOrderCreateEvent } from './models/cancel-product-order-create-event'; +export type { CancelProductOrderCreateEventPayload } from './models/cancel-product-order-create-event-payload'; +export type { CancelProductOrderInformationRequiredEvent } from './models/cancel-product-order-information-required-event'; +export type { CancelProductOrderInformationRequiredEventPayload } from './models/cancel-product-order-information-required-event-payload'; +export type { CancelProductOrderStateChangeEvent } from './models/cancel-product-order-state-change-event'; +export type { CancelProductOrderStateChangeEventPayload } from './models/cancel-product-order-state-change-event-payload'; +export type { Characteristic } from './models/characteristic'; +export type { EventSubscription } from './models/event-subscription'; +export type { EventSubscriptionInput } from './models/event-subscription-input'; +export type { Money } from './models/money'; +export type { Note } from './models/note'; +export type { OrderItemRelationship } from './models/order-item-relationship'; +export type { OrderPrice } from './models/order-price'; +export type { OrderTerm } from './models/order-term'; +export type { PaymentRef } from './models/payment-ref'; +export type { Price } from './models/price'; +export type { PriceAlteration } from './models/price-alteration'; +export type { ProductOfferingPriceRef } from './models/product-offering-price-ref'; +export type { ProductOfferingQualificationItemRef } from './models/product-offering-qualification-item-ref'; +export type { ProductOfferingQualificationRef } from './models/product-offering-qualification-ref'; +export type { ProductOfferingRef } from './models/product-offering-ref'; +export type { ProductOrder } from './models/product-order'; +export type { ProductOrderAttributeValueChangeEvent } from './models/product-order-attribute-value-change-event'; +export type { ProductOrderAttributeValueChangeEventPayload } from './models/product-order-attribute-value-change-event-payload'; +export type { ProductOrderCreate } from './models/product-order-create'; +export type { ProductOrderCreateEvent } from './models/product-order-create-event'; +export type { ProductOrderCreateEventPayload } from './models/product-order-create-event-payload'; +export type { ProductOrderDeleteEvent } from './models/product-order-delete-event'; +export type { ProductOrderDeleteEventPayload } from './models/product-order-delete-event-payload'; +export type { ProductOrderInformationRequiredEvent } from './models/product-order-information-required-event'; +export type { ProductOrderInformationRequiredEventPayload } from './models/product-order-information-required-event-payload'; +export type { ProductOrderItem } from './models/product-order-item'; +export type { ProductOrderRef } from './models/product-order-ref'; +export type { ProductOrderStateChangeEvent } from './models/product-order-state-change-event'; +export type { ProductOrderStateChangeEventPayload } from './models/product-order-state-change-event-payload'; +export type { ProductOrderUpdate } from './models/product-order-update'; +export type { ProductPrice } from './models/product-price'; +export type { ProductRefOrValue } from './models/product-ref-or-value'; +export type { ProductRelationship } from './models/product-relationship'; +export type { ProductSpecificationRef } from './models/product-specification-ref'; +export type { ProductTerm } from './models/product-term'; +export type { Quantity } from './models/quantity'; +export type { QuoteItemRef } from './models/quote-item-ref'; +export type { QuoteRef } from './models/quote-ref'; +export type { RelatedChannel } from './models/related-channel'; +export type { RelatedParty } from './models/related-party'; +export type { RelatedPlaceRefOrValue } from './models/related-place-ref-or-value'; +export type { RelatedProductOrderItem } from './models/related-product-order-item'; +export type { ResourceRef } from './models/resource-ref'; +export type { ServiceRef } from './models/service-ref'; +export type { TargetProductSchema } from './models/target-product-schema'; +export type { TimePeriod } from './models/time-period'; diff --git a/src/app/openApis/productOrderingManagement/models/agreement-item-ref.ts b/src/app/openApis/productOrderingManagement/models/agreement-item-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..1f806ac3768e2a4d975d90b918d15cbd6bc269ab --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/agreement-item-ref.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * Agreement reference. An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications. + */ +export interface AgreementItemRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + agreementItemId?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/agreement-ref.ts b/src/app/openApis/productOrderingManagement/models/agreement-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..137f01875002ffed76189bf52eb1bb96b0fc40ef --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/agreement-ref.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * Agreement reference. An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications. + */ +export interface AgreementRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Reference of the related entity. + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Name of the agreement + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/appointment-ref.ts b/src/app/openApis/productOrderingManagement/models/appointment-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..eb19f9897d3c5d09ea289e6ccda949cb9d4ba4c9 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/appointment-ref.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * Refers an appointment, such as a Customer presentation or internal meeting or site visit + */ +export interface AppointmentRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * An explanatory text regarding the appointment made with a party + */ + description?: string; + + /** + * The reference of the appointment + */ + href?: string; + + /** + * The identifier of the referred appointment + */ + id: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/billing-account-ref.ts b/src/app/openApis/productOrderingManagement/models/billing-account-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..a39800d7805f0e6bf17a4e8b0c379c3f164903b4 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/billing-account-ref.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * BillingAccount reference. A BillingAccount is a detailed description of a bill structure. + */ +export interface BillingAccountRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Reference of the billing account + */ + href?: string; + + /** + * Unique identifier of the billing account + */ + id: string; + + /** + * Name of the billing account + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/cancel-product-order-create-event-payload.ts b/src/app/openApis/productOrderingManagement/models/cancel-product-order-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..9f690fefd7675dab3630bdb56152698cf6e3917b --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/cancel-product-order-create-event-payload.ts @@ -0,0 +1,12 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { CancelProductOrder } from '../models/cancel-product-order'; + +/** + * The event data structure + */ +export interface CancelProductOrderCreateEventPayload { + cancelProductOrder?: CancelProductOrder; +} diff --git a/src/app/openApis/productOrderingManagement/models/cancel-product-order-create-event.ts b/src/app/openApis/productOrderingManagement/models/cancel-product-order-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..7148cc04be52b601fc1c8fcb94124e25db3d1a1b --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/cancel-product-order-create-event.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { CancelProductOrderCreateEventPayload } from '../models/cancel-product-order-create-event-payload'; + +/** + * The event data + */ +export interface CancelProductOrderCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: CancelProductOrderCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/cancel-product-order-create.ts b/src/app/openApis/productOrderingManagement/models/cancel-product-order-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..a80cfff668e59e99cd71e39a710c1e42cedab9a4 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/cancel-product-order-create.ts @@ -0,0 +1,36 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { ProductOrderRef } from '../models/product-order-ref'; + +/** + * The CancelProductOrder to be created + */ +export interface CancelProductOrderCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Reason why the order is cancelled. + */ + cancellationReason?: string; + productOrder: ProductOrderRef; + requestedCancellationDate?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/cancel-product-order-information-required-event-payload.ts b/src/app/openApis/productOrderingManagement/models/cancel-product-order-information-required-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..6914c22c49a9742242f8627232cc640d4d9c275e --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/cancel-product-order-information-required-event-payload.ts @@ -0,0 +1,12 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { CancelProductOrder } from '../models/cancel-product-order'; + +/** + * The event data structure + */ +export interface CancelProductOrderInformationRequiredEventPayload { + cancelProductOrder?: CancelProductOrder; +} diff --git a/src/app/openApis/productOrderingManagement/models/cancel-product-order-information-required-event.ts b/src/app/openApis/productOrderingManagement/models/cancel-product-order-information-required-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..d11ac9e0cd7ca32736c902448630c639f9dcc927 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/cancel-product-order-information-required-event.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { CancelProductOrderInformationRequiredEventPayload } from '../models/cancel-product-order-information-required-event-payload'; + +/** + * The event data + */ +export interface CancelProductOrderInformationRequiredEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: CancelProductOrderInformationRequiredEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification. + */ + fieldPath?: string; + + /** + * A priority. + */ + priority?: string; + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/cancel-product-order-state-change-event-payload.ts b/src/app/openApis/productOrderingManagement/models/cancel-product-order-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..42ba1dd62c127d90574a669eccc37df5adcab27f --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/cancel-product-order-state-change-event-payload.ts @@ -0,0 +1,12 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { CancelProductOrder } from '../models/cancel-product-order'; + +/** + * The event data structure + */ +export interface CancelProductOrderStateChangeEventPayload { + cancelProductOrder?: CancelProductOrder; +} diff --git a/src/app/openApis/productOrderingManagement/models/cancel-product-order-state-change-event.ts b/src/app/openApis/productOrderingManagement/models/cancel-product-order-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..08061c6a3267f2dace09b9ef8d368c58de1d617b --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/cancel-product-order-state-change-event.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { CancelProductOrderStateChangeEventPayload } from '../models/cancel-product-order-state-change-event-payload'; + +/** + * The event data + */ +export interface CancelProductOrderStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: CancelProductOrderStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/cancel-product-order.ts b/src/app/openApis/productOrderingManagement/models/cancel-product-order.ts new file mode 100644 index 0000000000000000000000000000000000000000..70b96f49ffadd1eec04fd086c7709b4c5ccbe1b2 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/cancel-product-order.ts @@ -0,0 +1,48 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { ProductOrderRef } from '../models/product-order-ref'; + +/** + * Request for cancellation an existing product order + */ +export interface CancelProductOrder { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Reason why the order is cancelled. + */ + cancellationReason?: string; + effectiveCancellationDate?: string; + + /** + * Hyperlink to access the cancellation request + */ + href?: string; + + /** + * id of the cancellation request (this is not an order id) + */ + id?: string; + productOrder: ProductOrderRef; + requestedCancellationDate?: string; + state?: 'acknowledged' | 'terminatedWithError' | 'inProgress' | 'done'; +} diff --git a/src/app/openApis/productOrderingManagement/models/characteristic.ts b/src/app/openApis/productOrderingManagement/models/characteristic.ts new file mode 100644 index 0000000000000000000000000000000000000000..e684d19d6750147e3bad8f95c84dff669990df97 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/characteristic.ts @@ -0,0 +1,43 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * Describes a given characteristic of an object or entity through a name/value pair. + */ +export interface Characteristic { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The value of the characteristic + */ + value: { +}; + + /** + * Data type of the value of the characteristic + */ + valueType?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/event-subscription-input.ts b/src/app/openApis/productOrderingManagement/models/event-subscription-input.ts new file mode 100644 index 0000000000000000000000000000000000000000..32966676953efdf7d2ae279557574db8431aadb9 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/event-subscription-input.ts @@ -0,0 +1,20 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * Data containing the callback endpoint to deliver the information + */ +export interface EventSubscriptionInput { + + /** + * The callback being registered. + */ + callback: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/event-subscription.ts b/src/app/openApis/productOrderingManagement/models/event-subscription.ts new file mode 100644 index 0000000000000000000000000000000000000000..4053833798459a92be42b9e236c38844ef02649c --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/event-subscription.ts @@ -0,0 +1,25 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscription { + + /** + * The callback being registered. + */ + callback: string; + + /** + * Id of the listener + */ + id: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/money.ts b/src/app/openApis/productOrderingManagement/models/money.ts new file mode 100644 index 0000000000000000000000000000000000000000..743815e2558203c4c395c277b6c8c12d265ff7c6 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/money.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * A base / value business entity used to represent money + */ +export interface Money { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Currency (ISO4217 norm uses 3 letters to define the currency) + */ + unit: string; + uuid?: string; + + /** + * A positive floating point number + */ + value: number; +} diff --git a/src/app/openApis/productOrderingManagement/models/note.ts b/src/app/openApis/productOrderingManagement/models/note.ts new file mode 100644 index 0000000000000000000000000000000000000000..e5ac8cbd44bb82bdd0e007f9eeff8e74bb543e58 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/note.ts @@ -0,0 +1,47 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * Extra information about a given entity + */ +export interface Note { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Author of the note + */ + author?: string; + + /** + * Date of the note + */ + date?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Describes the system from which the action related to this note was done + */ + system?: string; + + /** + * Text of the note + */ + text?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/order-item-relationship.ts b/src/app/openApis/productOrderingManagement/models/order-item-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..3d53e9ad7617f188ca05570b1fc8d7dba9068ad9 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/order-item-relationship.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +export interface OrderItemRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * The type of order item relationship + */ + relationshipType?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/order-price.ts b/src/app/openApis/productOrderingManagement/models/order-price.ts new file mode 100644 index 0000000000000000000000000000000000000000..f3d8cf2d818ca9db59cfd7456a46c3229a2ced54 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/order-price.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { BillingAccountRef } from '../models/billing-account-ref'; +import { Price } from '../models/price'; +import { PriceAlteration } from '../models/price-alteration'; +import { ProductOfferingPriceRef } from '../models/product-offering-price-ref'; + +/** + * An amount, usually of money, that represents the actual price paid by the Customer for this item or this order + */ +export interface OrderPrice { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + billingAccount?: BillingAccountRef; + + /** + * A narrative that explains in detail the semantics of this order item price. + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * A short descriptive name such as "Subscription price". + */ + name?: string; + price?: Price; + + /** + * a strucuture used to describe a price alteration + */ + priceAlteration?: Array; + + /** + * A category that describes the price, such as recurring, discount, allowance, penalty, and so forth + */ + priceType?: string; + productOfferingPrice?: ProductOfferingPriceRef; + + /** + * Could be month, week... + */ + recurringChargePeriod?: string; + + /** + * Could be minutes, GB... + */ + unitOfMeasure?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/order-term.ts b/src/app/openApis/productOrderingManagement/models/order-term.ts new file mode 100644 index 0000000000000000000000000000000000000000..1573bfda54270874322f4d3dc0edaea3877c380f --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/order-term.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { Quantity } from '../models/quantity'; + +/** + * Description of a productTerm linked to this orderItem. This represent a commitment with a duration + */ +export interface OrderTerm { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Description of the productOrderTerm + */ + description?: string; + duration?: Quantity; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name of the productOrderTerm + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/payment-ref.ts b/src/app/openApis/productOrderingManagement/models/payment-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..efeba6990516f891337fea1f0939ad374279e8ae --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/payment-ref.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * If an immediate payment has been done at the product order submission, the payment information are captured and stored (as a reference) in the order. + */ +export interface PaymentRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Reference of the related entity. + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * A name for the payment + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/price-alteration.ts b/src/app/openApis/productOrderingManagement/models/price-alteration.ts new file mode 100644 index 0000000000000000000000000000000000000000..def79b66ef2c09b5f5c4f952d1a0e02291f92921 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/price-alteration.ts @@ -0,0 +1,66 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { Price } from '../models/price'; +import { ProductOfferingPriceRef } from '../models/product-offering-price-ref'; + +/** + * Is an amount, usually of money, that modifies the price charged for an order item. + */ +export interface PriceAlteration { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Duration during which the alteration applies on the order item price (for instance 2 months free of charge for the recurring charge) + */ + applicationDuration: number; + + /** + * A narrative that explains in detail the semantics of this order item price alteration + */ + description: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name of the order item price alteration + */ + name: string; + price: Price; + + /** + * A category that describes the price such as recurring, one time and usage. + */ + priceType: string; + + /** + * Priority level for applying this alteration among all the defined alterations on the order item price + */ + priority: number; + productOfferingPrice: ProductOfferingPriceRef; + + /** + * Could be month, week... + */ + recurringChargePeriod: string; + + /** + * Could be minutes, GB... + */ + unitOfMeasure: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/price.ts b/src/app/openApis/productOrderingManagement/models/price.ts new file mode 100644 index 0000000000000000000000000000000000000000..bc1ed1b9b16265843b2ab9ffbe3e5f251dbec7a4 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/price.ts @@ -0,0 +1,55 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { Money } from '../models/money'; + +/** + * Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price Alteration. + */ +export interface Price { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType: string; + dutyFreeAmount: Money; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Percentage to apply for ProdOfferPriceAlteration + */ + percentage: number; + taxIncludedAmount: Money; + + /** + * Tax rate + */ + taxRate: number; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-offering-price-ref.ts b/src/app/openApis/productOrderingManagement/models/product-offering-price-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..d9553fda6fac5b4419c4006e4bfc117d7390169c --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-offering-price-ref.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { TimePeriod } from '../models/time-period'; + +/** + * ProductPriceOffering reference. An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased + */ +export interface ProductOfferingPriceRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'In study' | 'In design' | 'In test' | 'Active' | 'Launched' | 'Retired' | 'Obsolete' | 'Rejected'; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-offering-qualification-item-ref.ts b/src/app/openApis/productOrderingManagement/models/product-offering-qualification-item-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..b2dd4f7c37ffb11a3fe2cc41e2c99002f916b98f --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-offering-qualification-item-ref.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * It's a productOfferingQualification item that has been executed previously. + */ +export interface ProductOfferingQualificationItemRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Reference of the related entity. + */ + href?: string; + + /** + * Id of an item of a product offering qualification + */ + id: string; + + /** + * Name of the related entity. + */ + name?: string; + + /** + * Reference of the related entity. + */ + productOfferingQualificationHref?: string; + + /** + * Unique identifier of a related entity. + */ + productOfferingQualificationId: string; + + /** + * Name of the related entity. + */ + productOfferingQualificationName?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-offering-qualification-ref.ts b/src/app/openApis/productOrderingManagement/models/product-offering-qualification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..171f413714bb8cbdf11287260d16c93ba308ce55 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-offering-qualification-ref.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * It's a productOfferingQualification that has been executed previously + */ +export interface ProductOfferingQualificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Reference of the related entity. + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Name of the related entity. + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-offering-ref.ts b/src/app/openApis/productOrderingManagement/models/product-offering-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..db15164cfed00732eec3382bee847081c0b59817 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-offering-ref.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. + */ +export interface ProductOfferingRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Name of the entity + */ + name?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order-attribute-value-change-event-payload.ts b/src/app/openApis/productOrderingManagement/models/product-order-attribute-value-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..556a81dabf3aa5138449cd8618bb250596a8d459 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order-attribute-value-change-event-payload.ts @@ -0,0 +1,12 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { ProductOrder } from '../models/product-order'; + +/** + * The event data structure + */ +export interface ProductOrderAttributeValueChangeEventPayload { + productOrder?: ProductOrder; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order-attribute-value-change-event.ts b/src/app/openApis/productOrderingManagement/models/product-order-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..43bf7b9bb2ebc5ee2ef778c74f324b0297d3f00d --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order-attribute-value-change-event.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { ProductOrderAttributeValueChangeEventPayload } from '../models/product-order-attribute-value-change-event-payload'; + +/** + * The event data + */ +export interface ProductOrderAttributeValueChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ProductOrderAttributeValueChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification. + */ + fieldPath?: string; + + /** + * A priority. + */ + priority?: string; + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order-create-event-payload.ts b/src/app/openApis/productOrderingManagement/models/product-order-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..4a4b30fc5f8554c380a87049d8409bd3b8245ec1 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order-create-event-payload.ts @@ -0,0 +1,12 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { ProductOrder } from '../models/product-order'; + +/** + * The event data structure + */ +export interface ProductOrderCreateEventPayload { + productOrder?: ProductOrder; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order-create-event.ts b/src/app/openApis/productOrderingManagement/models/product-order-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..aeece8de253155ab9bc3007c122c9b4ef7d32cb3 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order-create-event.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { ProductOrderCreateEventPayload } from '../models/product-order-create-event-payload'; + +/** + * The event data + */ +export interface ProductOrderCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ProductOrderCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order-create.ts b/src/app/openApis/productOrderingManagement/models/product-order-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..01ee3e06e4ff26b96e753f4ac54ba4994eb96832 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order-create.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { AgreementRef } from '../models/agreement-ref'; +import { BillingAccountRef } from '../models/billing-account-ref'; +import { Note } from '../models/note'; +import { OrderPrice } from '../models/order-price'; +import { PaymentRef } from '../models/payment-ref'; +import { ProductOfferingQualificationRef } from '../models/product-offering-qualification-ref'; +import { ProductOrderItem } from '../models/product-order-item'; +import { QuoteRef } from '../models/quote-ref'; +import { RelatedChannel } from '../models/related-channel'; +import { RelatedParty } from '../models/related-party'; + +/** + * The ProductOrder to be created + */ +export interface ProductOrderCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * A reference to an agreement defined in the context of the product order + */ + agreement?: Array; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + billingAccount?: BillingAccountRef; + cancellationDate?: string; + + /** + * Reason why the order is cancelled. This is used when order is cancelled. + */ + cancellationReason?: string; + + /** + * Used to categorize the order from a business perspective that can be useful for the OM system (e.g. "enterprise", "residential", ...) + */ + category?: string; + channel?: Array; + + /** + * Description of the product order + */ + description?: string; + + /** + * ID given by the consumer and only understandable by him (to facilitate his searches afterwards) + */ + externalId?: string; + note?: Array; + + /** + * Contact attached to the order to send back information regarding this order + */ + notificationContact?: string; + orderTotalPrice?: Array; + payment?: Array; + + /** + * A way that can be used by consumers to prioritize orders in OM system (from 0 to 4 : 0 is the highest priority, and 4 the lowest) + */ + priority?: string; + productOfferingQualification?: Array; + productOrderItem: Array; + quote?: Array; + relatedParty?: Array; + + /** + * Requested delivery date from the requestor perspective + */ + requestedCompletionDate?: string; + + /** + * Order fulfillment start date wished by the requestor. This is used when, for any reason, requestor cannot allow seller to begin to operationally begin the fulfillment before a date. + */ + requestedStartDate?: string; + state?: 'INITIAL' | 'ACKNOWLEDGED' | 'REJECTED' | 'PENDING' | 'HELD' | 'INPROGRESS' | 'CANCELLED' | 'COMPLETED' | 'FAILED' | 'PARTIAL' | 'ASSESSINGCANCELLATION' | 'PENDINGCANCELLATION'; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order-delete-event-payload.ts b/src/app/openApis/productOrderingManagement/models/product-order-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..723175ea4616bd97f18fc9f2a881062562d330b5 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order-delete-event-payload.ts @@ -0,0 +1,12 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { ProductOrder } from '../models/product-order'; + +/** + * The event data structure + */ +export interface ProductOrderDeleteEventPayload { + productOrder?: ProductOrder; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order-delete-event.ts b/src/app/openApis/productOrderingManagement/models/product-order-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..59971c847f6d679ebf85c4ecaace6f335a2747f1 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order-delete-event.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { ProductOrderDeleteEventPayload } from '../models/product-order-delete-event-payload'; + +/** + * The event data + */ +export interface ProductOrderDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ProductOrderDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order-information-required-event-payload.ts b/src/app/openApis/productOrderingManagement/models/product-order-information-required-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..8968bb36dacec70ba67fabc4465991e1dd5c75c4 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order-information-required-event-payload.ts @@ -0,0 +1,12 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { ProductOrder } from '../models/product-order'; + +/** + * The event data structure + */ +export interface ProductOrderInformationRequiredEventPayload { + productOrder?: ProductOrder; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order-information-required-event.ts b/src/app/openApis/productOrderingManagement/models/product-order-information-required-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..63baf5a38d9a64d820d7737ff78e082ad19ea3c0 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order-information-required-event.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { ProductOrderInformationRequiredEventPayload } from '../models/product-order-information-required-event-payload'; + +/** + * The event data + */ +export interface ProductOrderInformationRequiredEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ProductOrderInformationRequiredEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification. + */ + fieldPath?: string; + + /** + * A priority. + */ + priority?: string; + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order-item.ts b/src/app/openApis/productOrderingManagement/models/product-order-item.ts new file mode 100644 index 0000000000000000000000000000000000000000..81768fd63575524e63882fb3465b4deb7b732f96 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order-item.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { AppointmentRef } from '../models/appointment-ref'; +import { BillingAccountRef } from '../models/billing-account-ref'; +import { OrderItemRelationship } from '../models/order-item-relationship'; +import { OrderPrice } from '../models/order-price'; +import { OrderTerm } from '../models/order-term'; +import { PaymentRef } from '../models/payment-ref'; +import { ProductOfferingQualificationItemRef } from '../models/product-offering-qualification-item-ref'; +import { ProductOfferingQualificationRef } from '../models/product-offering-qualification-ref'; +import { ProductOfferingRef } from '../models/product-offering-ref'; +import { ProductRefOrValue } from '../models/product-ref-or-value'; +import { QuoteItemRef } from '../models/quote-item-ref'; + +/** + * An identified part of the order. A product order is decomposed into one or more order items. + */ +export interface ProductOrderItem { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + action: 'ADD' | 'MODIFY' | 'DELETE' | 'NOCHANGE'; + appointment?: AppointmentRef; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + billingAccount?: BillingAccountRef; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Identifier of the line item (generally it is a sequence number 01, 02, 03, ...) + */ + id: string; + itemPrice?: Array; + itemTerm?: Array; + itemTotalPrice?: Array; + payment?: Array; + product?: ProductRefOrValue; + productOffering?: ProductOfferingRef; + productOfferingQualificationItem?: ProductOfferingQualificationItemRef; + productOrderItem?: Array; + productOrderItemRelationship?: Array; + qualification?: Array; + + /** + * Quantity ordered + */ + quantity?: number; + quoteItem?: QuoteItemRef; + state?: 'INITIAL' | 'ACKNOWLEDGED' | 'REJECTED' | 'PENDING' | 'HELD' | 'INPROGRESS' | 'CANCELLED' | 'COMPLETED' | 'FAILED' | 'ASSESSINGCANCELLATION' | 'PENDINGCANCELLATION'; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order-ref.ts b/src/app/openApis/productOrderingManagement/models/product-order-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..a943589c58e0eb24dcfcf13475c5abad29f8d137 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order-ref.ts @@ -0,0 +1,49 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * ProductOrder (ProductOrder) .The product order which the recommendation is related with. + */ +export interface ProductOrderRef { + '@baseType'?: string; + '@referredType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Reference of the related entity. + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Name of the related entity. + */ + name?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order-state-change-event-payload.ts b/src/app/openApis/productOrderingManagement/models/product-order-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..52f209c4bd37c5bc6d93b680f2ce33bbf3c2ff05 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order-state-change-event-payload.ts @@ -0,0 +1,12 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { ProductOrder } from '../models/product-order'; + +/** + * The event data structure + */ +export interface ProductOrderStateChangeEventPayload { + productOrder?: ProductOrder; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order-state-change-event.ts b/src/app/openApis/productOrderingManagement/models/product-order-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..4184e17a978171e0cd544f0e87e62f464bf29efd --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order-state-change-event.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { ProductOrderStateChangeEventPayload } from '../models/product-order-state-change-event-payload'; + +/** + * The event data + */ +export interface ProductOrderStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ProductOrderStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order-update.ts b/src/app/openApis/productOrderingManagement/models/product-order-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..9517b707d0e114d233406e1418111622b47747ad --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order-update.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { AgreementRef } from '../models/agreement-ref'; +import { BillingAccountRef } from '../models/billing-account-ref'; +import { Note } from '../models/note'; +import { OrderPrice } from '../models/order-price'; +import { PaymentRef } from '../models/payment-ref'; +import { ProductOfferingQualificationRef } from '../models/product-offering-qualification-ref'; +import { ProductOrderItem } from '../models/product-order-item'; +import { QuoteRef } from '../models/quote-ref'; +import { RelatedChannel } from '../models/related-channel'; +import { RelatedParty } from '../models/related-party'; + +/** + * The ProductOrder to be updated + */ +export interface ProductOrderUpdate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * A reference to an agreement defined in the context of the product order + */ + agreement?: Array; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + billingAccount?: BillingAccountRef; + cancellationDate?: string; + + /** + * Reason why the order is cancelled. This is used when order is cancelled. + */ + cancellationReason?: string; + + /** + * Used to categorize the order from a business perspective that can be useful for the OM system (e.g. "enterprise", "residential", ...) + */ + category?: string; + channel?: Array; + + /** + * Date when the order was completed + */ + completionDate?: string; + + /** + * Description of the product order + */ + description?: string; + + /** + * Expected delivery date amended by the provider + */ + expectedCompletionDate?: string; + + /** + * ID given by the consumer and only understandable by him (to facilitate his searches afterwards) + */ + externalId?: string; + note?: Array; + + /** + * Contact attached to the order to send back information regarding this order + */ + notificationContact?: string; + orderTotalPrice?: Array; + payment?: Array; + + /** + * A way that can be used by consumers to prioritize orders in OM system (from 0 to 4 : 0 is the highest priority, and 4 the lowest) + */ + priority?: string; + productOfferingQualification?: Array; + productOrderItem: Array; + quote?: Array; + relatedParty?: Array; + + /** + * Requested delivery date from the requestor perspective + */ + requestedCompletionDate?: string; + + /** + * Order fulfillment start date wished by the requestor. This is used when, for any reason, requestor cannot allow seller to begin to operationally begin the fulfillment before a date. + */ + requestedStartDate?: string; + state?: 'INITIAL' | 'ACKNOWLEDGED' | 'REJECTED' | 'PENDING' | 'HELD' | 'INPROGRESS' | 'CANCELLED' | 'COMPLETED' | 'FAILED' | 'PARTIAL' | 'ASSESSINGCANCELLATION' | 'PENDINGCANCELLATION'; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-order.ts b/src/app/openApis/productOrderingManagement/models/product-order.ts new file mode 100644 index 0000000000000000000000000000000000000000..d4cfb8adaa780baa737859a1c89795a8c16602c2 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-order.ts @@ -0,0 +1,128 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { AgreementRef } from '../models/agreement-ref'; +import { BillingAccountRef } from '../models/billing-account-ref'; +import { Note } from '../models/note'; +import { OrderPrice } from '../models/order-price'; +import { PaymentRef } from '../models/payment-ref'; +import { ProductOfferingQualificationRef } from '../models/product-offering-qualification-ref'; +import { ProductOrderItem } from '../models/product-order-item'; +import { QuoteRef } from '../models/quote-ref'; +import { RelatedChannel } from '../models/related-channel'; +import { RelatedParty } from '../models/related-party'; + +/** + * A Product Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa, + */ +export interface ProductOrder { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * A reference to an agreement defined in the context of the product order + */ + agreement?: Array; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + billingAccount?: BillingAccountRef; + cancellationDate?: string; + + /** + * Reason why the order is cancelled. This is used when order is cancelled. + */ + cancellationReason?: string; + + /** + * Used to categorize the order from a business perspective that can be useful for the OM system (e.g. "enterprise", "residential", ...) + */ + category?: string; + channel?: Array; + + /** + * Date when the order was completed + */ + completionDate?: string; + + /** + * Description of the product order + */ + description?: string; + + /** + * Expected delivery date amended by the provider + */ + expectedCompletionDate?: string; + + /** + * ID given by the consumer and only understandable by him (to facilitate his searches afterwards) + */ + externalId?: string; + + /** + * Hyperlink to access the order + */ + href?: string; + + /** + * ID created on repository side (OM system) + */ + id?: string; + note?: Array; + + /** + * Contact attached to the order to send back information regarding this order + */ + notificationContact?: string; + + /** + * Date when the order was created + */ + orderDate?: string; + orderTotalPrice?: Array; + payment?: Array; + + /** + * A way that can be used by consumers to prioritize orders in OM system (from 0 to 4 : 0 is the highest priority, and 4 the lowest) + */ + priority?: string; + productOfferingQualification?: Array; + productOrderItem: Array; + quote?: Array; + relatedParty?: Array; + + /** + * Requested delivery date from the requestor perspective + */ + requestedCompletionDate?: string; + + /** + * Order fulfillment start date wished by the requestor. This is used when, for any reason, requestor cannot allow seller to begin to operationally begin the fulfillment before a date. + */ + requestedStartDate?: string; + state?: 'INITIAL' | 'ACKNOWLEDGED' | 'REJECTED' | 'PENDING' | 'HELD' | 'INPROGRESS' | 'CANCELLED' | 'COMPLETED' | 'FAILED' | 'PARTIAL' | 'ASSESSINGCANCELLATION' | 'PENDINGCANCELLATION'; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-price.ts b/src/app/openApis/productOrderingManagement/models/product-price.ts new file mode 100644 index 0000000000000000000000000000000000000000..a86aeae81276e6fab0edfe52bb8bf20f18b9aa0c --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-price.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { BillingAccountRef } from '../models/billing-account-ref'; +import { Price } from '../models/price'; +import { PriceAlteration } from '../models/price-alteration'; +import { ProductOfferingPriceRef } from '../models/product-offering-price-ref'; + +/** + * An amount, usually of money, that represents the actual price paid by a Customer for a purchase, a rent or a lease of a Product. The price is valid for a defined period of time. + */ +export interface ProductPrice { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + billingAccount: BillingAccountRef; + + /** + * A narrative that explains in detail the semantics of this product price. + */ + description: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * A short descriptive name such as "Subscription price". + */ + name: string; + price: Price; + + /** + * A category that describes the price, such as recurring, discount, allowance, penalty, and so forth. + */ + priceType: string; + productOfferingPrice: ProductOfferingPriceRef; + productPriceAlteration: Array; + + /** + * Could be month, week... + */ + recurringChargePeriod: string; + + /** + * Could be minutes, GB... + */ + unitOfMeasure: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-ref-or-value.ts b/src/app/openApis/productOrderingManagement/models/product-ref-or-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..9764a1eac4a38f99b538ae7d1311f00ccfec0f01 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-ref-or-value.ts @@ -0,0 +1,99 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { AgreementItemRef } from '../models/agreement-item-ref'; +import { BillingAccountRef } from '../models/billing-account-ref'; +import { Characteristic } from '../models/characteristic'; +import { ProductOfferingRef } from '../models/product-offering-ref'; +import { ProductPrice } from '../models/product-price'; +import { ProductRelationship } from '../models/product-relationship'; +import { ProductSpecificationRef } from '../models/product-specification-ref'; +import { ProductTerm } from '../models/product-term'; +import { RelatedParty } from '../models/related-party'; +import { RelatedPlaceRefOrValue } from '../models/related-place-ref-or-value'; +import { RelatedProductOrderItem } from '../models/related-product-order-item'; +import { ResourceRef } from '../models/resource-ref'; +import { ServiceRef } from '../models/service-ref'; + +/** + * A product to be created defined by value or existing defined by reference. The polymorphic attributes @type, @schemaLocation & @referredType are related to the product entity and not the RelatedProductRefOrValue class itself + */ +export interface ProductRefOrValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + agreement: Array; + billingAccount: BillingAccountRef; + + /** + * Is the description of the product. It could be copied from the description of the Product Offering. + */ + description: string; + + /** + * Reference of the product + */ + href: string; + + /** + * Unique identifier of the product + */ + id: string; + + /** + * If true, the product is a ProductBundle which is an instantiation of a BundledProductOffering. If false, the product is a ProductComponent which is an instantiation of a SimpleProductOffering. + */ + isBundle: boolean; + + /** + * If true, the product is visible by the customer. + */ + isCustomerVisible: boolean; + + /** + * Name of the product. It could be the same as the name of the product offering + */ + name: string; + + /** + * Is the date when the product was ordered + */ + orderDate: string; + place: Array; + product: Array; + productCharacteristic: Array; + productOffering: ProductOfferingRef; + productOrderItem: Array; + productPrice: Array; + productRelationship: Array; + + /** + * Is the serial number for the product. This is typically applicable to tangible products e.g. Broadband Router. + */ + productSerialNumber: string; + productSpecification: ProductSpecificationRef; + productTerm: Array; + realizingResource: Array; + realizingService: Array; + relatedParty: Array; + + /** + * Is the date from which the product starts + */ + startDate: string; + status: 'CREATED' | 'PENDINGACTIVE' | 'CANCELLED' | 'ACTIVE' | 'PENDINGTERMINATE' | 'TERMINATED' | 'SUSPENDED' | 'ABORTED_ '; + + /** + * Is the date when the product was terminated + */ + terminationDate: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-relationship.ts b/src/app/openApis/productOrderingManagement/models/product-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..6c63bb468c77a155f206fa75e481209549b4c2e4 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-relationship.ts @@ -0,0 +1,34 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { ProductRefOrValue } from '../models/product-ref-or-value'; + +/** + * Linked products to the one instantiate, such as [bundled] if the product is a bundle and you want to describe the bundled products inside this bundle; [reliesOn] if the product needs another already owned product to rely on (e.g. an option on an already owned mobile access product) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful + */ +export interface ProductRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + product: ProductRefOrValue; + + /** + * Type of the product relationship, such as [bundled] if the product is a bundle and you want to describe the bundled products inside this bundle; [reliesOn] if the product needs another already owned product to rely on (e.g. an option on an already owned mobile access product) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful + */ + relationshipType: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-specification-ref.ts b/src/app/openApis/productOrderingManagement/models/product-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..8951657f838992bee8f789e97604074f9dd61a32 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-specification-ref.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { TargetProductSchema } from '../models/target-product-schema'; +import { TimePeriod } from '../models/time-period'; + +/** + * Product specification reference: A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. + */ +export interface ProductSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'In study' | 'In design' | 'In test' | 'Active' | 'Launched' | 'Retired' | 'Obsolete' | 'Rejected'; + + /** + * Name of the entity + */ + name?: string; + targetProductSchema?: TargetProductSchema; + uuid?: string; + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/product-term.ts b/src/app/openApis/productOrderingManagement/models/product-term.ts new file mode 100644 index 0000000000000000000000000000000000000000..b7c97039f75310a4864bc91e0630c59de3802f4c --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/product-term.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { Quantity } from '../models/quantity'; +import { TimePeriod } from '../models/time-period'; + +/** + * Description of a productTerm linked to this product. This represent a commitment with a duration + */ +export interface ProductTerm { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of the productTerm + */ + description: string; + duration: Quantity; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name of the productTerm + */ + name: string; + uuid?: string; + validFor: TimePeriod; +} diff --git a/src/app/openApis/productOrderingManagement/models/quantity.ts b/src/app/openApis/productOrderingManagement/models/quantity.ts new file mode 100644 index 0000000000000000000000000000000000000000..fd1b15eff6cdf3f66b25dfecc6dfaf67b9ebb896 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/quantity.ts @@ -0,0 +1,20 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * An amount in a given unit + */ +export interface Quantity { + + /** + * Numeric value in a given unit + */ + amount?: number; + + /** + * Unit + */ + units?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/quote-item-ref.ts b/src/app/openApis/productOrderingManagement/models/quote-item-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..bc4e5b1fc5c8422e287e4ce256e99f5bfe0ec818 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/quote-item-ref.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * It's a Quote item that has been executed previously. + */ +export interface QuoteItemRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Reference of the related entity. + */ + href?: string; + + /** + * Id of an item of a quote + */ + id: string; + + /** + * Name of the related entity. + */ + name?: string; + + /** + * Reference of the related entity. + */ + quoteHref?: string; + + /** + * Unique identifier of a related entity. + */ + quoteId: string; + + /** + * Name of the related entity. + */ + quoteName?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/quote-ref.ts b/src/app/openApis/productOrderingManagement/models/quote-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..72bd361007c277441c129a109296ec2eefa8bf06 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/quote-ref.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * It's a Quote that has been executed previously + */ +export interface QuoteRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Reference of the related entity. + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Name of the related entity. + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/related-channel.ts b/src/app/openApis/productOrderingManagement/models/related-channel.ts new file mode 100644 index 0000000000000000000000000000000000000000..56e4b7bae24139575d726e9448b247dc86d39a21 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/related-channel.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * Related channel to another entity. May be online web, mobile app, social ,etc. + */ +export interface RelatedChannel { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Reference of the related entity. + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Name of the channel. + */ + name?: string; + + /** + * Role playing by the channel. + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/related-party.ts b/src/app/openApis/productOrderingManagement/models/related-party.ts new file mode 100644 index 0000000000000000000000000000000000000000..23f41dfaf26abe9faa83df8475c3d27dd4ae91db --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/related-party.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * RelatedParty reference. A related party defines party or party role linked to a specific entity. + */ +export interface RelatedParty { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + extendedInfo?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the related party. + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/related-place-ref-or-value.ts b/src/app/openApis/productOrderingManagement/models/related-place-ref-or-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..14e6da200fb23de6ea450dc8314db7416c40dac7 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/related-place-ref-or-value.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * Related Entity reference. A related place defines a place described by reference or by value linked to a specific entity. The polymorphic attributes @type, @schemaLocation & @referredType are related to the place entity and not the RelatedPlaceRefOrValue class itself + */ +export interface RelatedPlaceRefOrValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType: string; + + /** + * Unique reference of the place + */ + href: string; + + /** + * Unique identifier of the place + */ + id: string; + + /** + * A user-friendly name for the place, such as [Paris Store], [London Store], [Main Home] + */ + name: string; + role: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/related-product-order-item.ts b/src/app/openApis/productOrderingManagement/models/related-product-order-item.ts new file mode 100644 index 0000000000000000000000000000000000000000..03b27eb5f5d1504c2e2fe70d7ba90c35a338a827 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/related-product-order-item.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * RelatedProductOrderItem (ProductOrder item) .The product order item which triggered product creation/change/termination. + */ +export interface RelatedProductOrderItem { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Action of the order item for this product + */ + orderItemAction?: string; + + /** + * Identifier of the order item where the product was managed + */ + orderItemId: string; + + /** + * Reference of the related entity. + */ + productOrderHref?: string; + + /** + * Unique identifier of a related entity. + */ + productOrderId: string; + + /** + * role of the product order item for this product + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/resource-ref.ts b/src/app/openApis/productOrderingManagement/models/resource-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..8ad30c061c61aadceb1bce3b1d7eef1c44fd6d1a --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/resource-ref.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +export interface ResourceRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the supporting resource + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/service-ref.ts b/src/app/openApis/productOrderingManagement/models/service-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..6ecdd6a2a8fd6083a7687f0c3f5da54b1959bc28 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/service-ref.ts @@ -0,0 +1,42 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * Service reference, for when Service is used by other entities + */ +export interface ServiceRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Id of the service + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/target-product-schema.ts b/src/app/openApis/productOrderingManagement/models/target-product-schema.ts new file mode 100644 index 0000000000000000000000000000000000000000..be4609c11455a66ed19d1b7687d34b295abc3bac --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/target-product-schema.ts @@ -0,0 +1,26 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * The reference object to the schema and type of target product which is described by product specification + */ +export interface TargetProductSchema { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; +} diff --git a/src/app/openApis/productOrderingManagement/models/time-period.ts b/src/app/openApis/productOrderingManagement/models/time-period.ts new file mode 100644 index 0000000000000000000000000000000000000000..2d39ac716efaeaba388455c34be135c7ca57a063 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/models/time-period.ts @@ -0,0 +1,20 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + + +/** + * A period of time, either as a deadline (endDateTime only) a startDateTime only, or both + */ +export interface TimePeriod { + + /** + * End of the time period, using IETC-RFC-3339 format + */ + endDateTime?: string; + + /** + * Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end + */ + startDateTime?: string; +} diff --git a/src/app/openApis/productOrderingManagement/request-builder.ts b/src/app/openApis/productOrderingManagement/request-builder.ts new file mode 100644 index 0000000000000000000000000000000000000000..a7f253b1547e27bfb9cad1a5db21a38c01311730 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/request-builder.ts @@ -0,0 +1,370 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpRequest, HttpParameterCodec, HttpParams, HttpHeaders, HttpContext } from '@angular/common/http'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const ParameterCodecInstance = new ParameterCodec(); + +/** + * Defines the options for appending a parameter + */ +interface ParameterOptions { + style?: string; + explode?: boolean; +} + +/** + * Base class for a parameter + */ +abstract class Parameter { + constructor(public name: string, public value: any, public options: ParameterOptions, defaultStyle: string, defaultExplode: boolean) { + this.options = options || {}; + if (this.options.style === null || this.options.style === undefined) { + this.options.style = defaultStyle; + } + if (this.options.explode === null || this.options.explode === undefined) { + this.options.explode = defaultExplode; + } + } + + serializeValue(value: any, separator = ','): string { + if (value === null || value === undefined) { + return ''; + } else if (value instanceof Array) { + return value.map(v => this.serializeValue(v).split(separator).join(encodeURIComponent(separator))).join(separator); + } else if (typeof value === 'object') { + const array: string[] = []; + for (const key of Object.keys(value)) { + let propVal = value[key]; + if (propVal !== null && propVal !== undefined) { + propVal = this.serializeValue(propVal).split(separator).join(encodeURIComponent(separator)); + if (this.options.explode) { + array.push(`${key}=${propVal}`); + } else { + array.push(key); + array.push(propVal); + } + } + } + return array.join(separator); + } else { + return String(value); + } + } +} + +/** + * A parameter in the operation path + */ +class PathParameter extends Parameter { + constructor(name: string, value: any, options: ParameterOptions) { + super(name, value, options, 'simple', false); + } + + append(path: string): string { + let value = this.value; + if (value === null || value === undefined) { + value = ''; + } + let prefix = this.options.style === 'label' ? '.' : ''; + let separator = this.options.explode ? prefix === '' ? ',' : prefix : ','; + let alreadySerialized = false; + if (this.options.style === 'matrix') { + // The parameter name is just used as prefix, except in some cases... + prefix = `;${this.name}=`; + if (this.options.explode && typeof value === 'object') { + prefix = ';'; + if (value instanceof Array) { + // For arrays we have to repeat the name for each element + value = value.map(v => `${this.name}=${this.serializeValue(v, ';')}`); + value = value.join(';'); + alreadySerialized = true; + } else { + // For objects we have to put each the key / value pairs + value = this.serializeValue(value, ';'); + alreadySerialized = true + } + } + } + value = prefix + (alreadySerialized ? value : this.serializeValue(value, separator)); + // Replace both the plain variable and the corresponding variant taking in the prefix and explode into account + path = path.replace(`{${this.name}}`, value); + path = path.replace(`{${prefix}${this.name}${this.options.explode ? '*' : ''}}`, value); + return path; + } + + // @ts-ignore + serializeValue(value: any, separator = ','): string { + var result = typeof value === 'string' ? encodeURIComponent(value) : super.serializeValue(value, separator); + result = result.replace(/%3D/g, '='); + result = result.replace(/%3B/g, ';'); + result = result.replace(/%2C/g, ','); + return result; + } +} + +/** + * A parameter in the query + */ +class QueryParameter extends Parameter { + constructor(name: string, value: any, options: ParameterOptions) { + super(name, value, options, 'form', true); + } + + append(params: HttpParams): HttpParams { + if (this.value instanceof Array) { + // Array serialization + if (this.options.explode) { + for (const v of this.value) { + params = params.append(this.name, this.serializeValue(v)); + } + } else { + const separator = this.options.style === 'spaceDelimited' + ? ' ' : this.options.style === 'pipeDelimited' + ? '|' : ','; + return params.append(this.name, this.serializeValue(this.value, separator)); + } + } else if (this.value !== null && typeof this.value === 'object') { + // Object serialization + if (this.options.style === 'deepObject') { + // Append a parameter for each key, in the form `name[key]` + for (const key of Object.keys(this.value)) { + const propVal = this.value[key]; + if (propVal !== null && propVal !== undefined) { + params = params.append(`${this.name}[${key}]`, this.serializeValue(propVal)); + } + } + } else if (this.options.explode) { + // Append a parameter for each key without using the parameter name + for (const key of Object.keys(this.value)) { + const propVal = this.value[key]; + if (propVal !== null && propVal !== undefined) { + params = params.append(key, this.serializeValue(propVal)); + } + } + } else { + // Append a single parameter whose values are a comma-separated list of key,value,key,value... + const array: any[] = []; + for (const key of Object.keys(this.value)) { + const propVal = this.value[key]; + if (propVal !== null && propVal !== undefined) { + array.push(key); + array.push(propVal); + } + } + params = params.append(this.name, this.serializeValue(array)); + } + } else if (this.value !== null && this.value !== undefined) { + // Plain value + params = params.append(this.name, this.serializeValue(this.value)); + } + return params; + } +} + +/** + * A parameter in the HTTP request header + */ +class HeaderParameter extends Parameter { + constructor(name: string, value: any, options: ParameterOptions) { + super(name, value, options, 'simple', false); + } + + append(headers: HttpHeaders): HttpHeaders { + if (this.value !== null && this.value !== undefined) { + if (this.value instanceof Array) { + for (const v of this.value) { + headers = headers.append(this.name, this.serializeValue(v)); + } + } else { + headers = headers.append(this.name, this.serializeValue(this.value)); + } + } + return headers; + } +} + +/** + * Helper to build http requests from parameters + */ +export class RequestBuilder { + + private _path = new Map(); + private _query = new Map(); + private _header = new Map(); + _bodyContent: any | null; + _bodyContentType?: string; + + constructor( + public rootUrl: string, + public operationPath: string, + public method: string) { + } + + /** + * Sets a path parameter + */ + path(name: string, value: any, options?: ParameterOptions): void { + this._path.set(name, new PathParameter(name, value, options || {})); + } + + /** + * Sets a query parameter + */ + query(name: string, value: any, options?: ParameterOptions): void { + this._query.set(name, new QueryParameter(name, value, options || {})); + } + + /** + * Sets a header parameter + */ + header(name: string, value: any, options?: ParameterOptions): void { + this._header.set(name, new HeaderParameter(name, value, options || {})); + } + + /** + * Sets the body content, along with the content type + */ + body(value: any, contentType = 'application/json'): void { + if (value instanceof Blob) { + this._bodyContentType = value.type; + } else { + this._bodyContentType = contentType; + } + if (this._bodyContentType === 'application/x-www-form-urlencoded' && value !== null && typeof value === 'object') { + // Handle URL-encoded data + const pairs: Array<[string, string]> = []; + for (const key of Object.keys(value)) { + let val = value[key]; + if (!(val instanceof Array)) { + val = [val]; + } + for (const v of val) { + const formValue = this.formDataValue(v); + if (formValue !== null) { + pairs.push([key, formValue]); + } + } + } + this._bodyContent = pairs.map(p => `${encodeURIComponent(p[0])}=${encodeURIComponent(p[1])}`).join('&'); + } else if (this._bodyContentType === 'multipart/form-data') { + // Handle multipart form data + const formData = new FormData(); + if (value !== null && value !== undefined) { + for (const key of Object.keys(value)) { + const val = value[key]; + if (val instanceof Array) { + for (const v of val) { + const toAppend = this.formDataValue(v); + if (toAppend !== null) { + formData.append(key, toAppend); + } + } + } else { + const toAppend = this.formDataValue(val); + if (toAppend !== null) { + formData.set(key, toAppend); + } + } + } + } + this._bodyContent = formData; + } else { + // The body is the plain content + this._bodyContent = value; + } + } + + private formDataValue(value: any): any { + if (value === null || value === undefined) { + return null; + } + if (value instanceof Blob) { + return value; + } + if (typeof value === 'object') { + return new Blob([JSON.stringify(value)], {type: 'application/json'}) + } + return String(value); + } + + /** + * Builds the request with the current set parameters + */ + build(options?: { + /** Which content types to accept */ + accept?: string; + + /** The expected response type */ + responseType?: 'json' | 'text' | 'blob' | 'arraybuffer'; + + /** Whether to report progress on uploads / downloads */ + reportProgress?: boolean; + + /** Allow passing HttpContext for HttpClient */ + context?: HttpContext; + }): HttpRequest { + + options = options || {}; + + // Path parameters + let path = this.operationPath; + for (const pathParam of this._path.values()) { + path = pathParam.append(path); + } + const url = this.rootUrl + path; + + // Query parameters + let httpParams = new HttpParams({ + encoder: ParameterCodecInstance + }); + for (const queryParam of this._query.values()) { + httpParams = queryParam.append(httpParams); + } + + // Header parameters + let httpHeaders = new HttpHeaders(); + if (options.accept) { + httpHeaders = httpHeaders.append('Accept', options.accept); + } + for (const headerParam of this._header.values()) { + httpHeaders = headerParam.append(httpHeaders); + } + + // Request content headers + if (this._bodyContentType && !(this._bodyContent instanceof FormData)) { + httpHeaders = httpHeaders.set('Content-Type', this._bodyContentType); + } + + // Perform the request + return new HttpRequest(this.method.toUpperCase(), url, this._bodyContent, { + params: httpParams, + headers: httpHeaders, + responseType: options.responseType, + reportProgress: options.reportProgress, + context: options.context + }); + } +} diff --git a/src/app/openApis/productOrderingManagement/services.ts b/src/app/openApis/productOrderingManagement/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..660fa1cdc1e11d289a36eaf8ba5e0085fb0ada26 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/services.ts @@ -0,0 +1,10 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +export { ProductOrderService } from './services/product-order.service'; +export { ListenerService } from './services/listener.service'; +export { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +export { HubService } from './services/hub.service'; +export { EventsSubscriptionService } from './services/events-subscription.service'; +export { CancelProductOrderService } from './services/cancel-product-order.service'; diff --git a/src/app/openApis/productOrderingManagement/services/cancel-product-order.service.ts b/src/app/openApis/productOrderingManagement/services/cancel-product-order.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..4329c190883df3dc1d66330620f99c1d3753003b --- /dev/null +++ b/src/app/openApis/productOrderingManagement/services/cancel-product-order.service.ts @@ -0,0 +1,131 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { BaseService } from '../base-service'; +import { ApiConfiguration } from '../api-configuration'; +import { StrictHttpResponse } from '../strict-http-response'; + +import { CancelProductOrder } from '../models/cancel-product-order'; +import { createCancelProductOrder } from '../fn/cancel-product-order/create-cancel-product-order'; +import { CreateCancelProductOrder$Params } from '../fn/cancel-product-order/create-cancel-product-order'; +import { listCancelProductOrder } from '../fn/cancel-product-order/list-cancel-product-order'; +import { ListCancelProductOrder$Params } from '../fn/cancel-product-order/list-cancel-product-order'; +import { retrieveCancelProductOrder } from '../fn/cancel-product-order/retrieve-cancel-product-order'; +import { RetrieveCancelProductOrder$Params } from '../fn/cancel-product-order/retrieve-cancel-product-order'; + + +/** + * the cancelProductOrder API + */ +@Injectable({ providedIn: 'root' }) +export class CancelProductOrderService extends BaseService { + constructor(config: ApiConfiguration, http: HttpClient) { + super(config, http); + } + + /** Path part for operation `listCancelProductOrder()` */ + static readonly ListCancelProductOrderPath = '/cancelProductOrder'; + + /** + * List or find CancelProductOrder objects. + * + * This operation list or find CancelProductOrder entities + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listCancelProductOrder()` instead. + * + * This method doesn't expect any request body. + */ + listCancelProductOrder$Response(params?: ListCancelProductOrder$Params, context?: HttpContext): Observable>> { + return listCancelProductOrder(this.http, this.rootUrl, params, context); + } + + /** + * List or find CancelProductOrder objects. + * + * This operation list or find CancelProductOrder entities + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listCancelProductOrder$Response()` instead. + * + * This method doesn't expect any request body. + */ + listCancelProductOrder(params?: ListCancelProductOrder$Params, context?: HttpContext): Observable> { + return this.listCancelProductOrder$Response(params, context).pipe( + map((r: StrictHttpResponse>): Array => r.body) + ); + } + + /** Path part for operation `createCancelProductOrder()` */ + static readonly CreateCancelProductOrderPath = '/cancelProductOrder'; + + /** + * Creates a CancelProductOrder. + * + * This operation creates a CancelProductOrder entity. + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `createCancelProductOrder()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + createCancelProductOrder$Response(params: CreateCancelProductOrder$Params, context?: HttpContext): Observable> { + return createCancelProductOrder(this.http, this.rootUrl, params, context); + } + + /** + * Creates a CancelProductOrder. + * + * This operation creates a CancelProductOrder entity. + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `createCancelProductOrder$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + createCancelProductOrder(params: CreateCancelProductOrder$Params, context?: HttpContext): Observable { + return this.createCancelProductOrder$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `retrieveCancelProductOrder()` */ + static readonly RetrieveCancelProductOrderPath = '/cancelProductOrder/{id}'; + + /** + * Retrieves a CancelProductOrder by ID. + * + * This operation retrieves a CancelProductOrder entity. Attribute selection is enabled for all first level attributes. + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `retrieveCancelProductOrder()` instead. + * + * This method doesn't expect any request body. + */ + retrieveCancelProductOrder$Response(params: RetrieveCancelProductOrder$Params, context?: HttpContext): Observable> { + return retrieveCancelProductOrder(this.http, this.rootUrl, params, context); + } + + /** + * Retrieves a CancelProductOrder by ID. + * + * This operation retrieves a CancelProductOrder entity. Attribute selection is enabled for all first level attributes. + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `retrieveCancelProductOrder$Response()` instead. + * + * This method doesn't expect any request body. + */ + retrieveCancelProductOrder(params: RetrieveCancelProductOrder$Params, context?: HttpContext): Observable { + return this.retrieveCancelProductOrder$Response(params, context).pipe( + map((r: StrictHttpResponse): CancelProductOrder => r.body) + ); + } + +} diff --git a/src/app/openApis/productOrderingManagement/services/events-subscription.service.ts b/src/app/openApis/productOrderingManagement/services/events-subscription.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..d31eb5563760d60e4f5bb66860b5d5cf29e2d4a8 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/services/events-subscription.service.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { BaseService } from '../base-service'; +import { ApiConfiguration } from '../api-configuration'; +import { StrictHttpResponse } from '../strict-http-response'; + +import { registerListener } from '../fn/hub/register-listener'; +import { RegisterListener$Params } from '../fn/hub/register-listener'; +import { unregisterListener } from '../fn/hub/unregister-listener'; +import { UnregisterListener$Params } from '../fn/hub/unregister-listener'; + +@Injectable({ providedIn: 'root' }) +export class EventsSubscriptionService extends BaseService { + constructor(config: ApiConfiguration, http: HttpClient) { + super(config, http); + } + + /** Path part for operation `registerListener()` */ + static readonly RegisterListenerPath = '/productOrderingManagement/v4/hub'; + + /** + * Register a listener. + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `registerListener()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + registerListener$Response(params: RegisterListener$Params, context?: HttpContext): Observable> { + return registerListener(this.http, this.rootUrl, params, context); + } + + /** + * Register a listener. + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `registerListener$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + registerListener(params: RegisterListener$Params, context?: HttpContext): Observable { + return this.registerListener$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `unregisterListener()` */ + static readonly UnregisterListenerPath = '/productOrderingManagement/v4/hub/{id}'; + + /** + * Unregister a listener. + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `unregisterListener()` instead. + * + * This method doesn't expect any request body. + */ + unregisterListener$Response(params: UnregisterListener$Params, context?: HttpContext): Observable> { + return unregisterListener(this.http, this.rootUrl, params, context); + } + + /** + * Unregister a listener. + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `unregisterListener$Response()` instead. + * + * This method doesn't expect any request body. + */ + unregisterListener(params: UnregisterListener$Params, context?: HttpContext): Observable { + return this.unregisterListener$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + +} diff --git a/src/app/openApis/productOrderingManagement/services/hub.service.ts b/src/app/openApis/productOrderingManagement/services/hub.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..891580e2cacfa974ebf6a7bcda5bb20d963f7e36 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/services/hub.service.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { BaseService } from '../base-service'; +import { ApiConfiguration } from '../api-configuration'; +import { StrictHttpResponse } from '../strict-http-response'; + +import { registerListener } from '../fn/hub/register-listener'; +import { RegisterListener$Params } from '../fn/hub/register-listener'; +import { unregisterListener } from '../fn/hub/unregister-listener'; +import { UnregisterListener$Params } from '../fn/hub/unregister-listener'; + + +/** + * the hub API + */ +@Injectable({ providedIn: 'root' }) +export class HubService extends BaseService { + constructor(config: ApiConfiguration, http: HttpClient) { + super(config, http); + } + + /** Path part for operation `registerListener()` */ + static readonly RegisterListenerPath = '/productOrderingManagement/v4/hub'; + + /** + * Register a listener. + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `registerListener()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + registerListener$Response(params: RegisterListener$Params, context?: HttpContext): Observable> { + return registerListener(this.http, this.rootUrl, params, context); + } + + /** + * Register a listener. + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `registerListener$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + registerListener(params: RegisterListener$Params, context?: HttpContext): Observable { + return this.registerListener$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `unregisterListener()` */ + static readonly UnregisterListenerPath = '/productOrderingManagement/v4/hub/{id}'; + + /** + * Unregister a listener. + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `unregisterListener()` instead. + * + * This method doesn't expect any request body. + */ + unregisterListener$Response(params: UnregisterListener$Params, context?: HttpContext): Observable> { + return unregisterListener(this.http, this.rootUrl, params, context); + } + + /** + * Unregister a listener. + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `unregisterListener$Response()` instead. + * + * This method doesn't expect any request body. + */ + unregisterListener(params: UnregisterListener$Params, context?: HttpContext): Observable { + return this.unregisterListener$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + +} diff --git a/src/app/openApis/productOrderingManagement/services/listener.service.ts b/src/app/openApis/productOrderingManagement/services/listener.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..8ee61f9e32bf8a88a924dc1f9d19c22a72bc91e9 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/services/listener.service.ts @@ -0,0 +1,305 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { BaseService } from '../base-service'; +import { ApiConfiguration } from '../api-configuration'; +import { StrictHttpResponse } from '../strict-http-response'; + +import { listenToCancelProductOrderCreateEvent } from '../fn/listener/listen-to-cancel-product-order-create-event'; +import { ListenToCancelProductOrderCreateEvent$Params } from '../fn/listener/listen-to-cancel-product-order-create-event'; +import { listenToCancelProductOrderInformationRequiredEvent } from '../fn/listener/listen-to-cancel-product-order-information-required-event'; +import { ListenToCancelProductOrderInformationRequiredEvent$Params } from '../fn/listener/listen-to-cancel-product-order-information-required-event'; +import { listenToCancelProductOrderStateChangeEvent } from '../fn/listener/listen-to-cancel-product-order-state-change-event'; +import { ListenToCancelProductOrderStateChangeEvent$Params } from '../fn/listener/listen-to-cancel-product-order-state-change-event'; +import { listenToProductOrderAttributeValueChangeEvent } from '../fn/listener/listen-to-product-order-attribute-value-change-event'; +import { ListenToProductOrderAttributeValueChangeEvent$Params } from '../fn/listener/listen-to-product-order-attribute-value-change-event'; +import { listenToProductOrderCreateEvent } from '../fn/listener/listen-to-product-order-create-event'; +import { ListenToProductOrderCreateEvent$Params } from '../fn/listener/listen-to-product-order-create-event'; +import { listenToProductOrderDeleteEvent } from '../fn/listener/listen-to-product-order-delete-event'; +import { ListenToProductOrderDeleteEvent$Params } from '../fn/listener/listen-to-product-order-delete-event'; +import { listenToProductOrderInformationRequiredEvent } from '../fn/listener/listen-to-product-order-information-required-event'; +import { ListenToProductOrderInformationRequiredEvent$Params } from '../fn/listener/listen-to-product-order-information-required-event'; +import { listenToProductOrderStateChangeEvent } from '../fn/listener/listen-to-product-order-state-change-event'; +import { ListenToProductOrderStateChangeEvent$Params } from '../fn/listener/listen-to-product-order-state-change-event'; + + +/** + * the listener API + */ +@Injectable({ providedIn: 'root' }) +export class ListenerService extends BaseService { + constructor(config: ApiConfiguration, http: HttpClient) { + super(config, http); + } + + /** Path part for operation `listenToProductOrderStateChangeEvent()` */ + static readonly ListenToProductOrderStateChangeEventPath = '/productOrderingManagement/v4/listener/productOrderStateChangeEvent'; + + /** + * Client listener for entity ProductOrderStateChangeEvent. + * + * Example of a client listener for receiving the notification ProductOrderStateChangeEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToProductOrderStateChangeEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderStateChangeEvent$Response(params: ListenToProductOrderStateChangeEvent$Params, context?: HttpContext): Observable> { + return listenToProductOrderStateChangeEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity ProductOrderStateChangeEvent. + * + * Example of a client listener for receiving the notification ProductOrderStateChangeEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToProductOrderStateChangeEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderStateChangeEvent(params: ListenToProductOrderStateChangeEvent$Params, context?: HttpContext): Observable { + return this.listenToProductOrderStateChangeEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `listenToProductOrderInformationRequiredEvent()` */ + static readonly ListenToProductOrderInformationRequiredEventPath = '/productOrderingManagement/v4/listener/productOrderInformationRequiredEvent'; + + /** + * Client listener for entity ProductOrderInformationRequiredEvent. + * + * Example of a client listener for receiving the notification ProductOrderInformationRequiredEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToProductOrderInformationRequiredEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderInformationRequiredEvent$Response(params: ListenToProductOrderInformationRequiredEvent$Params, context?: HttpContext): Observable> { + return listenToProductOrderInformationRequiredEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity ProductOrderInformationRequiredEvent. + * + * Example of a client listener for receiving the notification ProductOrderInformationRequiredEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToProductOrderInformationRequiredEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderInformationRequiredEvent(params: ListenToProductOrderInformationRequiredEvent$Params, context?: HttpContext): Observable { + return this.listenToProductOrderInformationRequiredEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `listenToProductOrderDeleteEvent()` */ + static readonly ListenToProductOrderDeleteEventPath = '/productOrderingManagement/v4/listener/productOrderDeleteEvent'; + + /** + * Client listener for entity ProductOrderDeleteEvent. + * + * Example of a client listener for receiving the notification ProductOrderDeleteEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToProductOrderDeleteEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderDeleteEvent$Response(params: ListenToProductOrderDeleteEvent$Params, context?: HttpContext): Observable> { + return listenToProductOrderDeleteEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity ProductOrderDeleteEvent. + * + * Example of a client listener for receiving the notification ProductOrderDeleteEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToProductOrderDeleteEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderDeleteEvent(params: ListenToProductOrderDeleteEvent$Params, context?: HttpContext): Observable { + return this.listenToProductOrderDeleteEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `listenToProductOrderCreateEvent()` */ + static readonly ListenToProductOrderCreateEventPath = '/productOrderingManagement/v4/listener/productOrderCreateEvent'; + + /** + * Client listener for entity ProductOrderCreateEvent. + * + * Example of a client listener for receiving the notification ProductOrderCreateEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToProductOrderCreateEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderCreateEvent$Response(params: ListenToProductOrderCreateEvent$Params, context?: HttpContext): Observable> { + return listenToProductOrderCreateEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity ProductOrderCreateEvent. + * + * Example of a client listener for receiving the notification ProductOrderCreateEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToProductOrderCreateEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderCreateEvent(params: ListenToProductOrderCreateEvent$Params, context?: HttpContext): Observable { + return this.listenToProductOrderCreateEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `listenToProductOrderAttributeValueChangeEvent()` */ + static readonly ListenToProductOrderAttributeValueChangeEventPath = '/productOrderingManagement/v4/listener/productOrderAttributeValueChangeEvent'; + + /** + * Client listener for entity ProductOrderAttributeValueChangeEvent. + * + * Example of a client listener for receiving the notification ProductOrderAttributeValueChangeEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToProductOrderAttributeValueChangeEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderAttributeValueChangeEvent$Response(params: ListenToProductOrderAttributeValueChangeEvent$Params, context?: HttpContext): Observable> { + return listenToProductOrderAttributeValueChangeEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity ProductOrderAttributeValueChangeEvent. + * + * Example of a client listener for receiving the notification ProductOrderAttributeValueChangeEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToProductOrderAttributeValueChangeEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderAttributeValueChangeEvent(params: ListenToProductOrderAttributeValueChangeEvent$Params, context?: HttpContext): Observable { + return this.listenToProductOrderAttributeValueChangeEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `listenToCancelProductOrderStateChangeEvent()` */ + static readonly ListenToCancelProductOrderStateChangeEventPath = '/productOrderingManagement/v4/listener/cancelProductOrderStateChangeEvent'; + + /** + * Client listener for entity CancelProductOrderStateChangeEvent. + * + * Example of a client listener for receiving the notification CancelProductOrderStateChangeEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToCancelProductOrderStateChangeEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToCancelProductOrderStateChangeEvent$Response(params: ListenToCancelProductOrderStateChangeEvent$Params, context?: HttpContext): Observable> { + return listenToCancelProductOrderStateChangeEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity CancelProductOrderStateChangeEvent. + * + * Example of a client listener for receiving the notification CancelProductOrderStateChangeEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToCancelProductOrderStateChangeEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToCancelProductOrderStateChangeEvent(params: ListenToCancelProductOrderStateChangeEvent$Params, context?: HttpContext): Observable { + return this.listenToCancelProductOrderStateChangeEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `listenToCancelProductOrderInformationRequiredEvent()` */ + static readonly ListenToCancelProductOrderInformationRequiredEventPath = '/productOrderingManagement/v4/listener/cancelProductOrderInformationRequiredEvent'; + + /** + * Client listener for entity CancelProductOrderInformationRequiredEvent. + * + * Example of a client listener for receiving the notification CancelProductOrderInformationRequiredEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToCancelProductOrderInformationRequiredEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToCancelProductOrderInformationRequiredEvent$Response(params: ListenToCancelProductOrderInformationRequiredEvent$Params, context?: HttpContext): Observable> { + return listenToCancelProductOrderInformationRequiredEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity CancelProductOrderInformationRequiredEvent. + * + * Example of a client listener for receiving the notification CancelProductOrderInformationRequiredEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToCancelProductOrderInformationRequiredEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToCancelProductOrderInformationRequiredEvent(params: ListenToCancelProductOrderInformationRequiredEvent$Params, context?: HttpContext): Observable { + return this.listenToCancelProductOrderInformationRequiredEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `listenToCancelProductOrderCreateEvent()` */ + static readonly ListenToCancelProductOrderCreateEventPath = '/productOrderingManagement/v4/listener/cancelProductOrderCreateEvent'; + + /** + * Client listener for entity CancelProductOrderCreateEvent. + * + * Example of a client listener for receiving the notification CancelProductOrderCreateEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToCancelProductOrderCreateEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToCancelProductOrderCreateEvent$Response(params: ListenToCancelProductOrderCreateEvent$Params, context?: HttpContext): Observable> { + return listenToCancelProductOrderCreateEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity CancelProductOrderCreateEvent. + * + * Example of a client listener for receiving the notification CancelProductOrderCreateEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToCancelProductOrderCreateEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToCancelProductOrderCreateEvent(params: ListenToCancelProductOrderCreateEvent$Params, context?: HttpContext): Observable { + return this.listenToCancelProductOrderCreateEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + +} diff --git a/src/app/openApis/productOrderingManagement/services/notification-listeners-client-side.service.ts b/src/app/openApis/productOrderingManagement/services/notification-listeners-client-side.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..2756433a62cc72da7e178bacf4d95c7689f4d7d1 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/services/notification-listeners-client-side.service.ts @@ -0,0 +1,301 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { BaseService } from '../base-service'; +import { ApiConfiguration } from '../api-configuration'; +import { StrictHttpResponse } from '../strict-http-response'; + +import { listenToCancelProductOrderCreateEvent } from '../fn/listener/listen-to-cancel-product-order-create-event'; +import { ListenToCancelProductOrderCreateEvent$Params } from '../fn/listener/listen-to-cancel-product-order-create-event'; +import { listenToCancelProductOrderInformationRequiredEvent } from '../fn/listener/listen-to-cancel-product-order-information-required-event'; +import { ListenToCancelProductOrderInformationRequiredEvent$Params } from '../fn/listener/listen-to-cancel-product-order-information-required-event'; +import { listenToCancelProductOrderStateChangeEvent } from '../fn/listener/listen-to-cancel-product-order-state-change-event'; +import { ListenToCancelProductOrderStateChangeEvent$Params } from '../fn/listener/listen-to-cancel-product-order-state-change-event'; +import { listenToProductOrderAttributeValueChangeEvent } from '../fn/listener/listen-to-product-order-attribute-value-change-event'; +import { ListenToProductOrderAttributeValueChangeEvent$Params } from '../fn/listener/listen-to-product-order-attribute-value-change-event'; +import { listenToProductOrderCreateEvent } from '../fn/listener/listen-to-product-order-create-event'; +import { ListenToProductOrderCreateEvent$Params } from '../fn/listener/listen-to-product-order-create-event'; +import { listenToProductOrderDeleteEvent } from '../fn/listener/listen-to-product-order-delete-event'; +import { ListenToProductOrderDeleteEvent$Params } from '../fn/listener/listen-to-product-order-delete-event'; +import { listenToProductOrderInformationRequiredEvent } from '../fn/listener/listen-to-product-order-information-required-event'; +import { ListenToProductOrderInformationRequiredEvent$Params } from '../fn/listener/listen-to-product-order-information-required-event'; +import { listenToProductOrderStateChangeEvent } from '../fn/listener/listen-to-product-order-state-change-event'; +import { ListenToProductOrderStateChangeEvent$Params } from '../fn/listener/listen-to-product-order-state-change-event'; + +@Injectable({ providedIn: 'root' }) +export class NotificationListenersClientSideService extends BaseService { + constructor(config: ApiConfiguration, http: HttpClient) { + super(config, http); + } + + /** Path part for operation `listenToProductOrderStateChangeEvent()` */ + static readonly ListenToProductOrderStateChangeEventPath = '/productOrderingManagement/v4/listener/productOrderStateChangeEvent'; + + /** + * Client listener for entity ProductOrderStateChangeEvent. + * + * Example of a client listener for receiving the notification ProductOrderStateChangeEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToProductOrderStateChangeEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderStateChangeEvent$Response(params: ListenToProductOrderStateChangeEvent$Params, context?: HttpContext): Observable> { + return listenToProductOrderStateChangeEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity ProductOrderStateChangeEvent. + * + * Example of a client listener for receiving the notification ProductOrderStateChangeEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToProductOrderStateChangeEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderStateChangeEvent(params: ListenToProductOrderStateChangeEvent$Params, context?: HttpContext): Observable { + return this.listenToProductOrderStateChangeEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `listenToProductOrderInformationRequiredEvent()` */ + static readonly ListenToProductOrderInformationRequiredEventPath = '/productOrderingManagement/v4/listener/productOrderInformationRequiredEvent'; + + /** + * Client listener for entity ProductOrderInformationRequiredEvent. + * + * Example of a client listener for receiving the notification ProductOrderInformationRequiredEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToProductOrderInformationRequiredEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderInformationRequiredEvent$Response(params: ListenToProductOrderInformationRequiredEvent$Params, context?: HttpContext): Observable> { + return listenToProductOrderInformationRequiredEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity ProductOrderInformationRequiredEvent. + * + * Example of a client listener for receiving the notification ProductOrderInformationRequiredEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToProductOrderInformationRequiredEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderInformationRequiredEvent(params: ListenToProductOrderInformationRequiredEvent$Params, context?: HttpContext): Observable { + return this.listenToProductOrderInformationRequiredEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `listenToProductOrderDeleteEvent()` */ + static readonly ListenToProductOrderDeleteEventPath = '/productOrderingManagement/v4/listener/productOrderDeleteEvent'; + + /** + * Client listener for entity ProductOrderDeleteEvent. + * + * Example of a client listener for receiving the notification ProductOrderDeleteEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToProductOrderDeleteEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderDeleteEvent$Response(params: ListenToProductOrderDeleteEvent$Params, context?: HttpContext): Observable> { + return listenToProductOrderDeleteEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity ProductOrderDeleteEvent. + * + * Example of a client listener for receiving the notification ProductOrderDeleteEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToProductOrderDeleteEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderDeleteEvent(params: ListenToProductOrderDeleteEvent$Params, context?: HttpContext): Observable { + return this.listenToProductOrderDeleteEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `listenToProductOrderCreateEvent()` */ + static readonly ListenToProductOrderCreateEventPath = '/productOrderingManagement/v4/listener/productOrderCreateEvent'; + + /** + * Client listener for entity ProductOrderCreateEvent. + * + * Example of a client listener for receiving the notification ProductOrderCreateEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToProductOrderCreateEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderCreateEvent$Response(params: ListenToProductOrderCreateEvent$Params, context?: HttpContext): Observable> { + return listenToProductOrderCreateEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity ProductOrderCreateEvent. + * + * Example of a client listener for receiving the notification ProductOrderCreateEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToProductOrderCreateEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderCreateEvent(params: ListenToProductOrderCreateEvent$Params, context?: HttpContext): Observable { + return this.listenToProductOrderCreateEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `listenToProductOrderAttributeValueChangeEvent()` */ + static readonly ListenToProductOrderAttributeValueChangeEventPath = '/productOrderingManagement/v4/listener/productOrderAttributeValueChangeEvent'; + + /** + * Client listener for entity ProductOrderAttributeValueChangeEvent. + * + * Example of a client listener for receiving the notification ProductOrderAttributeValueChangeEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToProductOrderAttributeValueChangeEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderAttributeValueChangeEvent$Response(params: ListenToProductOrderAttributeValueChangeEvent$Params, context?: HttpContext): Observable> { + return listenToProductOrderAttributeValueChangeEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity ProductOrderAttributeValueChangeEvent. + * + * Example of a client listener for receiving the notification ProductOrderAttributeValueChangeEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToProductOrderAttributeValueChangeEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToProductOrderAttributeValueChangeEvent(params: ListenToProductOrderAttributeValueChangeEvent$Params, context?: HttpContext): Observable { + return this.listenToProductOrderAttributeValueChangeEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `listenToCancelProductOrderStateChangeEvent()` */ + static readonly ListenToCancelProductOrderStateChangeEventPath = '/productOrderingManagement/v4/listener/cancelProductOrderStateChangeEvent'; + + /** + * Client listener for entity CancelProductOrderStateChangeEvent. + * + * Example of a client listener for receiving the notification CancelProductOrderStateChangeEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToCancelProductOrderStateChangeEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToCancelProductOrderStateChangeEvent$Response(params: ListenToCancelProductOrderStateChangeEvent$Params, context?: HttpContext): Observable> { + return listenToCancelProductOrderStateChangeEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity CancelProductOrderStateChangeEvent. + * + * Example of a client listener for receiving the notification CancelProductOrderStateChangeEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToCancelProductOrderStateChangeEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToCancelProductOrderStateChangeEvent(params: ListenToCancelProductOrderStateChangeEvent$Params, context?: HttpContext): Observable { + return this.listenToCancelProductOrderStateChangeEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `listenToCancelProductOrderInformationRequiredEvent()` */ + static readonly ListenToCancelProductOrderInformationRequiredEventPath = '/productOrderingManagement/v4/listener/cancelProductOrderInformationRequiredEvent'; + + /** + * Client listener for entity CancelProductOrderInformationRequiredEvent. + * + * Example of a client listener for receiving the notification CancelProductOrderInformationRequiredEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToCancelProductOrderInformationRequiredEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToCancelProductOrderInformationRequiredEvent$Response(params: ListenToCancelProductOrderInformationRequiredEvent$Params, context?: HttpContext): Observable> { + return listenToCancelProductOrderInformationRequiredEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity CancelProductOrderInformationRequiredEvent. + * + * Example of a client listener for receiving the notification CancelProductOrderInformationRequiredEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToCancelProductOrderInformationRequiredEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToCancelProductOrderInformationRequiredEvent(params: ListenToCancelProductOrderInformationRequiredEvent$Params, context?: HttpContext): Observable { + return this.listenToCancelProductOrderInformationRequiredEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `listenToCancelProductOrderCreateEvent()` */ + static readonly ListenToCancelProductOrderCreateEventPath = '/productOrderingManagement/v4/listener/cancelProductOrderCreateEvent'; + + /** + * Client listener for entity CancelProductOrderCreateEvent. + * + * Example of a client listener for receiving the notification CancelProductOrderCreateEvent + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listenToCancelProductOrderCreateEvent()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToCancelProductOrderCreateEvent$Response(params: ListenToCancelProductOrderCreateEvent$Params, context?: HttpContext): Observable> { + return listenToCancelProductOrderCreateEvent(this.http, this.rootUrl, params, context); + } + + /** + * Client listener for entity CancelProductOrderCreateEvent. + * + * Example of a client listener for receiving the notification CancelProductOrderCreateEvent + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listenToCancelProductOrderCreateEvent$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + listenToCancelProductOrderCreateEvent(params: ListenToCancelProductOrderCreateEvent$Params, context?: HttpContext): Observable { + return this.listenToCancelProductOrderCreateEvent$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + +} diff --git a/src/app/openApis/productOrderingManagement/services/product-order.service.ts b/src/app/openApis/productOrderingManagement/services/product-order.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..975f6d22bf59ec99552ff5e8002e844987f42230 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/services/product-order.service.ts @@ -0,0 +1,271 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpClient, HttpContext } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { BaseService } from '../base-service'; +import { ApiConfiguration } from '../api-configuration'; +import { StrictHttpResponse } from '../strict-http-response'; + +import { createProductOrder } from '../fn/product-order/create-product-order'; +import { CreateProductOrder$Params } from '../fn/product-order/create-product-order'; +import { deleteProductOrder } from '../fn/product-order/delete-product-order'; +import { DeleteProductOrder$Params } from '../fn/product-order/delete-product-order'; +import { getImageProductOrderItemRelationshipGraph } from '../fn/product-order/get-image-product-order-item-relationship-graph'; +import { GetImageProductOrderItemRelationshipGraph$Params } from '../fn/product-order/get-image-product-order-item-relationship-graph'; +import { getImageProductOrderNotesGraph } from '../fn/product-order/get-image-product-order-notes-graph'; +import { GetImageProductOrderNotesGraph$Params } from '../fn/product-order/get-image-product-order-notes-graph'; +import { listProductOrder } from '../fn/product-order/list-product-order'; +import { ListProductOrder$Params } from '../fn/product-order/list-product-order'; +import { patchProductOrder } from '../fn/product-order/patch-product-order'; +import { PatchProductOrder$Params } from '../fn/product-order/patch-product-order'; +import { ProductOrder } from '../models/product-order'; +import { retrieveProductOrder } from '../fn/product-order/retrieve-product-order'; +import { RetrieveProductOrder$Params } from '../fn/product-order/retrieve-product-order'; + + +/** + * the productOrder API + */ +@Injectable({ providedIn: 'root' }) +export class ProductOrderService extends BaseService { + constructor(config: ApiConfiguration, http: HttpClient) { + super(config, http); + } + + /** Path part for operation `listProductOrder()` */ + static readonly ListProductOrderPath = '/productOrderingManagement/v4/productOrder'; + + /** + * List or find ProductOrder objects. + * + * This operation list or find ProductOrder entities + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `listProductOrder()` instead. + * + * This method doesn't expect any request body. + */ + listProductOrder$Response(params?: ListProductOrder$Params, context?: HttpContext): Observable>> { + return listProductOrder(this.http, this.rootUrl, params, context); + } + + /** + * List or find ProductOrder objects. + * + * This operation list or find ProductOrder entities + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `listProductOrder$Response()` instead. + * + * This method doesn't expect any request body. + */ + listProductOrder(params?: ListProductOrder$Params, context?: HttpContext): Observable> { + return this.listProductOrder$Response(params, context).pipe( + map((r: StrictHttpResponse>): Array => r.body) + ); + } + + /** Path part for operation `createProductOrder()` */ + static readonly CreateProductOrderPath = '/productOrderingManagement/v4/productOrder'; + + /** + * Creates a ProductOrder. + * + * This operation creates a ProductOrder entity. + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `createProductOrder()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + createProductOrder$Response(params: CreateProductOrder$Params, context?: HttpContext): Observable> { + return createProductOrder(this.http, this.rootUrl, params, context); + } + + /** + * Creates a ProductOrder. + * + * This operation creates a ProductOrder entity. + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `createProductOrder$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + createProductOrder(params: CreateProductOrder$Params, context?: HttpContext): Observable { + return this.createProductOrder$Response(params, context).pipe( + map((r: StrictHttpResponse): ProductOrder => r.body) + ); + } + + /** Path part for operation `retrieveProductOrder()` */ + static readonly RetrieveProductOrderPath = '/productOrderingManagement/v4/productOrder/{id}'; + + /** + * Retrieves a ProductOrder by ID. + * + * This operation retrieves a ProductOrder entity. Attribute selection is enabled for all first level attributes. + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `retrieveProductOrder()` instead. + * + * This method doesn't expect any request body. + */ + retrieveProductOrder$Response(params: RetrieveProductOrder$Params, context?: HttpContext): Observable> { + return retrieveProductOrder(this.http, this.rootUrl, params, context); + } + + /** + * Retrieves a ProductOrder by ID. + * + * This operation retrieves a ProductOrder entity. Attribute selection is enabled for all first level attributes. + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `retrieveProductOrder$Response()` instead. + * + * This method doesn't expect any request body. + */ + retrieveProductOrder(params: RetrieveProductOrder$Params, context?: HttpContext): Observable { + return this.retrieveProductOrder$Response(params, context).pipe( + map((r: StrictHttpResponse): ProductOrder => r.body) + ); + } + + /** Path part for operation `deleteProductOrder()` */ + static readonly DeleteProductOrderPath = '/productOrderingManagement/v4/productOrder/{id}'; + + /** + * Deletes a ProductOrder. + * + * This operation deletes a ProductOrder entity. + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `deleteProductOrder()` instead. + * + * This method doesn't expect any request body. + */ + deleteProductOrder$Response(params: DeleteProductOrder$Params, context?: HttpContext): Observable> { + return deleteProductOrder(this.http, this.rootUrl, params, context); + } + + /** + * Deletes a ProductOrder. + * + * This operation deletes a ProductOrder entity. + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `deleteProductOrder$Response()` instead. + * + * This method doesn't expect any request body. + */ + deleteProductOrder(params: DeleteProductOrder$Params, context?: HttpContext): Observable { + return this.deleteProductOrder$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `patchProductOrder()` */ + static readonly PatchProductOrderPath = '/productOrderingManagement/v4/productOrder/{id}'; + + /** + * Updates partially a ProductOrder. + * + * This operation updates partially a ProductOrder entity. + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `patchProductOrder()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + patchProductOrder$Response(params: PatchProductOrder$Params, context?: HttpContext): Observable> { + return patchProductOrder(this.http, this.rootUrl, params, context); + } + + /** + * Updates partially a ProductOrder. + * + * This operation updates partially a ProductOrder entity. + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `patchProductOrder$Response()` instead. + * + * This method sends `application/json;charset=utf-8` and handles request body of type `application/json;charset=utf-8`. + */ + patchProductOrder(params: PatchProductOrder$Params, context?: HttpContext): Observable { + return this.patchProductOrder$Response(params, context).pipe( + map((r: StrictHttpResponse): ProductOrder => r.body) + ); + } + + /** Path part for operation `getImageProductOrderNotesGraph()` */ + static readonly GetImageProductOrderNotesGraphPath = '/productOrderingManagement/v4/productOrder/{id}/notes_graph'; + + /** + * Get a SVG image with Product order notes activity graph. + * + * This operation returns a SVG image with Product order notes activity graph + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `getImageProductOrderNotesGraph()` instead. + * + * This method doesn't expect any request body. + */ + getImageProductOrderNotesGraph$Response(params: GetImageProductOrderNotesGraph$Params, context?: HttpContext): Observable> { + return getImageProductOrderNotesGraph(this.http, this.rootUrl, params, context); + } + + /** + * Get a SVG image with Product order notes activity graph. + * + * This operation returns a SVG image with Product order notes activity graph + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `getImageProductOrderNotesGraph$Response()` instead. + * + * This method doesn't expect any request body. + */ + getImageProductOrderNotesGraph(params: GetImageProductOrderNotesGraph$Params, context?: HttpContext): Observable { + return this.getImageProductOrderNotesGraph$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + + /** Path part for operation `getImageProductOrderItemRelationshipGraph()` */ + static readonly GetImageProductOrderItemRelationshipGraphPath = '/productOrderingManagement/v4/productOrder/{id}/item/{itemid}/relationship_graph'; + + /** + * Get a SVG image with product order item services relationship graph. + * + * This operation returns a SVG image with Product order item services relationship graph + * + * This method provides access to the full `HttpResponse`, allowing access to response headers. + * To access only the response body, use `getImageProductOrderItemRelationshipGraph()` instead. + * + * This method doesn't expect any request body. + */ + getImageProductOrderItemRelationshipGraph$Response(params: GetImageProductOrderItemRelationshipGraph$Params, context?: HttpContext): Observable> { + return getImageProductOrderItemRelationshipGraph(this.http, this.rootUrl, params, context); + } + + /** + * Get a SVG image with product order item services relationship graph. + * + * This operation returns a SVG image with Product order item services relationship graph + * + * This method provides access only to the response body. + * To access the full response (for headers, for example), `getImageProductOrderItemRelationshipGraph$Response()` instead. + * + * This method doesn't expect any request body. + */ + getImageProductOrderItemRelationshipGraph(params: GetImageProductOrderItemRelationshipGraph$Params, context?: HttpContext): Observable { + return this.getImageProductOrderItemRelationshipGraph$Response(params, context).pipe( + map((r: StrictHttpResponse): void => r.body) + ); + } + +} diff --git a/src/app/openApis/productOrderingManagement/strict-http-response.ts b/src/app/openApis/productOrderingManagement/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..b3fa5fbcb411746975aeb7202828f5175cc88a85 --- /dev/null +++ b/src/app/openApis/productOrderingManagement/strict-http-response.ts @@ -0,0 +1,12 @@ +/* tslint:disable */ +/* eslint-disable */ +/* Code generated by ng-openapi-gen DO NOT EDIT. */ + +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http response to not have the body defined as `T | null`, but `T` only. + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/p_chat/assistant/assistant.component.html b/src/app/p_chat/assistant/assistant.component.html new file mode 100644 index 0000000000000000000000000000000000000000..9a4d044d3ad84b3b359f2af4aef79dc491f0c3b5 --- /dev/null +++ b/src/app/p_chat/assistant/assistant.component.html @@ -0,0 +1,58 @@ +
    +
    +
    + + + +
    +
    + +
    +
    + OpenSlice AI Assistant + + Powered by MCP Backend & LLM + +
    +
    +
    + + +
    +
    + + + {{ message.timestamp | date:'shortTime' }} +
    +
    + +
    +
    +
    + + + +
    + OpenSlice AI is thinking... +
    +
    +
    + + + + Type your message + + + + +
    +
    +
    +
    \ No newline at end of file diff --git a/src/app/p_chat/assistant/assistant.component.scss b/src/app/p_chat/assistant/assistant.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..97904a594a938a2388c9f800c1584f4b5aad9239 --- /dev/null +++ b/src/app/p_chat/assistant/assistant.component.scss @@ -0,0 +1,293 @@ +.large-header { + padding: 16px 20px !important; + border-bottom: 1px solid rgba(0, 0, 0, 0.08); + + .header-wrapper { + display: flex; + align-items: center; + gap: 16px; + } + + .brand-logo-container { + height: 52px; // This matches the combined height of Title (1.5rem) + Subtitle + Gap + width: 52px; + display: flex; + align-items: center; + justify-content: center; + // background: #f8f9fa; + border-radius: 12px; + overflow: hidden; + flex-shrink: 0; + + .brand-logo { + height: 100%; + width: 100%; + object-fit: contain; // Ensures logo doesn't distort + // padding: 4px; // Tiny padding so logo doesn't touch the container edges + } + } + + .title-group { + display: flex; + flex-direction: column; + justify-content: center; + line-height: 1.2; + + .gradient-title { + font-weight: 800 !important; + letter-spacing: -0.5px; + font-size: 1.25rem !important; + // background: linear-gradient(90deg, #3f51b5, #7b1fa2); + background: linear-gradient(90deg, #00AFBB, #C8D400); + + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + margin: 0; + } + + .status-subtitle { + display: flex; + align-items: center; + margin-top: 4px; + font-size: 0.75rem; + color: #666; + + .status-dot { + height: 7px; + width: 7px; + background-color: #4caf50; + border-radius: 50%; + margin-right: 6px; + animation: pulse 2s infinite; + } + } + } +} + +::ng-deep .large-header .mat-card-header-text { + margin: 0 !important; + display: flex; + flex-direction: column; + justify-content: center; +} + +@keyframes pulse { + 0% { + transform: scale(0.95); + box-shadow: 0 0 0 0 rgba(76, 175, 80, 0.7); + } + + 70% { + transform: scale(1); + box-shadow: 0 0 0 6px rgba(76, 175, 80, 0); + } + + 100% { + transform: scale(0.95); + box-shadow: 0 0 0 0 rgba(76, 175, 80, 0); + } +} + + +.chat-container { + // max-width: 1200px; + margin: 20px auto; + height: 75vh; // Use viewport height for better responsiveness + min-height: 400px; + display: flex; + flex-direction: column; + overflow: hidden; +} + +.chat-history { + flex-grow: 1; + overflow-y: auto; + padding: 16px; + background-color: #f8f9fa; + display: flex; + flex-direction: column; + gap: 12px; + scroll-behavior: smooth; + + /* Custom Scrollbar for a cleaner look */ + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #ccc; + border-radius: 10px; + } +} + +.user-row { + display: flex; + justify-content: flex-end; + + .message-bubble { + background-color: #3f51b5; // Material Primary + color: white; + border-radius: 15px 15px 0 15px; + } +} + +.ai-row { + display: flex; + justify-content: flex-start; + + .message-bubble { + background-color: #e0e0e0; + color: rgba(0, 0, 0, 0.87); + border-radius: 15px 15px 15px 0; + } +} + +.ai-loading-bubble { + display: flex; + align-items: center; + gap: 12px; + background-color: #f0f2f5 !important; + border: 1px solid rgba(0, 0, 0, 0.05); + padding: 10px 16px !important; + + .loading-text { + font-size: 0.85rem; + font-style: italic; + color: #5c6bc0; + font-weight: 500; + } +} + +.typing-indicator { + display: flex; + align-items: center; + gap: 4px; + + span { + height: 6px; + width: 6px; + background: linear-gradient(135deg, #3f51b5 0%, #7b1fa2 100%); + border-radius: 50%; + display: block; + opacity: 0.4; + animation: typing 1s infinite; + + &:nth-child(2) { + animation-delay: 0.2s; + } + + &:nth-child(3) { + animation-delay: 0.4s; + } + } +} + +@keyframes typing { + + 0%, + 100% { + transform: translateY(0); + opacity: 0.4; + } + + 50% { + transform: translateY(-5px); + opacity: 1; + } +} + +.message-bubble { + padding: 12px 16px; + max-width: 85%; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05); + animation: fadeIn 0.3s ease-in-out; + + // white-space: pre-wrap; + word-wrap: break-word; // Standard support + overflow-wrap: break-word; // Modern support + + // Target elements generated by the markdown parser + ::ng-deep markdown { + p { + margin-bottom: 8px; + white-space: initial; + } + + p:last-child { + margin-bottom: 0 !important; + } + + code { + background-color: rgba(0, 0, 0, 0.1); + padding: 2px 4px; + border-radius: 4px; + font-family: monospace; + } + + ul, + ol { + padding-left: 20px; + margin: 8px 0; + } + + blockquote { + border-left: 3px solid #ccc; + margin: 8px 0; + padding-left: 10px; + font-style: italic; + } + + pre { + background-color: #2d2d2d; + color: #ccc; + padding: 12px; + border-radius: 8px; + overflow-x: auto; + margin: 10px 0; + } + + img { + max-width: 100%; + border-radius: 8px; + } + } + +} + +.timestamp { + display: block; + font-size: 0.7rem; + margin-top: 4px; + opacity: 0.7; + text-align: right; +} + +// Ensure the user bubble markdown text stays white +.user-row .message-bubble ::ng-deep markdown { + color: white; + + code { + background-color: rgba(255, 255, 255, 0.2); + } +} + + +.chat-input-area { + padding: 8px 16px !important; + + .full-width { + width: 100%; + } +} + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(10px); + } + + to { + opacity: 1; + transform: translateY(0); + } +} \ No newline at end of file diff --git a/src/app/p_chat/assistant/assistant.component.spec.ts b/src/app/p_chat/assistant/assistant.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..f04738852a963e24d038a865434c54f360bb4bf1 --- /dev/null +++ b/src/app/p_chat/assistant/assistant.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AssistantComponent } from './assistant.component'; + +describe('AssistantComponent', () => { + let component: AssistantComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ AssistantComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(AssistantComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_chat/assistant/assistant.component.ts b/src/app/p_chat/assistant/assistant.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..7e28f9a1b169619d1b63e70866e358f149e7909b --- /dev/null +++ b/src/app/p_chat/assistant/assistant.component.ts @@ -0,0 +1,110 @@ +import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { AssistantService } from './services/assistant.service'; +import { Subscription } from 'rxjs'; +import { FormsModule } from '@angular/forms'; +import { AuthService } from 'src/app/shared/services/auth.service'; + +@Component({ + selector: 'app-assistant', + templateUrl: './assistant.component.html', + styleUrls: ['./assistant.component.scss'] +}) +export class AssistantComponent implements OnInit { + + + @ViewChild('chatHistory') private chatHistoryContainer!: ElementRef; + messages: ChatMessage[] = []; + userInput: string = ''; + isLoading: boolean = false; + + private chatSubscription?: Subscription; + + constructor( + private assistantService: AssistantService, + private authService: AuthService + ) { } + + ngOnInit(): void { + this.messages = [ + { text: `Hello, ${this.authService.portalUserJWT.preferred_username}! How can I assist you today?`, sender: 'ai', timestamp: new Date() } + ]; + } + + sendMessage(): void { + const currentInput = this.userInput.trim(); + if (!currentInput) return; + + this.messages.push({ + text: currentInput, + sender: 'user', + timestamp: new Date() + }); + + this.userInput = ''; // Clear input + this.isLoading = true; // Show loading indicator + + // Trigger scroll after DOM updates from user message + this.scheduleScroll(); + + // Send to backend and get AI response + this.chatSubscription = this.assistantService.sendMessage(currentInput).subscribe({ + next: (response) => { + const cleanMessage = response.answer.trim() + + this.messages.push({ + text: cleanMessage, + sender: 'ai', + timestamp: new Date() + }); + this.isLoading = false; + this.scheduleScroll(); + }, + error: (err) => { + console.error('Error getting AI response:', err); + this.messages.push({ + text: 'Oops! Something went wrong. Please try again.', + sender: 'ai', + timestamp: new Date() + }); + this.isLoading = false; + this.scheduleScroll(); + } + }); + } + + handleEnter(event: any): void { + // If user presses Enter WITHOUT Shift, send the message + if (!event.shiftKey) { + event.preventDefault(); // Prevents adding a new line to the textarea + this.sendMessage(); + } +} + + private scheduleScroll(): void { + // Replaces the 'effect' logic by manually scheduling a scroll check + setTimeout(() => this.scrollToBottom(), 0); + } + + private scrollToBottom(): void { + if (this.chatHistoryContainer) { + const element = this.chatHistoryContainer.nativeElement; + element.scrollTop = element.scrollHeight; + } + } + + ngOnDestroy(): void { + // Clean up subscription when component is destroyed + if (this.chatSubscription) { + this.chatSubscription.unsubscribe(); + } + } + +} + + +export interface ChatMessage { + text: string; + sender: 'user' | 'ai'; // To differentiate who sent the message + timestamp: Date; +} \ No newline at end of file diff --git a/src/app/p_chat/assistant/services/assistant.service.ts b/src/app/p_chat/assistant/services/assistant.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..be2fe45d5c6ab63163db79f22c28ffa8efd42606 --- /dev/null +++ b/src/app/p_chat/assistant/services/assistant.service.ts @@ -0,0 +1,20 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs/internal/Observable'; +import { BootstrapService } from 'src/app/bootstrap/bootstrap.service'; + +@Injectable({ + providedIn: 'root' +}) +export class AssistantService { + private assistantURL = this.bootstrapService.getConfig().ASSISTANT_URL; + + constructor(private http:HttpClient + , private bootstrapService:BootstrapService + ) {console.log("AssistantService assistantURL: ", this.assistantURL); } + + sendMessage(message: string): Observable { + const payload = { question: message }; + return this.http.post('/ask', payload); + } +} diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.html index e62fdea4c0bb1feade6e47216e454c7256878d5b..41d5ae7d7c30643387f4913db1be14f3ca4bb9d3 100644 --- a/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.html +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.html @@ -151,6 +151,135 @@
+ +
+
+
+
+
+ +
+
+
Please select a Linked Product Specification in the "Main Properties" tab first.
+
+
+ +
+ +
+
Choose Configurable Characteristics to expose from: + {{editForm.value.productSpecification.name}} + +
+ Select the configurable characteristics to include in the product offering. Expand to select specific characteristic values. +
+ +
+ No characteristics found in the selected Product Specification. +
+ + + + + +
+ + + +
+ {{char.name}} + {{char.valueType}} +
+ +
+ {{ getSelectedValuesCount(char) }} / {{ char.productSpecCharacteristicValue.length }} values +
+
+
+ + +
+

{{char.description}}

+
+

+ This characteristic has no pre-defined values. +

+
+ +
+

Select the characteristic values for this offering:

+ +
+
+ + + + + + {{val.value.alias}}: {{val.value.value}} + - ({{val.unitOfMeasure}}) + + + {{val.value.value}} + ({{val.unitOfMeasure}}) + + + + Empty Value + + + +
+
+ +
+ + +
+
+
+
+ + +
+
+ +
+
+ +
+
+ + +
+
+
+ + +
+
+
+ + +
diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.scss b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.scss index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c6dda67cce3cc746ddc24b94802518bf001bd975 100644 --- a/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.scss +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.scss @@ -0,0 +1,3 @@ +.nav-link:hover { + cursor: pointer; +} diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.ts index a7e5b6f15fdc9d148b4c63db9213872e9dd7d946..90aed37f7d862e9662a647bcae6f9f8eef30b965 100644 --- a/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.ts +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.ts @@ -1,15 +1,19 @@ -import { trigger } from '@angular/animations'; -import { SelectionChange } from '@angular/cdk/collections'; import { Component, OnInit } from '@angular/core'; +import { trigger } from '@angular/animations'; import { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms'; -import { MatOptionSelectionChange } from '@angular/material/core'; import { MatDialog, MatDialogRef } from '@angular/material/dialog'; +import { MatCheckboxChange } from '@angular/material/checkbox'; import { MatSelectChange } from '@angular/material/select'; import { ActivatedRoute, ActivationEnd, Router } from '@angular/router'; import { ToastrService } from 'ngx-toastr'; -import { relative } from 'path'; import { Subscription } from 'rxjs'; -import { ProductOffering, ProductOfferingCreate, ProductOfferingUpdate, ProductSpecification } from 'src/app/openApis/productCatalogManagement/models'; +import { + ProductOffering, + ProductOfferingCreate, + ProductOfferingUpdate, + ProductSpecification, + ProductSpecificationCharacteristicRes +} from 'src/app/openApis/productCatalogManagement/models'; import { ProductOfferingService, ProductSpecificationService } from 'src/app/openApis/productCatalogManagement/services'; import { fadeIn } from 'src/app/shared/animations/animations'; import { AppService } from 'src/app/shared/services/app.service'; @@ -37,17 +41,22 @@ export class EditProductOfferingsComponent implements OnInit { offeringNotFound: boolean = false finishedLoading: boolean = false newOffering = false - productSpecifications: ProductSpecification[] + + currentLinkedSpec: ProductSpecification; + availableSpecCharacteristics: ProductSpecificationCharacteristicRes[] = []; + + selectedCharacteristics: Set = new Set(); + selectedCharValues: Map = new Map(); - listItems = ["Main Properties"] + listItems = ["Main Properties", "Product Offering Characteristics"] activeListItem = "Main Properties" + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] - editForm = new UntypedFormGroup({ + editForm = new UntypedFormGroup({ description: new UntypedFormControl(), lifecycleStatus: new UntypedFormControl("In design", Validators.required), name: new UntypedFormControl(null, Validators.required), - // isBundle: new FormControl(), validFor: new UntypedFormGroup({ endDateTime: new UntypedFormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20)), Validators.required), startDateTime: new UntypedFormControl(new Date(), Validators.required) @@ -55,26 +64,20 @@ export class EditProductOfferingsComponent implements OnInit { version: new UntypedFormControl("0.1.0", Validators.required), productSpecification: new UntypedFormControl() }) - - lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] subscriptions = new Subscription() - // valueChangeSubscription$: any - ngOnInit(): void { this.initSubscriptions() this.listProductSpecifications() - if (this.activatedRoute.snapshot.params.id) - { + if (this.activatedRoute.snapshot.params.id) { this.offeringID = this.activatedRoute.snapshot.params.id this.retrieveOffering() } else { this.newOffering = true this.finishedLoading = true } - } initSubscriptions() { @@ -88,38 +91,6 @@ export class EditProductOfferingsComponent implements OnInit { )) } - - onSpecificationChange(event: MatSelectChange) { - const dialogRef = this.dialog.open(CopySpecificationPropertiesComponent, { autoFocus: true }) - - dialogRef.afterClosed().subscribe(confirmCopy => { - if (confirmCopy) { - this.editForm.patchValue({ - name: event.value.name, - description: event.value.description, - }) - } - }) - } - - - - selectListitem(item: string) { - if (this.editForm.pristine) { - this.activeListItem = item - } else { - const dialogRef = this.dialog.open(DiscardChangesComponent, {autoFocus: true}) - - dialogRef.afterClosed().subscribe (discardChanges => { - if (discardChanges) { - this.editForm.patchValue(this.offering) - this.editForm.markAsPristine() - this.activeListItem = item - } - }) - } - } - listProductSpecifications() { this.specService.listProductSpecification({}).subscribe( data => this.productSpecifications = data, @@ -135,21 +106,17 @@ export class EditProductOfferingsComponent implements OnInit { if (this.offering) { this.finishedLoading = true this.editForm.reset() - //populate General Panel Info if (!this.offering.validFor) this.offering.validFor = { endDateTime: new Date(new Date().setFullYear(new Date().getFullYear()+20)).toISOString(), startDateTime: new Date().toISOString() } + this.editForm.patchValue(this.offering) this.editForm.markAsPristine() if (this.offering.productSpecification) { - this.editForm.patchValue({productSpecification: this.productSpecifications.find(el => el.id === this.offering.productSpecification.id) }) + const specRef = this.productSpecifications.find(el => el.id === this.offering.productSpecification.id); + this.editForm.patchValue({ productSpecification: specRef }); + + this.loadLinkedSpecDetails(this.offering.productSpecification.id, true); } - - //populate Product Specification Relationship - // this.filteredServiceSpecificationRel$ = this.serviceSpecificationRelationshipFilterCtrl.valueChanges.pipe( - // startWith(null), - // map( (value:null | string) => value ? this._filterOnRelatedSpecs(value) : this.spec.serviceSpecification.slice() ) - // ) - } else { this.offeringNotFound = true @@ -158,59 +125,414 @@ export class EditProductOfferingsComponent implements OnInit { ) } + + loadLinkedSpecDetails(specId: string, isInitialLoad: boolean = false) { + this.specService.retrieveProductSpecification({ id: specId }).subscribe( + fullSpec => { + this.currentLinkedSpec = fullSpec; + this.availableSpecCharacteristics = fullSpec.productSpecCharacteristic || []; + if (!isInitialLoad) { + this.selectedCharacteristics.clear(); + this.selectedCharValues.clear(); + // this.selectAllCharacteristics(); + } + + if (isInitialLoad && this.offering.prodSpecCharValueUse) { + this.offering.prodSpecCharValueUse.forEach(offeringChar => { + this.selectedCharacteristics.add(offeringChar.name); + + const specCharDef = this.availableSpecCharacteristics.find(c => c.name === offeringChar.name); + + const selectedUUIDs: string[] = []; + + if (offeringChar.productSpecCharacteristicValue && specCharDef) { + offeringChar.productSpecCharacteristicValue.forEach(savedVal => { + const matchingSpecVal = specCharDef.productSpecCharacteristicValue?.find(specVal => { + const sameValue = specVal.value?.value === savedVal.value?.value; + const sameAlias = specVal.value?.alias === savedVal.value?.alias; + return sameValue && sameAlias; + }); + + if (matchingSpecVal && matchingSpecVal.uuid) { + selectedUUIDs.push(matchingSpecVal.uuid); + } + }); + } + this.selectedCharValues.set(offeringChar.name, selectedUUIDs); + }); + } + + }, + error => this.toastrService.error("Failed to load full spec details", error) + ); + } + + // ------------------------------------------------------------------ + + onSpecificationChange(event: MatSelectChange) { + + const dialogRef = this.dialog.open(CopySpecificationPropertiesComponent, { autoFocus: true }); + + dialogRef.afterClosed().subscribe(confirmCopy => { + if (confirmCopy) { + this.editForm.patchValue({ + name: event.value.name, + description: event.value.description, + }); + + } + }) + + this.selectedCharacteristics.clear(); + this.availableSpecCharacteristics = []; + if (event.value && event.value.id) { + this.loadLinkedSpecDetails(event.value.id, false); + } + + } + + isCharacteristicSelected(char: ProductSpecificationCharacteristicRes): boolean { + return this.selectedCharacteristics.has(char.name); + } + + onCharacteristicToggle(char: ProductSpecificationCharacteristicRes, event: MatCheckboxChange) { + if (event.checked) { + this.selectedCharacteristics.add(char.name); + // if (!this.selectedCharValues.has(char.name)) { + // this.selectAllValues(char); + // } + } else { + this.selectedCharacteristics.delete(char.name); + this.selectedCharValues.set(char.name, []); + } + this.editForm.markAsDirty(); + } + + isValueSelected(char: ProductSpecificationCharacteristicRes, val: any): boolean { + if (!val || !val.uuid) return false; + + const selectedUUIDs = this.selectedCharValues.get(char.name); + return selectedUUIDs ? selectedUUIDs.includes(val.uuid) : false; + } + + getSelectedValuesCount(char: ProductSpecificationCharacteristicRes): number { + const selectedArray = this.selectedCharValues.get(char.name); + return selectedArray ? selectedArray.length : 0; + } + + onValueToggle(char: ProductSpecificationCharacteristicRes, val: any, event: MatCheckboxChange) { + if (!val || !val.uuid) return; + + let selectedUUIDs = this.selectedCharValues.get(char.name); + if (!selectedUUIDs) { + selectedUUIDs = []; + this.selectedCharValues.set(char.name, selectedUUIDs); + } + + const uuid = val.uuid; + + if (event.checked) { + if (!selectedUUIDs.includes(uuid)) { + selectedUUIDs.push(uuid); + } + } else { + const index = selectedUUIDs.indexOf(uuid); + if (index > -1) { + selectedUUIDs.splice(index, 1); + } + } + this.editForm.markAsDirty(); + } + + selectAllCharacteristics() { + this.availableSpecCharacteristics.forEach(c => { + this.selectedCharacteristics.add(c.name); + // this.selectAllValues(c); + }); + this.editForm.markAsDirty(); + } + + deselectAllCharacteristics() { + this.selectedCharacteristics.clear(); + this.selectedCharValues.clear(); + this.editForm.markAsDirty(); + } + + selectAllValues(char: ProductSpecificationCharacteristicRes) { + const allUUIDs: string[] = []; + + if (char.productSpecCharacteristicValue) { + char.productSpecCharacteristicValue.forEach(v => { + if (v.uuid) { + allUUIDs.push(v.uuid); + } + }); + } + this.selectedCharValues.set(char.name, allUUIDs); + this.editForm.markAsDirty(); + } + + deselectAllValues(char: ProductSpecificationCharacteristicRes) { + + this.selectedCharValues.set(char.name, []); + this.editForm.markAsDirty(); + + } + + // ------------------------------------------------------------------ + updateOfferingGeneral() { if (this.editForm.valid) { - const updateObj: ProductOfferingCreate | ProductOfferingUpdate = { - description: this.editForm.value.description, - lifecycleStatus: this.editForm.value.lifecycleStatus, - name: this.editForm.value.name, - validFor: this.editForm.value.validFor, - version: this.editForm.value.version + const formValue = this.editForm.value; + const linkedSpec = this.currentLinkedSpec || formValue.productSpecification; + + let productSpecRef: any = undefined; + if (linkedSpec) { + productSpecRef = { id: linkedSpec.id, name: linkedSpec.name }; + if (linkedSpec.version) productSpecRef.version = linkedSpec.version; } - - if (this.editForm.value.productSpecification) { - updateObj.productSpecification = {name: this.editForm.value.productSpecification.name, id: this.editForm.value.productSpecification.id} + + let characteristicsToSave: any[] = []; + + if (!this.newOffering && this.offering && this.offering.prodSpecCharValueUse) { + const originalSpecId = this.offering.productSpecification?.id; + const currentSpecId = linkedSpec?.id; + + if (originalSpecId === currentSpecId) { + characteristicsToSave = this.offering.prodSpecCharValueUse; + } else { + characteristicsToSave = []; + } } + + const updateObj: ProductOfferingCreate | ProductOfferingUpdate = { + name: formValue.name, + description: formValue.description || '', + lifecycleStatus: formValue.lifecycleStatus, + version: formValue.version, + validFor: {"startDateTime": formValue.validFor.startDateTime, "endDateTime": formValue.validFor.endDateTime}, + isSellable: true, + statusReason: '', + productSpecification: productSpecRef, + + isBundle: linkedSpec?.isBundle || false, + attachment: linkedSpec?.attachment || [], + + prodSpecCharValueUse: characteristicsToSave, + + serviceCandidate: (linkedSpec && (linkedSpec as any).serviceSpecification && (linkedSpec as any).serviceSpecification.length > 0) + ? { + id: (linkedSpec as any).serviceSpecification[0].id, + name: (linkedSpec as any).serviceSpecification[0].name, + version: (linkedSpec as any).serviceSpecification[0].version, + '@type': 'ServiceCandidateRef' + } + : undefined, + + resourceCandidate: (linkedSpec && (linkedSpec as any).resourceSpecification && (linkedSpec as any).resourceSpecification.length > 0) + ? { + id: (linkedSpec as any).resourceSpecification[0].id, + name: (linkedSpec as any).resourceSpecification[0].name, + version: (linkedSpec as any).resourceSpecification[0].version, + '@type': 'ResourceCandidateRef' + } + : undefined, + + serviceLevelAgreement: (linkedSpec as any).serviceLevelAgreement || undefined, + + agreement: [], + bundledProductOffering: [], + category: [], + channel: [], + marketSegment: [], + place: [], + productOfferingPrice: [], + productOfferingTerm: [], + '@type': 'ProductOffering' + }; - let updatedOffering: ProductOffering + let updatedOffering: ProductOffering; if (this.newOffering) { this.offeringService.createProductOffering(updateObj).subscribe( data => { updatedOffering = data }, - error => console.error(error), + error => { console.error(error); this.toastrService.error("Failed to create offering"); }, () => { - this.newOffering = false - this.router.navigate([updatedOffering.id], {relativeTo: this.activatedRoute}) - this.toastrService.success("Product Offering was successfully created") - this.refreshProductOffering(updatedOffering) + this.newOffering = false; + this.router.navigate([updatedOffering.id], {relativeTo: this.activatedRoute}); + this.toastrService.success("Product Offering created. Please configure characteristics in the next tab."); + this.refreshProductOffering(updatedOffering); } - ) - } - else { + ); + } else { this.offeringService.patchProductOffering({ id: this.offeringID, productOffering: updateObj }).subscribe( data => { updatedOffering = data }, - error => console.error(error), + error => { console.error(error); this.toastrService.error("Failed to update offering"); }, () => { - this.toastrService.success("Product Offering was successfully updated") - this.refreshProductOffering(updatedOffering) + this.toastrService.success("Product Offering General Info updated"); + this.refreshProductOffering(updatedOffering); } - ) + ); } } - - } + } + + // ------------------------------------------------------------------ + + updateOfferingCharacteristics() { + if (!this.offeringID) { + this.toastrService.error("Please save the General Properties first to create the Offering."); + return; + } + + if (!this.currentLinkedSpec) { + this.toastrService.warning("No Product Specification linked."); + return; + } + + const charsToMap = this.currentLinkedSpec.productSpecCharacteristic?.filter( + char => this.selectedCharacteristics.has(char.name) + ) || []; + + const mappedChars = this.mapSpecCharacteristicsToOffering(charsToMap, this.currentLinkedSpec); + + const patchObj: ProductOfferingUpdate = { + prodSpecCharValueUse: mappedChars + }; + + let updatedOffering: ProductOffering; + + this.offeringService.patchProductOffering({ id: this.offeringID, productOffering: patchObj }).subscribe( + data => { updatedOffering = data }, + error => { + console.error(error); + this.toastrService.error("Failed to update characteristics: " + (error.error?.message || error.message)); + }, + () => { + this.toastrService.success("Product Offering Characteristics updated successfully"); + this.refreshProductOffering(updatedOffering); + } + ); + } + + + private mapSpecCharacteristicsToOffering(specChars: ProductSpecificationCharacteristicRes[], linkedSpec: ProductSpecification | null): any[] { + if (!specChars) return []; + + return specChars.map(char => { + + let mappedValues = []; + if (char.productSpecCharacteristicValue && char.productSpecCharacteristicValue.length > 0) { + const selectedUUIDs = this.selectedCharValues.get(char.name); + + mappedValues = char.productSpecCharacteristicValue + .filter(val => { + return val.uuid && selectedUUIDs && selectedUUIDs.includes(val.uuid); + }) + .map(val => { + const { uuid, ...rest } = val as any; + return rest; + }); + } + + const charId = char.uuid; + // const charUuid = char.uuid; + let charVersion = char.version; + if (!charVersion && linkedSpec) charVersion = linkedSpec.version; + + const charRef: any = { + id: charId, + name: char.name, + '@type': 'ProductSpecificationCharacteristic', + '@referredType': 'ProductSpecificationCharacteristic' + }; + // if (charUuid) charRef.uuid = charUuid; + if (charVersion) charRef.version = charVersion; + + let parentSpecRef: any = undefined; + if (linkedSpec) { + parentSpecRef = { + id: linkedSpec.id, + name: linkedSpec.name, + version: linkedSpec.version, + '@type': 'ProductSpecificationRef', + '@referredType': 'ProductSpecification' + }; + } + + return { + uuid: char.uuid, + lastUpdate: char.lastUpdate, + lifecyclestatusEnum: 'In Study', + '@baseType': 'ProductSpecCharacteristicUse', + '@type': 'ProductSpecCharacteristicUse', + '@schemaLocation': char['@schemaLocation'], + href: char.href, + name: char.name, + description: char.description, + lifecycleStatus: char.lifecycleStatus, + version: char.version, + minCardinality: char.minCardinality, + maxCardinality: char.maxCardinality, + valueType: char.valueType, + validFor: char.validFor, + productSpecCharacteristicValue: mappedValues, + // productSpecificationCharacteristic: charRef, + productSpecification: parentSpecRef + }; + }); + } refreshProductOffering(updatedOffering : ProductOffering) { this.offeringID = updatedOffering.id this.retrieveOffering() } + selectListitem(item: string) { + if (this.editForm.pristine) { + this.activeListItem = item; + } else { + const dialogRef = this.dialog.open(DiscardChangesComponent, { autoFocus: true }); + + dialogRef.afterClosed().subscribe(discardChanges => { + if (discardChanges) { + this.editForm.reset(); + + this.selectedCharacteristics.clear(); + this.selectedCharValues.clear(); + this.availableSpecCharacteristics = []; + this.currentLinkedSpec = null; + + if (this.offering) { + if (!this.offering.validFor) { + this.offering.validFor = { + endDateTime: new Date(new Date().setFullYear(new Date().getFullYear()+20)).toISOString(), + startDateTime: new Date().toISOString() + }; + } + this.editForm.patchValue(this.offering); + + if (this.offering.productSpecification) { + const specRef = this.productSpecifications.find(el => el.id === this.offering.productSpecification.id); + this.editForm.patchValue({ productSpecification: specRef }); + + this.loadLinkedSpecDetails(this.offering.productSpecification.id, true); + } + } + + this.editForm.markAsPristine(); + this.activeListItem = item; + } + }); + } + } + ngOnDestroy() { this.subscriptions.unsubscribe() } - } + @Component({ selector: 'app-discard-changes', templateUrl: 'discard-changes.component.html', @@ -249,4 +571,4 @@ export class CopySpecificationPropertiesComponent { onYesClick(): void { this.dialogRef.close(true) } -} +} \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/sort-by-value.pipe.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/sort-by-value.pipe.ts new file mode 100644 index 0000000000000000000000000000000000000000..282ce9b86cf02979220e7837773c96ca404d8760 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/sort-by-value.pipe.ts @@ -0,0 +1,21 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'sortByValue' +}) +export class SortByValuePipe implements PipeTransform { + + transform(values: any[]): any[] { + if (!values || !Array.isArray(values)) { + return []; + } + + return [...values].sort((a, b) => { + const labelA = (a.value?.alias || a.value?.value || '').toString().toLowerCase(); + const labelB = (b.value?.alias || b.value?.value || '').toString().toLowerCase(); + + return labelA.localeCompare(labelB, undefined, { numeric: true }); + }); + } + +} \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.html index 3e3dd66de889b9e7aa8944ce51e4f50613acf112..4eae4f5292bddf312c4ce30cb272a3727db9ccc7 100644 --- a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.html +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.html @@ -13,7 +13,10 @@ - {{spec.name}} + {{spec.name}} + + {{ spec['@type'] === 'CustomerFacingServiceSpecification' ? 'CFSS' : (spec['@type'] === 'ResourceFacingServiceSpecification' ? 'RFSS' : 'null') }} + @@ -26,7 +29,11 @@ Assigned Service Specifications - {{element.name}} + {{element.name}} + + {{ element['@type'] === 'CustomerFacingServiceSpecification' ? 'CFSS' : (element['@type'] === 'ResourceFacingServiceSpecification' ? 'RFSS' : 'null') }} + + diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.ts index ede201f82c0daac51201b7b30a4631eaff3ec863..4dda413e18881854c51c7c283d35bec8f8c3059d 100644 --- a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.ts +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.ts @@ -1,15 +1,18 @@ import { Component, OnInit, Inject, ViewChild, ElementRef } from '@angular/core'; import { UntypedFormControl } from '@angular/forms'; import { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog'; import { MatSort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; -import { Observable } from 'rxjs'; +import { ToastrService } from 'ngx-toastr'; +import { BehaviorSubject, combineLatest, Observable } from 'rxjs'; import { map, startWith } from 'rxjs/operators' import { ProductSpecification, ProductSpecificationUpdate } from 'src/app/openApis/productCatalogManagement/models'; import { ProductSpecificationService } from 'src/app/openApis/productCatalogManagement/services'; import { ServiceSpecification } from 'src/app/openApis/serviceCatalogManagement/models'; import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { ConfirmCharacteristicAssignmentComponent } from './confirm-characteristic-assignment/confirm-characteristic-assignment.component'; + @Component({ selector: 'app-assign-service-specification', @@ -24,7 +27,10 @@ export class AssignServiceSpecificationComponent implements OnInit { }, private dialogRef: MatDialogRef, private productSpecService: ProductSpecificationService, - private serviceSpecService: ServiceSpecificationService + private serviceSpecService: ServiceSpecificationService, + private toast: ToastrService, + private dialog: MatDialog + ) { } @ViewChild('specInput') specInput: ElementRef; @@ -37,44 +43,78 @@ export class AssignServiceSpecificationComponent implements OnInit { @ViewChild(MatSort, {static: true}) sort: MatSort; specInputCtrl = new UntypedFormControl(); - nonSelectedSpecs: ProductSpecification[] + nonSelectedSpecs: ProductSpecification[] = []; filteredSpecs$: Observable selectedSpecs: ProductSpecification[] = [] + // the subject holds the data when it arrives from the api + private availableSpecsSubject = new BehaviorSubject([]); + ngOnInit(): void { - this.listServiceSpecs() + this.listServiceSpecs(); + + // for the filtering to work when user starts typing in the input + this.filteredSpecs$ = combineLatest([ + this.specInputCtrl.valueChanges.pipe(startWith('')), + this.availableSpecsSubject.asObservable() + ]).pipe( + map(([inputValue, specs]) => { + const filterValue = typeof inputValue === 'string' ? inputValue.toLowerCase() : ''; + return this.performFilter(filterValue, specs); + }) + ); } listServiceSpecs() { this.serviceSpecService.listServiceSpecification({}).subscribe( - data => this.nonSelectedSpecs = data, - error => console.error(error), - () => { - //remove self from available spec list as well as the allready assigned specs - const initiallyAssignedSpecIDs: string[] = this.data.productSpec.serviceSpecification.map(el => el.id) - this.nonSelectedSpecs = this.nonSelectedSpecs.filter(spec => !initiallyAssignedSpecIDs.includes(spec.id)) - - this.selectedSpecs = this.data.productSpec.serviceSpecification.slice() - this.dataSource.data = this.selectedSpecs - this.dataSource.sort = this.sort - - this.filteredSpecs$ = this.specInputCtrl.valueChanges.pipe( - startWith(null), - map( (spec: string | ServiceSpecification) => typeof(spec) === 'string' ? this._filter(spec) : this.nonSelectedSpecs.slice() ) - ) - } - ) + data => { + // remove the already assigned specs + const initiallyAssignedIDs = this.data.productSpec.serviceSpecification.map(el => el.id); + const filteredData = data.filter(spec => !initiallyAssignedIDs.includes(spec.id)); + + // push data into subject + this.availableSpecsSubject.next(filteredData); + + this.selectedSpecs = this.data.productSpec.serviceSpecification.slice(); + this.dataSource.data = this.selectedSpecs; + this.dataSource.sort = this.sort; + }, + error => this.toast.error('Failed to fetch Service Specifications', error) + ); } - selected(event: MatAutocompleteSelectedEvent): void { - this.selectedSpecs.push(event.option.value); - this.dataSource.data = this.selectedSpecs - - this.nonSelectedSpecs = this.nonSelectedSpecs.filter(el => el.name != event.option.value.name) + private performFilter(filterValue: string, specs: ProductSpecification[]): ProductSpecification[] { + if (!filterValue) { + return specs; + } + return specs.filter(spec => { + const name = spec.name ? spec.name.toLowerCase() : ''; + return name.indexOf(filterValue) !== -1; + }); + } + selected(event: MatAutocompleteSelectedEvent): void { + const selectedLiteSpec = event.option.value; + //retrieve full service specs details, @type and spec characteristics once a service spec is selected this.specInput.nativeElement.value = ''; this.specInputCtrl.setValue(null); + + this.serviceSpecService.retrieveServiceSpecification({ + id: selectedLiteSpec.id + }).subscribe( + (fullSpec: ServiceSpecification) => { + + this.selectedSpecs.push(fullSpec); + this.dataSource.data = this.selectedSpecs; + this.nonSelectedSpecs = this.nonSelectedSpecs.filter( + el => el.name != selectedLiteSpec.name + ); + }, + (error) => { + this.toast.error('Failed to fetch full service specification details', error); + } + ); } private _filter(value: string): ProductSpecification[] { @@ -103,16 +143,174 @@ export class AssignServiceSpecificationComponent implements OnInit { confirmAssignment() { - const updateRelationshipsObj: ProductSpecificationUpdate = { - serviceSpecification: this.selectedSpecs.map(spec =>{ return {id: spec.id, name: spec.name}}) + const hasConfigurableCFSS = this.selectedSpecs.some(spec => { + const s = spec as any; + const type = s['@type'] || 'ServiceSpecification'; + const chars = s.serviceSpecCharacteristic || []; + const hasConfigurable = chars.some(c => c.configurable === true); + + return type === 'CustomerFacingServiceSpecification' && hasConfigurable; + }); + + if (hasConfigurableCFSS) { + // Open the dialog to ask the user + const dialogRef = this.dialog.open(ConfirmCharacteristicAssignmentComponent, { + width: '600px', + disableClose: true + }); + + dialogRef.afterClosed().subscribe(result => { + this.executeAssignment(result); + }); + } + else { + this.executeAssignment(null); } + } - this.productSpecService.patchProductSpecification({id: this.data.productSpec.id, productSpecification: updateRelationshipsObj}).subscribe( - data => {}, - error => console.error(error), - () => {this.dialogRef.close('updated')} - ) + executeAssignment(importCharacteristics: boolean) { + const serviceRefs: any[] = []; + + let tempCharacteristics = [...(this.data.productSpec.productSpecCharacteristic || [])]; + + this.selectedSpecs.forEach(spec => { + const sourceSpec = spec as any; + const type = sourceSpec['@type'] || 'ServiceSpecification'; + + serviceRefs.push({ + id: sourceSpec.id, + name: sourceSpec.name, + '@type': type + }); + + // If user said YES, we manually prepare the chars to add + if (importCharacteristics) { + const serviceChars = sourceSpec.serviceSpecCharacteristic || []; + const configurableChars = serviceChars.filter(char => char.configurable === true); + + configurableChars.forEach(sourceChar => { + const cleanValues = (sourceChar.serviceSpecCharacteristicValue || []).map(val => ({ + valueType: val.valueType, + isDefault: val.isDefault, + value: val.value, + unitOfMeasure: val.unitOfMeasure, + valueFrom: val.valueFrom, + valueTo: val.valueTo, + rangeInterval: val.rangeInterval, + alias: val.alias + })); + + const newCharObj = { + name: sourceChar.name, + description: sourceChar.description, + valueType: sourceChar.valueType, + configurable: sourceChar.configurable, + extensible: sourceChar.extensible, + regex: sourceChar.regex, + uiType: sourceChar.uiType, + unitOfMeasure: sourceChar.unitOfMeasure, + defaultValue: sourceChar.defaultValue, + minCardinality: sourceChar.minCardinality, + maxCardinality: sourceChar.maxCardinality, + productSpecCharacteristicValue: cleanValues, + productSpecCharRelationship: [], + validFor: sourceChar.validFor || { startDateTime: new Date().toISOString(), endDateTime: null }, + lifecycleStatus: "In design", + '@type': 'ProductSpecCharacteristic', + '@baseType': 'BaseEntity', + '@schemaLocation': null + }; + + // if characteristic already exists by name, overwrite it anyway + const existingCharIndex = tempCharacteristics.findIndex(c => c.name === sourceChar.name); + if (existingCharIndex > -1) { + tempCharacteristics[existingCharIndex] = { ...newCharObj, uuid: tempCharacteristics[existingCharIndex].uuid }; + } else { + tempCharacteristics.push(newCharObj); + } + }); + } + }); + + const payloadStep1: ProductSpecificationUpdate = { + serviceSpecification: serviceRefs, + productSpecCharacteristic: tempCharacteristics + }; + + this.productSpecService.patchProductSpecification({ + id: this.data.productSpec.id, + productSpecification: payloadStep1 + }).subscribe( + (updatedSpec) => { + + // If user said NO, and we have CFSS, we need to check if backend added them + // and remove them (patching the list without them) + if (!importCharacteristics) { + this.removeUnwantedCharacteristics(updatedSpec); + } else { + this.toast.success('Product Specification updated successfully'); + this.dialogRef.close('updated'); + } + }, + error => { + this.toast.error('Failed to update Product Specification'); + } + ); } + removeUnwantedCharacteristics(spec: ProductSpecification) { + const unwantedNames: string[] = []; + + this.selectedSpecs.forEach(s => { + const sourceSpec = s as any; + if (sourceSpec['@type'] === 'CustomerFacingServiceSpecification') { + const chars = sourceSpec.serviceSpecCharacteristic || []; + chars.filter(c => c.configurable).forEach(c => unwantedNames.push(c.name)); + } + }); + + const originalNames = (this.data.productSpec.productSpecCharacteristic || []).map(c => c.name); + + const currentChars = spec.productSpecCharacteristic || []; + + const newSpecCharacteristicArray = currentChars.filter(char => { + const isUnwanted = unwantedNames.includes(char.name); + const wasPreExisting = originalNames.includes(char.name); + + // If it is NOT in the unwanted list, keep it. + if (!isUnwanted) return true; + + // If it IS in the unwanted list, BUT it existed before we started, keep it. + if (wasPreExisting) return true; + + return false; + }); + + // If there is nothing to change (lengths match), just close + if (newSpecCharacteristicArray.length === currentChars.length) { + this.toast.success('Product Specification updated successfully'); + this.dialogRef.close('updated'); + return; + } + + const updateCharacteristicObj: ProductSpecificationUpdate = { + productSpecCharacteristic: newSpecCharacteristicArray + } + + this.productSpecService.patchProductSpecification({ + id: spec.id, + productSpecification: updateCharacteristicObj + }).subscribe( + data => {}, + error => { + this.toast.warning('Service assigned, but failed to clean up auto-assigned characteristics.'); + this.dialogRef.close('updated'); + }, + () => { + this.toast.success("Product Specification Characteristics list was successfully updated"); + this.dialogRef.close('updated'); + } + ) + } } diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/confirm-characteristic-assignment/confirm-characteristic-assignment.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/confirm-characteristic-assignment/confirm-characteristic-assignment.component.html new file mode 100644 index 0000000000000000000000000000000000000000..46b908977beefa537c4f7e00cb71852d1ba504cf --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/confirm-characteristic-assignment/confirm-characteristic-assignment.component.html @@ -0,0 +1,13 @@ +

Import Characteristics?

+ +

+ The selected CustomerFacingServiceSpecification(s) contain configurable characteristics. +

+

+ Do you want to automatically add these as Product Characteristics to the Product Specification? +

+
+ + + + \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/confirm-characteristic-assignment/confirm-characteristic-assignment.component.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/confirm-characteristic-assignment/confirm-characteristic-assignment.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..e8910086710cb54abef00d7d57d75378ec35f630 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/confirm-characteristic-assignment/confirm-characteristic-assignment.component.ts @@ -0,0 +1,22 @@ +import { Component } from '@angular/core'; +import { MatDialogRef } from '@angular/material/dialog'; + +@Component({ + selector: 'app-confirm-characteristic-assignment', + templateUrl: './confirm-characteristic-assignment.component.html', + styles: [] +}) +export class ConfirmCharacteristicAssignmentComponent { + + constructor( + public dialogRef: MatDialogRef + ) {} + + onNo(): void { + this.dialogRef.close(false); + } + + onYes(): void { + this.dialogRef.close(true); + } +} \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/delete-product-spec-characteristics/delete-product-spec-characteristics.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/delete-product-spec-characteristics/delete-product-spec-characteristics.component.html new file mode 100644 index 0000000000000000000000000000000000000000..29077a3548386a5a16c9a8a8497a550dbd36f251 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/delete-product-spec-characteristics/delete-product-spec-characteristics.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete characteristic {{data.specToBeDeleted.name}} ? +
+ +
+ + +
\ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/delete-product-spec-characteristics/delete-product-spec-characteristics.component.scss b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/delete-product-spec-characteristics/delete-product-spec-characteristics.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/delete-product-spec-characteristics/delete-product-spec-characteristics.component.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/delete-product-spec-characteristics/delete-product-spec-characteristics.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..29bafc126cbdd13e9fbe09ae2f7a8c550adf671f --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/delete-product-spec-characteristics/delete-product-spec-characteristics.component.ts @@ -0,0 +1,47 @@ +import { trigger } from "@angular/animations"; +import { Component, Inject, OnInit } from "@angular/core"; +import { MAT_DIALOG_DATA, MatDialogRef } from "@angular/material/dialog"; +import { Toast, ToastrService } from "ngx-toastr"; +import { ProductSpecification, ProductSpecificationCharacteristicRes, ProductSpecificationUpdate } from "src/app/openApis/productCatalogManagement/models"; +import { ProductSpecificationService } from "src/app/openApis/productCatalogManagement/services"; +import { fadeIn, simpleFade } from "src/app/shared/animations/animations"; + + +@Component({ + selector: 'app-delete-product-spec-characteristics', + templateUrl: './delete-product-spec-characteristics.component.html', + styleUrls: ['./delete-product-spec-characteristics.component.scss'], + animations: [trigger('fadeIn', fadeIn()), trigger('simpleFade', simpleFade())] +}) +export class DeleteProductSpecCharacteristicsComponent implements OnInit { + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + productSpec: ProductSpecification + productSpecCharacteristicArray:ProductSpecificationCharacteristicRes[], + specToBeDeleted: ProductSpecificationCharacteristicRes + }, + private dialogRef: MatDialogRef, + private specService: ProductSpecificationService, + private toast: ToastrService + ) { } + + ngOnInit() { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + const updateSpecObj: ProductSpecificationUpdate = { + productSpecCharacteristic: this.data.productSpecCharacteristicArray + } + + this.specService.patchProductSpecification({ id: this.data.productSpec.id, productSpecification: updateSpecObj }).subscribe( + data => {}, + error => this.toast.error("An error occurred while deleting the Product Specification Characteristic"), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } +} diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-spec-characteristics/edit-product-spec-characteristics.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-spec-characteristics/edit-product-spec-characteristics.component.html new file mode 100644 index 0000000000000000000000000000000000000000..572842c071391be3fa6ea3cf928b6f3cf2fe393e --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-spec-characteristics/edit-product-spec-characteristics.component.html @@ -0,0 +1,229 @@ +
+ +

+ + Design New Product Characteristic +

+ +

+ + Edit Product Characteristic +

+ +
+ + +
+ + Name + + + + + Description + + + +
+
+ + Valid From + + + + date_range + + + + + + Valid Until + + + date_range + + + +
+
+ + + Value Type + + + {{type}} + + + + + Of + + + {{type}} + + + + + + + Min Cardinality + + + + + Max Cardinality + + + +
+
+
+ Extensible +
+ +
+ Configurable +
+
+
+ +
+ +
+
+
+ + Product Characteristic Value +
+
+ +
+
+ +
+ +
+ + +
+
+ + Alias + + + + Value + + + +
+
+ + + Unit Of Measure + + + +
+ Is + Default + +
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+ + + +
+ + + Alias + + +
+ + + Unit Of Measure + + + +
+ Is + Default + +
+ + +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+ + Value + + + +
+ +
+ +
+ +
+ +
+ +
+
+
+ + +
+
+
+
diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-spec-characteristics/edit-product-spec-characteristics.component.scss b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-spec-characteristics/edit-product-spec-characteristics.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..42ca63a3ceb08d362330fcc53601054553700687 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-spec-characteristics/edit-product-spec-characteristics.component.scss @@ -0,0 +1,15 @@ +.form-array-container { + max-height: 250px; + overflow-x: hidden; + overflow-y: auto; +} + +.characteristic-value-container { + // padding-top: 0.75rem; + border: 1px; + border-style: dashed; + border-color: #ccc; + margin-bottom: 0.5rem; + background-color: #fafaff; + border-radius: 5px; +} \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-spec-characteristics/edit-product-spec-characteristics.component.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-spec-characteristics/edit-product-spec-characteristics.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..f2408ed24dd4cb077f8afa55c64212de19ecb193 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-spec-characteristics/edit-product-spec-characteristics.component.ts @@ -0,0 +1,212 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MatCheckboxChange } from '@angular/material/checkbox'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { UntypedFormGroup, UntypedFormControl, UntypedFormArray } from '@angular/forms'; +import { ToastrService } from 'ngx-toastr'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; +import { trigger } from '@angular/animations'; +import { fadeIn, simpleFade } from 'src/app/shared/animations/animations'; +import { ProductSpecification, ProductSpecificationCharacteristicRes, ProductSpecificationCharacteristicValue, ProductSpecificationUpdate } from 'src/app/openApis/productCatalogManagement/models'; +import { ProductSpecificationService } from 'src/app/openApis/productCatalogManagement/services'; + + + +@Component({ + selector: 'app-edit-product-spec-characteristics', + templateUrl: './edit-product-spec-characteristics.component.html', + styleUrls: ['./edit-product-spec-characteristics.component.scss'], + animations: [trigger('fadeIn', fadeIn()), trigger('simpleFade', simpleFade())] +}) +export class EditProductSpecCharacteristicsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + productSpec: ProductSpecification, + specToBeUpdated: ProductSpecificationCharacteristicRes, + }, + private dialogRef: MatDialogRef, + private specService: ProductSpecificationService, + private toast: ToastrService + ) { } + + editFormCharacteristic = new UntypedFormGroup({ + name: new UntypedFormControl(), + description: new UntypedFormControl(), + configurable: new UntypedFormControl(), + extensible: new UntypedFormControl(), + maxCardinality: new UntypedFormControl(1), + minCardinality: new UntypedFormControl(0), + validFor: new UntypedFormGroup({ + endDateTime: new UntypedFormControl(new Date(new Date().setFullYear(new Date().getFullYear() + 20))), + startDateTime: new UntypedFormControl(new Date()) + }), + valueType: new UntypedFormControl(), + productSpecCharacteristicValue: new UntypedFormArray([]) + }) + + subValueTypeCtrl = new UntypedFormControl('INTEGER') + + valueTypes = ['INTEGER', 'SMALLINT', 'LONGINT', 'FLOAT', 'BINARY', 'BOOLEAN', 'ARRAY', 'SET', 'TEXT', 'LONGTEXT', 'ENUM', 'TIMESTAMP'] + subValueTypes = ['INTEGER', 'SMALLINT', 'LONGINT', 'FLOAT', 'BINARY', 'BOOLEAN', 'TEXT', 'LONGTEXT', 'TIMESTAMP'] + + // valueSubType = new FormControl() + subTypeSelection: boolean = false + + newSpec: boolean = false + + compDestroy$ = new Subject() + + isCharValueBlockExpanded: boolean[] = [] + + ngOnInit(): void { + if (this.data.specToBeUpdated) { + if (!this.data.specToBeUpdated.validFor) this.data.specToBeUpdated.validFor = { endDateTime: null, startDateTime: null } + this.editFormCharacteristic.patchValue(this.data.specToBeUpdated) + + const formArray = this.editFormCharacteristic.get('productSpecCharacteristicValue') as UntypedFormArray + this.data.specToBeUpdated.productSpecCharacteristicValue.forEach(val => { + formArray.push(this.updateFormArrayItem(val)) + this.isCharValueBlockExpanded.push(false) + }) + + this.subValueTypeCtrl.patchValue(this.data.specToBeUpdated.productSpecCharacteristicValue[0].valueType) + if (['SET', 'ARRAY', 'ENUM'].includes(this.data.specToBeUpdated.valueType)) { + this.subTypeSelection = true + } + } + + else { this.newSpec = true } + + this.editFormCharacteristic.get('valueType').valueChanges.pipe( + takeUntil(this.compDestroy$) + ) + .subscribe( + val => { + this.editFormCharacteristic.setControl('productSpecCharacteristicValue', new UntypedFormArray([])) + this.createFormArrayItem() + + + if (['SET', 'ARRAY', 'ENUM'].includes(val)) { + this.subTypeSelection = true + this.subValueTypeCtrl.valueChanges.pipe( + takeUntil(this.compDestroy$) + ) + .subscribe( + subVal => { + this.editFormCharacteristic.setControl('productSpecCharacteristicValue', new UntypedFormArray([])) + this.createFormArrayItem() + } + ) + } else { + this.subTypeSelection = false + } + // const formArray = this.editFormCharacteristic.get('serviceSpecCharacteristicValue') as FormArray + // if (val !== 'ARRAY' && val !=='ENUM' && val !=='SET') { + // this.subTypeSelection = false + // formArray.setControl(0, + // new FormGroup({ + // value: new FormGroup({ + // alias: new FormControl(), + // value: new FormControl(), + // }), + // unitOfMeasure: new FormControl(), + // isDefault: new FormControl(), + // valueType: new FormControl(this.editFormCharacteristic.get('valueType').value) + // })) + // } + } + ) + } + + + updateFormArrayItem(CharValue: ProductSpecificationCharacteristicValue): UntypedFormGroup { + return new UntypedFormGroup({ + value: new UntypedFormGroup({ + alias: new UntypedFormControl(CharValue.value.alias), + value: new UntypedFormControl(CharValue.value.value), + }), + unitOfMeasure: new UntypedFormControl(CharValue.unitOfMeasure), + isDefault: new UntypedFormControl({ value: (CharValue.isDefault || this.data.specToBeUpdated.valueType === 'ARRAY'), disabled: this.data.specToBeUpdated.valueType === 'ARRAY' }), + valueType: new UntypedFormControl(CharValue.valueType) + }) + } + + + createFormArrayItem() { + const formArray = this.editFormCharacteristic.get('productSpecCharacteristicValue') as UntypedFormArray + + // let isDisabled: boolean = true + let subType: string = this.editFormCharacteristic.get('valueType').value + + if (['SET', 'ARRAY', 'ENUM'].includes(this.editFormCharacteristic.get('valueType').value)) { + // isDisabled = false + subType = this.subValueTypeCtrl.value + } + + formArray.push( + new UntypedFormGroup({ + value: new UntypedFormGroup({ + alias: new UntypedFormControl(), + value: new UntypedFormControl(), + }), + unitOfMeasure: new UntypedFormControl(), + isDefault: new UntypedFormControl({ value: this.editFormCharacteristic.get('valueType').value === 'ARRAY', disabled: this.editFormCharacteristic.get('valueType').value === 'ARRAY' }), + valueType: new UntypedFormControl(subType) + }) + ) + this.isCharValueBlockExpanded.push(false) + } + + deleteFormArrayItem(index) { + const formArray = this.editFormCharacteristic.get('productSpecCharacteristicValue') as UntypedFormArray + formArray.removeAt(index) + this.isCharValueBlockExpanded.splice(index, 1) + } + + expandCharValueBlock(index) { + this.isCharValueBlockExpanded[index] = !this.isCharValueBlockExpanded[index] + } + + isDefaultCheckboxChanged(index, event: MatCheckboxChange) { + if (this.editFormCharacteristic.get('valueType').value === "ENUM" && event.checked) { + const formArray = this.editFormCharacteristic.get('productSpecCharacteristicValue') as UntypedFormArray + for (let i = 0; i < formArray.controls.length; i++) { + if (i !== index) formArray.controls[i].get('isDefault').setValue(false) + } + } + } + + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + + + + if (this.newSpec) { + this.data.productSpec.productSpecCharacteristic.push(this.editFormCharacteristic.getRawValue()) + } else { + const updateCharacteristIndex = this.data.productSpec.productSpecCharacteristic.findIndex(char => char.uuid === this.data.specToBeUpdated.uuid) + this.data.productSpec.productSpecCharacteristic[updateCharacteristIndex] = this.editFormCharacteristic.getRawValue() + } + + const updateCharacteristicObj: ProductSpecificationUpdate = { + productSpecCharacteristic: this.data.productSpec.productSpecCharacteristic + } + + this.specService.patchProductSpecification({ id: this.data.productSpec.id, productSpecification: updateCharacteristicObj }).subscribe( + data => { }, + error => this.toast.error("An error occurred upon updating Spec Characteristics"), + () => { this.dialogRef.close('updated') } + ) + } + + ngOnDestroy(): void { + this.compDestroy$.next("destroyed") + } + + +} \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.html index 29881af9047ac6fc0bef8413ff9fdddaf911fcd8..a942f958cc538a2de2ceb7e020ebd314768d2a3a 100644 --- a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.html +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.html @@ -168,7 +168,11 @@
- +
{{relatedServiceSpecification.name}} +
+ {{ relatedServiceSpecification['@type'] === 'CustomerFacingServiceSpecification' ? 'CFSS' : (relatedServiceSpecification['@type'] === 'ResourceFacingServiceSpecification' ? 'RFSS' : 'null') }} +
+
@@ -200,6 +204,120 @@
+ + +
+
+
+
+ + Apply Filter... + + + +
+ +
+
+
+ + {{tag}} + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name + + {{element.name}} Value + Type + {{element.valueType}} + Default Values + + {{val.value.value}} + ({{val.value.alias}}) + + +
+
+ {{val.unitOfMeasure}}
+ +
+
+ Configurable + {{element.configurable}} Actions +
+ + + +
+
+ + +
+
+ +
+ +
+ +
diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.ts index b94127a7f94fbf827add89dc8735b82dff2cff40..77cb87e58eb1486be2a7c331c39baf05580c18ff 100644 --- a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.ts +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.ts @@ -6,11 +6,14 @@ import { ActivatedRoute, ActivationEnd, Router } from '@angular/router'; import { ToastrService } from 'ngx-toastr'; import { Observable, Subscription } from 'rxjs'; import { map, startWith } from 'rxjs/operators'; -import { ProductSpecification, ProductSpecificationCreate, ProductSpecificationUpdate, ServiceSpecificationRef } from 'src/app/openApis/productCatalogManagement/models'; +import { ProductSpecification, ProductSpecificationCreate, ProductSpecificationUpdate, ServiceSpecificationRef, ProductSpecificationCharacteristicRes } from 'src/app/openApis/productCatalogManagement/models'; import { ProductSpecificationService } from 'src/app/openApis/productCatalogManagement/services'; import { fadeIn } from 'src/app/shared/animations/animations'; import { AppService } from 'src/app/shared/services/app.service'; import { AssignServiceSpecificationComponent } from './assign-service-specification/assign-service-specification.component'; +import { MatTableDataSource } from '@angular/material/table'; +import { EditProductSpecCharacteristicsComponent } from './edit-product-spec-characteristics/edit-product-spec-characteristics.component'; +import { DeleteProductSpecCharacteristicsComponent } from './delete-product-spec-characteristics/delete-product-spec-characteristics.component'; @Component({ selector: 'app-edit-product-specs', @@ -20,11 +23,18 @@ import { AssignServiceSpecificationComponent } from './assign-service-specificat }) export class EditProductSpecsComponent implements OnInit { + // to change + displayedColumnsCharacteristics = ['name', 'type', 'defaultValues', 'configurable', 'actions']; + specCharacteristicsTags: string[] = ["All"] + tagFiltervalue:string = "All" + dataSource = new MatTableDataSource(); + + constructor( private activatedRoute: ActivatedRoute, private specService: ProductSpecificationService, private dialog: MatDialog, - private toastrService: ToastrService, + private toast: ToastrService, private router: Router, public appService: AppService ) { } @@ -35,7 +45,7 @@ export class EditProductSpecsComponent implements OnInit { finishedLoading: boolean = false newSpecification = false - listItems = ["Main Properties", "Service Specification Relationships", "Related Parties"] + listItems = ["Main Properties", "Service Specification Relationships", "Related Parties", "Product Specification Characteristics"] activeListItem = "Main Properties" editForm = new UntypedFormGroup({ @@ -100,21 +110,29 @@ export class EditProductSpecsComponent implements OnInit { retrieveProductSpec() { this.specService.retrieveProductSpecification({id: this.specID}).subscribe( data => this.spec = data, - error => {console.error(error), this.toastrService.error("An error occurred while loading Product Specification")}, + error => this.toast.error("An error occurred while loading Product Specification"), () => { if (this.spec) { this.finishedLoading = true - //populate General Panel Info if (!this.spec.validFor) this.spec.validFor = { endDateTime: new Date(new Date().setFullYear(new Date().getFullYear()+20)).toISOString(), startDateTime: new Date().toISOString() } this.editForm.patchValue(this.spec) this.editForm.markAsPristine() - + //populate Service Specification Relationship Panel Info this.filteredServiceSpecificationRel$ = this.serviceSpecificationRelationshipFilterCtrl.valueChanges.pipe( startWith(null), map( (value:null | string) => value ? this._filterOnRelatedSpecs(value) : this.spec.serviceSpecification.slice() ) ) + + //populate Specification Characteristic Panel Info + this.dataSource.data = this.spec.productSpecCharacteristic; + // this.dataSource.paginator = this.paginator; + + this.specCharacteristicsTags = ["All"] + this.tagFiltervalue = "All" + this.specCharacteristicsTags = this.retrieveSpecCharaceristicsTags(this.dataSource.data) + } else { @@ -124,6 +142,16 @@ export class EditProductSpecsComponent implements OnInit { ) } + retrieveSpecCharaceristicsTags(dataSource: ProductSpecificationCharacteristicRes[]) { + let tagsArray = this.specCharacteristicsTags + dataSource.forEach(char => { + char.productSpecCharRelationship.filter( e => e.relationshipType === "tag").forEach(rel => { + if (!tagsArray.includes(rel.name)) tagsArray.push(rel.name) + }) + }); + return tagsArray + } + private _filterOnRelatedSpecs(filterValue: string) { filterValue = filterValue.trim(); filterValue = filterValue.toLowerCase(); @@ -142,7 +170,7 @@ export class EditProductSpecsComponent implements OnInit { dialogRef.afterClosed().subscribe ( result => { if (result) { - this.toastrService.success("Service Specification Relationship list was successfully updated") + this.toast.success("Product Specification Relationship list was successfully updated") this.retrieveProductSpec() } } @@ -164,10 +192,10 @@ export class EditProductSpecsComponent implements OnInit { if (this.newSpecification) { this.specService.createProductSpecification(updateObj).subscribe( data => { updatedSpec = data }, - error => console.error(error), + error => this.toast.error("An error occurred while creating the Product Specification"), () => { this.newSpecification = false - this.toastrService.success("Product Specification was successfully created") + this.toast.success("Product Specification was successfully created") this.refreshProductSpecification(updatedSpec) } ) @@ -175,9 +203,9 @@ export class EditProductSpecsComponent implements OnInit { else { this.specService.patchProductSpecification({ id: this.specID, productSpecification: updateObj }).subscribe( data => { updatedSpec = data }, - error => console.error(error), + error => this.toast.error("An error occurred while updating the Product Specification"), () => { - this.toastrService.success("Product Specification was successfully updated") + this.toast.success("Product Specification was successfully updated") this.refreshProductSpecification(updatedSpec) } ) @@ -191,6 +219,97 @@ export class EditProductSpecsComponent implements OnInit { this.retrieveProductSpec() } + + cloneProductSpecCharacteristic(characteristic: ProductSpecificationCharacteristicRes) { + const cloneCharacteristic: ProductSpecificationCharacteristicRes = { + name: `Copy of ${characteristic.name}`, + description: characteristic.description, + configurable: characteristic.configurable, + extensible: characteristic.extensible, + minCardinality: characteristic.minCardinality, + maxCardinality: characteristic.maxCardinality, + productSpecCharRelationship: characteristic.productSpecCharRelationship, + productSpecCharacteristicValue: characteristic.productSpecCharacteristicValue, + validFor: characteristic.validFor, + valueType: characteristic.valueType + } + + this.spec.productSpecCharacteristic.push(cloneCharacteristic); + + const updateCharacteristicObj: ProductSpecificationUpdate = { + productSpecCharacteristic: this.spec.productSpecCharacteristic + } + + this.specService.patchProductSpecification({id: this.spec.id, productSpecification: updateCharacteristicObj}).subscribe( + data => {}, + error => this.toast.error("An error occurred while cloning the Product Specification Characteristic"), + () => { + this.toast.success("Product Specification Characteristics list was successfully updated"); + this.retrieveProductSpec(); + } + ) + } + + applySpecCharFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + + openCharacteristicDeleteDialog(characteristic: ProductSpecificationCharacteristicRes) { + const specToBeDeletedIndex = this.spec.productSpecCharacteristic.findIndex(char => char.uuid === characteristic.uuid) + + const newSpecCharacteristicArray: ProductSpecificationCharacteristicRes[] = this.spec.productSpecCharacteristic.slice() + + newSpecCharacteristicArray.splice(specToBeDeletedIndex, 1) + + const dialogRef = this.dialog.open(DeleteProductSpecCharacteristicsComponent, { + data: { + productSpec: this.spec, + productSpecCharacteristicArray: newSpecCharacteristicArray, + specToBeDeleted: this.spec.productSpecCharacteristic[specToBeDeletedIndex] + } + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result){ + this.toast.success("Product Specification Characteristics list was successfully updated"); + this.retrieveProductSpec() + } + } + ) + } + + openCharacteristicDesignDialog(characteristic: ProductSpecificationCharacteristicRes) { + const dialogRef = this.dialog.open(EditProductSpecCharacteristicsComponent, { + data: { + productSpec: this.spec, + specToBeUpdated: characteristic + }, + disableClose: true + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Product Specification Characteristics list was successfully updated"); + this.retrieveProductSpec(); + } + } + ) + } + + filterCharacteristicsByTag(tagName) { + this.tagFiltervalue = tagName + if (tagName === "All") { + this.dataSource.data = this.spec.productSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType); + } else { + this.dataSource.data = this.spec.productSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType) + .filter(specChar => specChar.productSpecCharRelationship.some( rel => rel.name === tagName )); + } + } + ngOnDestroy() { this.subscriptions.unsubscribe() } diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.ts b/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.ts index 102cb45844cf58155a49e1ec599f049f5f84aba8..505335ed959fa5818e6dd93a927eef8d948d46d5 100644 --- a/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.ts +++ b/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.ts @@ -45,6 +45,8 @@ export class ListProductOfferingsComponent implements OnInit { error => { console.error(error) }, () => { this.dataSource.data = this.productOfferings + this.sort.active = 'lastUpdate' + this.sort.direction = 'desc' this.dataSource.sort = this.sort this.dataSource.paginator = this.paginator; this.dataSource.sortingDataAccessor = (item, property): string | number => { diff --git a/src/app/p_product/admin/productOrderManagement/delete-product-order/delete-product-order.component.html b/src/app/p_product/admin/productOrderManagement/delete-product-order/delete-product-order.component.html new file mode 100644 index 0000000000000000000000000000000000000000..90a3fa6551a77e6637c551e0d3c9612361277d9c --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/delete-product-order/delete-product-order.component.html @@ -0,0 +1,14 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete order with id + {{data.id}} ? +
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/p_product/admin/productOrderManagement/delete-product-order/delete-product-order.component.scss b/src/app/p_product/admin/productOrderManagement/delete-product-order/delete-product-order.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_product/admin/productOrderManagement/delete-product-order/delete-product-order.component.ts b/src/app/p_product/admin/productOrderManagement/delete-product-order/delete-product-order.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..3a081c55b94201780de5db433e68d4453576a40f --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/delete-product-order/delete-product-order.component.ts @@ -0,0 +1,37 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ProductOrder } from 'src/app/openApis/productOrderingManagement/models'; +import { DeleteProductSpecsComponent } from 'src/app/p_product/admin/productCatalogManagement/delete-product-specs/delete-product-specs.component'; +import { ProductOrderService } from 'src/app/openApis/productOrderingManagement/services'; + +@Component({ + selector: 'app-delete-product-order', + templateUrl: './delete-product-order.component.html', + styleUrls: ['./delete-product-order.component.scss'] +}) +export class DeleteProductOrderComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ProductOrder, + private dialogRef: MatDialogRef, + private productOrderService: ProductOrderService + + ) { } + + ngOnInit() { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + this.productOrderService.deleteProductOrder({ id: this.data.id }).subscribe( + data => {}, + error => {this.dialogRef.close(error); console.error(error)}, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_product/admin/productOrderManagement/list-product-orders/list-product-orders.component.html b/src/app/p_product/admin/productOrderManagement/list-product-orders/list-product-orders.component.html new file mode 100644 index 0000000000000000000000000000000000000000..724dedd90b186ac4e47b7bbbe35261b283ba897c --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/list-product-orders/list-product-orders.component.html @@ -0,0 +1,130 @@ +
+
+ +
+
+
+
+

Product Orders

+

View and manage product orders

+
+ + +
+ +
+
+ + Filter Order User + + +
+ +
+ + Orders from (datetime) + + + date_range + + + + + Orders to (datetime) + + date_range + + + +
+ +
+
+ +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Order ID {{element.id}} + Placed By {{element.relatedParty[0].name}} ({{element.relatedParty[0].role}}) Order Date (Local Time) {{element.orderDate | date:'d MMM y, h:mm a'}} + State {{element.state}} + Actions + + + + +
+ + + +
+ +
+
+ +
+
+
+
+

Product Orders Calendar

+

View Product Orders

+
+ +
+ + + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/src/app/p_product/admin/productOrderManagement/list-product-orders/list-product-orders.component.scss b/src/app/p_product/admin/productOrderManagement/list-product-orders/list-product-orders.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_product/admin/productOrderManagement/list-product-orders/list-product-orders.component.ts b/src/app/p_product/admin/productOrderManagement/list-product-orders/list-product-orders.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..b5cdd2f59d022c1d435b8d989c761e052e52e0cb --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/list-product-orders/list-product-orders.component.ts @@ -0,0 +1,277 @@ + +import { Component, OnInit, ViewChild } from '@angular/core'; +import { ProductOrderService } from 'src/app/openApis/productOrderingManagement/services'; +import { ToastrService } from 'ngx-toastr'; +import { ProductOrder } from 'src/app/openApis/productOrderingManagement/models'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { UntypedFormGroup, UntypedFormControl } from '@angular/forms'; +import { DeleteProductOrderComponent } from '../delete-product-order/delete-product-order.component'; +import { HttpErrorResponse } from '@angular/common/http'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +// import { CacheSearchParametersService } from 'src/app/shared/services/cache-search-parameters.service'; +import { AppService } from 'src/app/shared/services/app.service'; +import { CalendarOptions, DateSelectArg, EventClickArg, EventApi } from '@fullcalendar/core'; +import dayGridPlugin from '@fullcalendar/daygrid'; +import timeGridPlugin from '@fullcalendar/timegrid'; +import listPlugin from '@fullcalendar/list'; +import interactionPlugin from '@fullcalendar/interaction'; +import resourceTimelinePlugin from '@fullcalendar/resource-timeline'; +import { Router } from '@angular/router'; +import { Plugins } from 'protractor/built/plugins'; +import { AuthService } from 'src/app/shared/services/auth.service'; + +@Component({ + selector: 'app-list-product-orders', + templateUrl: './list-product-orders.component.html', + styleUrls: ['./list-product-orders.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListProductOrdersComponent implements OnInit { + + constructor( + private productOrder: ProductOrderService, + private dialog: MatDialog, + private toastr: ToastrService, + // private cacheService: CacheSearchParametersService, + public appService: AppService, + public authService: AuthService, + private router: Router + ) { } + + //displayedColumns = ['id', 'placed_by', 'order_date', 'state', 'requested_startdate', 'requested_enddate', 'actions'] + displayedColumns = ['id', 'placed_by', 'order_date', 'state', 'actions'] + dataSource = new MatTableDataSource() + + productOrders: ProductOrder[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + orderStates = ['initial', 'acknowledged', 'rejected', 'pending', 'held', 'inProgress', 'cancelled', 'completed', 'failed', 'partial'] + + filterForm = new UntypedFormGroup({ + text: new UntypedFormControl(), + fromDate: new UntypedFormControl(new Date(new Date().setMonth(new Date().getMonth()-4))), + toDate: new UntypedFormControl(new Date()), + }); + + get fromDate() { return this.filterForm.get('fromDate').value; } + get toDate() { return this.filterForm.get('toDate').value; } + get text() { return this.filterForm.get('text').value; } + + + //------------------calendar related START------------------------------ + + + calendarVisible = true; + calendarOptions: CalendarOptions = { + headerToolbar: { + left: 'prev,next today', + center: 'title', + right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek' + }, + plugins: [ dayGridPlugin, timeGridPlugin, listPlugin, interactionPlugin, resourceTimelinePlugin], + initialView: 'dayGridMonth', + schedulerLicenseKey: 'CC-Attribution-NonCommercial-NoDerivatives', + //initialEvents: INITIAL_EVENTS, // alternatively, use the `events` setting to fetch from a feed + weekends: true, + editable: true, + selectable: true, + selectMirror: true, + dayMaxEvents: true, + select: this.handleDateSelect.bind(this), + eventClick: this.handleEventClick.bind(this), + eventsSet: this.handleEvents.bind(this), + /* you can update a remote database when these fire: + eventAdd: + eventChange: + eventRemove: + */ + + events: function(info, successCallback, failureCallback) { + + if ( this == null){ + console.info("this is null") + return + } + + var str = info.start.valueOf(); + const adate = new Date(str); + adate.setDate(adate.getDate() - 30); + const dateTimeNow = adate.toISOString(); + + this.productOrder.listProductOrder({ requestedStartDate: `${dateTimeNow}` }).subscribe( + + //this.productOrder.listProductOrder({ }).subscribe( + data => { this.productOrders = data }, + error => { + console.error(error) + failureCallback(error) + }, + () => { + successCallback( + Array.prototype.slice.call( // convert to array + this.productOrders + ).map(function(eventEl: ProductOrder) { + + // console.info("this is event: " + eventEl.id +" " + eventEl.requestedStartDate ) + // var result = new Date(eventEl.startDate); + // var evd = result.toISOString().replace(/T.*$/, ''); // YYYY-MM-DD of today + + return { + title: eventEl.relatedParty[0].name, + extendedProps: eventEl , + start: eventEl.requestedStartDate, + end: eventEl.expectedCompletionDate + } + }) + ) + + } + ) + + }.bind(this) + + }; + currentEvents: EventApi[] = []; + + handleDateSelect(selectInfo: DateSelectArg) { + // const title = prompt('Please enter a new title for your event'); + // const calendarApi = selectInfo.view.calendar; + + // calendarApi.unselect(); // clear date selection + + // if (title) { + // calendarApi.addEvent({ + // id: createEventId(), + // title, + // start: selectInfo.startStr, + // end: selectInfo.endStr, + // allDay: selectInfo.allDay + // }); + // } + } + + handleEventClick(clickInfo: EventClickArg) { + this.router.navigate([`products/product_order/${clickInfo.event.extendedProps.id}`]); + } + + handleEvents(events: EventApi[]) { + this.currentEvents = events; + } + + //------------------calendar related end ------------------------------ + + + + + ngOnInit() { + this.retrieveOrderList() + } + + retrieveOrderList() { + this.productOrder.listProductOrder({}).subscribe( + data => { this.productOrders = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.productOrders + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'placed_by': return item.relatedParty[0].name + case 'order_date': return new Date(item.orderDate).getTime() + case 'requested_startdate': return new Date(item.requestedStartDate).getTime() + case 'requested_enddate': return new Date(item.requestedCompletionDate).getTime() + default: return item[property] + } + } + this.dataSource.filterPredicate = (data, filter) => { + // console.log(filter) + + const dataString = `${data.relatedParty[0].name} (${data.relatedParty[0].role})` + + let filterExpression: boolean = true + + // console.log(filterExpression) + if (this.text) { + filterExpression = dataString.trim().toLowerCase().includes(this.text) + } + + + if (this.fromDate && this.toDate) { + filterExpression = filterExpression && new Date(data.orderDate).getTime() >= new Date(this.fromDate).getTime() && new Date(data.orderDate).getTime() <= new Date(this.toDate).getTime() + } + + return filterExpression + + + if (filter !== "applyPeriodFilter") { + filter = filter.trim(); + filter = filter.toLowerCase(); + const dataString = `${data.relatedParty[0].name} (${data.relatedParty[0].role})` + let filterExpression = dataString.trim().toLowerCase().includes(filter) + if (this.fromDate && this.toDate) { + filterExpression = new Date(data.orderDate).getTime() >= new Date(this.fromDate).getTime() && new Date(data.orderDate).getTime() <= new Date(this.toDate).getTime() && dataString.trim().toLowerCase().includes(filter) + } + return filterExpression + } + + else + { + if (this.fromDate && this.toDate) { + return new Date(data.orderDate).getTime() >= new Date(this.fromDate).getTime() && new Date(data.orderDate).getTime() <= new Date(this.toDate).getTime() + } + } + + } + this.applyPeriodFilter() + } + ) + } + + applyTextFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + if (filterValue) { + this.dataSource.filter = filterValue; + } + } + + applyPeriodFilter() { + if (this.fromDate && this.toDate) { + this.dataSource.filter = "applyPeriodFilter" + } + // this.cacheService.productOrderListDateFrom = this.fromDate + // this.cacheService.productOrderListDateTo = this.toDate + // this.dataSource.filterPredicate = this.filterPeriod + } + + filterPeriod (data: ProductOrder, filter: string) { + return data.orderDate >= this.fromDate && data.orderDate <= this.toDate + } + + openOrderDeleteDialog(element: ProductOrder) { + const dialogRef = this.dialog.open(DeleteProductOrderComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + if (result instanceof HttpErrorResponse) { + this.toastr.error("An error occurred while attempting to delete Product Order") + } else { + this.toastr.success("Product Order list is successfully updated") + this.retrieveOrderList() + } + } + } + ) + } + + + +} diff --git a/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-orders-product-spec-characteristics/edit-orders-product-spec-characteristics.component.html b/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-orders-product-spec-characteristics/edit-orders-product-spec-characteristics.component.html new file mode 100644 index 0000000000000000000000000000000000000000..ed0bc1b29c6c1345c43c598b3ba1f69a9c0db14f --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-orders-product-spec-characteristics/edit-orders-product-spec-characteristics.component.html @@ -0,0 +1,144 @@ + + + +
+
+ This product does not contain any configurable characteristics +
+ +
+
User Configurable Characteristics
+
+ +
- {{charForm.get('name').value}}
+
+ + + + + + + + + + + + + + + + + + + + Custom Value + + date_range + + + + + + + + Custom Value + + + + + + + + + + Custom Value + + + {{charValue.value.alias}} + + + + + + + Custom Value + + + {{charValue.value.alias}} + + + + + + +
+
+
+
+ + Custom Alias + + + + + + Custom Value + + + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ + + diff --git a/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-orders-product-spec-characteristics/edit-orders-product-spec-characteristics.component.scss b/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-orders-product-spec-characteristics/edit-orders-product-spec-characteristics.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..f26be3632681e69f1000aba26841217e2f35d7fa --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-orders-product-spec-characteristics/edit-orders-product-spec-characteristics.component.scss @@ -0,0 +1,15 @@ +.spinner-container { + display: flex; + justify-content: center; + align-items: center; + min-height: 20vh; +} + +.service-spec-container { + min-height: 20vh; +} + +.border-bottom { + border-bottom: 1px dotted rgba(0, 0, 0, 0.125); + margin-bottom: .75rem; +} \ No newline at end of file diff --git a/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-orders-product-spec-characteristics/edit-orders-product-spec-characteristics.component.ts b/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-orders-product-spec-characteristics/edit-orders-product-spec-characteristics.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..7e138907a4a61ae8093141cbca733a408964e87b --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-orders-product-spec-characteristics/edit-orders-product-spec-characteristics.component.ts @@ -0,0 +1,151 @@ +import { Component, OnInit, Inject, Input, Output, EventEmitter } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { ProductOfferingService } from 'src/app/openApis/productCatalogManagement/services'; +import { ToastrService } from 'ngx-toastr'; +import { ProductOrderItem } from 'src/app/openApis/productOrderingManagement/models'; +import { UntypedFormArray, UntypedFormGroup, UntypedFormControl } from '@angular/forms'; +import { ProductOffering, ProductSpecificationCharacteristicRes, ProductSpecificationCharacteristicValueUseReq, ProductSpecificationCharacteristicValueUseRes } from 'src/app/openApis/productCatalogManagement/models'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; +import { trigger } from '@angular/animations'; +import { fadeIn, simpleFade } from 'src/app/shared/animations/animations'; +import { AuthService } from 'src/app/shared/services/auth.service'; + +@Component({ + selector: 'app-edit-orders-product-spec-characteristics', + templateUrl: './edit-orders-product-spec-characteristics.component.html', + styleUrls: ['./edit-orders-product-spec-characteristics.component.scss'], + animations: [ + trigger('fadeIn', fadeIn()), + trigger('simpleFade', simpleFade()) + ] + +}) +export class EditOrdersProductSpecCharacteristicsComponent implements OnInit { + + constructor( + private dialogRef: MatDialogRef, + private offeringService: ProductOfferingService, + private toastr: ToastrService, + private sortingService: SortingService, + private authService: AuthService + ) { } + + isAdminUser: boolean = false + + @Input() set _activeListItem(activeItem: {orderItem: ProductOrderItem, productOffering: ProductOffering}) { + this.orderItem = activeItem.orderItem + this.productOffering = activeItem.productOffering + this.isAdminUser = this.authService.portalUserJWT.realm_access.roles.includes('ADMIN') + this.initValuesForm() + } + @Output() characteristicsWasEdited = new EventEmitter<{orderItemID: string, productSpecChars:[]}>() + + orderItem: ProductOrderItem + productOffering: ProductOffering + + confSpecFormArray = new UntypedFormArray([]) + + confSpecCharacteristics: ProductSpecificationCharacteristicRes[] = [] + + ngOnInit() { } + + retrieveProductSpec() { + this.offeringService.retrieveProductOffering({id: this.orderItem.productOffering.id}).subscribe( + data => { this.productOffering = data }, + error => this.toastr.error("An error occurred retrieving Product Specification Characteristics information"), + () => { + this.initValuesForm() + } + ) + } + + initValuesForm() { + this.confSpecFormArray = new UntypedFormArray([]) + + const confSpecFA = this.confSpecFormArray as UntypedFormArray + + this.confSpecCharacteristics = this.productOffering.prodSpecCharValueUse.filter(specChar => {return specChar && this.orderItem.product.productCharacteristic.some( item => item.name === specChar.name) } ) || [] + this.confSpecCharacteristics.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + + + + this.confSpecCharacteristics.forEach ( (confSpecChar) => { + confSpecFA.push(this.updateFormArrayItem(confSpecChar, this.confSpecCharacteristics)) + }) + + + } + + updateFormArrayItem( specChar: ProductSpecificationCharacteristicValueUseRes, specCharList: ProductSpecificationCharacteristicValueUseRes[]): UntypedFormGroup { + + const orderedServiceCharacteristic = this.orderItem.product.productCharacteristic.find(char => char.name === specChar.name) + + let charValueArray = orderedServiceCharacteristic.value + + if (['SET', 'ARRAY', 'ENUMERABLE'].includes(this.orderItem.product.productCharacteristic.find(char => char.name === specChar.name).valueType)) { + charValueArray = JSON.parse(orderedServiceCharacteristic.value['value'] as unknown as string) + } + + return new UntypedFormGroup({ + name: new UntypedFormControl(specChar.name), + valueType: new UntypedFormControl(specChar.valueType), + value: new UntypedFormControl(charValueArray) + }) + } + + addToArrayCharacteristicValue(characteristic: ProductSpecificationCharacteristicValueUseRes) { + const charControl = this.confSpecFormArray.value.find(char => char.name === characteristic.name); + if (charControl) { + charControl.value.push({ + value: '', + alias: '' + }); + } + } + + deleteFromArrayCharacteristicValue(characteristic: ProductSpecificationCharacteristicValueUseRes, index) { + const charControl = this.confSpecFormArray.value.find(char => char.name === characteristic.name); + if (charControl) { + charControl.value.splice(index, 1); + } + } + + compareFn( optionOne, optionTwo ) : boolean { + return (optionOne.value === optionTwo.value) || (optionOne.alias === optionTwo.alias); + } + + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + // console.log(this.confSpecFormArray.value) + // console.log(this.nonConfSpecFormArray.value) + const editedCharsFA = this.confSpecFormArray.value; + // console.log(editedCharsFA) + + let newServiceCharacteristics = [] + let editedCharValue + editedCharsFA.forEach( editedChar => { + editedCharValue = editedChar.value + if (editedChar.valueType === "SET" || editedChar.valueType === "ARRAY") { + editedCharValue = { + value: JSON.stringify( editedChar.value.map(el => {return {'value': el.value, 'alias': el.alias}}) ), + alias: '' + } + } + editedChar.value = editedCharValue + }) + + this.characteristicsWasEdited.emit({ + orderItemID: this.orderItem.id, + productSpecChars: editedCharsFA + }) + } + + ngOnDestroy() { + this.submitDialog() + } + +} diff --git a/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-product-order-items.component.html b/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-product-order-items.component.html new file mode 100644 index 0000000000000000000000000000000000000000..849fc10a8534a5c28f8a2b4a6407feeb0c12fbd4 --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-product-order-items.component.html @@ -0,0 +1,47 @@ + +
+

+ + Edit Specification Characteristics of Selected Order Items' allocated Offerings +

+ + + + + + + + + + + + + +
+ +
+
+
+
+ + + + +
+
+ + +
+
+
diff --git a/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-product-order-items.component.scss b/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-product-order-items.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..630305506529d02677d61d7efe0db1fef960e3f4 --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-product-order-items.component.scss @@ -0,0 +1,15 @@ +mat-tab-group { + margin-bottom: 1rem; + // border-top: 1px solid rgba(0, 0, 0, 0.1); + // border-bottom: 1px solid rgba(0, 0, 0, 0.1); +} + +.spinner-container { + display: flex; + justify-content: center; + align-items: center; + min-height: 40vh; + max-height: 65vh; + transition: all 2s linear; +} + diff --git a/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-product-order-items.component.ts b/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-product-order-items.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..42463985060eea814338b1ad1bc1b23c2c46eeca --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/preview-product-order/edit-product-order-items/edit-product-order-items.component.ts @@ -0,0 +1,78 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MatTabChangeEvent } from '@angular/material/tabs'; +import { ProductOrderItem, ProductOrderUpdate } from 'src/app/openApis/productOrderingManagement/models'; +import { forkJoin } from 'rxjs'; +import { ProductOffering, ProductSpecification } from 'src/app/openApis/productCatalogManagement/models'; +import { ProductOfferingService, ProductSpecificationService } from 'src/app/openApis/productCatalogManagement/services'; + +@Component({ + selector: 'app-edit-product-order-items', + templateUrl: './edit-product-order-items.component.html', + styleUrls: ['./edit-product-order-items.component.scss'] +}) +export class EditProductOrderItemsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public selectedOrderItems: ProductOrderItem[], + private dialogRef: MatDialogRef, + private offeringService: ProductOfferingService + ) { } + + activeListItem: { + orderItem: ProductOrderItem + productOffering: ProductOffering + } + selectedItemsProductOfferings: ProductOffering[] + activeTabIndex: number + + editedOrderItems: {orderItemID: string, productSpecChars:[]}[] = [] + + ngOnInit() { + // this.activeListItem = this.selectedOrderItems[0] + this.retrieveOfferingFromOrderItems() + } + + retrieveOfferingFromOrderItems() { + let productSpecs$ = [] + this.selectedOrderItems.forEach( item => { + productSpecs$.push(this.offeringService.retrieveProductOffering({id: item.productOffering.id})) + }) + + forkJoin(productSpecs$).subscribe( + data => {this.selectedItemsProductOfferings = data}, + error => {console.error(error)}, + () => { + this.activeListItem = { + orderItem: this.selectedOrderItems[0], + productOffering: this.selectedItemsProductOfferings[0] + } + this.activeTabIndex = 0 + } + ) + } + + changeTab(event: MatTabChangeEvent) { + setTimeout(() => { + this.activeTabIndex = event.index + this.activeListItem = { + orderItem: this.selectedOrderItems[event.index], + productOffering: this.selectedItemsProductOfferings[event.index] + } + }, 500); + } + + orderItemCharsEdited(event: {orderItemID: string, productSpecChars:[]}) { + if (!this.editedOrderItems.some(item => item.orderItemID === event.orderItemID)) { + this.editedOrderItems.push(event) + } + } + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + this.dialogRef.close(this.editedOrderItems) + } +} diff --git a/src/app/p_product/admin/productOrderManagement/preview-product-order/preview-product-order.component.html b/src/app/p_product/admin/productOrderManagement/preview-product-order/preview-product-order.component.html new file mode 100644 index 0000000000000000000000000000000000000000..a28e0aa4343cd05bf7ffa42391ea370a1b805e50 --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/preview-product-order/preview-product-order.component.html @@ -0,0 +1,513 @@ +
+
+
+

Product Order with id #{{orderID}} is not found

+
+
+
+ +
+
+
+ + +
+ +
+
+
+
+

Product Order Overview And Management

+ + +

Overview and Manage Product Order #{{productOrder?.id}}

+ + +
+
+
+
+ +
+
+
+ +
+
+
+ + +
+
+
+
+
+ + A related Service Order has been created. +
+ + View on Service Orders + + +
+
+
+
+
Orderer By
+

{{productOrder?.relatedParty[0].name}}

+
+
+
Order Date
+

{{productOrder?.orderDate | date:'d MMM y, h:mm a'}} - Local Time

+

{{productOrder?.orderDate | date:'d MMM y, h:mm a':'UTC'}} - UTC

+
+ +
+
Requested Starting Date
+

{{productOrder?.requestedStartDate | date:'d MMM y, h:mm a'}} - Local Time

+

{{productOrder?.requestedStartDate | date:'d MMM y, h:mm a':'UTC'}} - UTC

+
+
+
Requested Completion Date
+

{{productOrder?.requestedCompletionDate | date:'d MMM y, h:mm a'}} - Local Time

+

{{productOrder?.requestedCompletionDate | date:'d MMM y, h:mm a':'UTC'}} - UTC

+
+ +
+
Description
+

{{productOrder?.description}}

+
+
+
Notification Contact
+

{{productOrder?.notificationContact}}

+
+ +
+ +
Priority
+

{{productOrder?.priority}}

+
+ + +
+
+ +
State
+

{{productOrder?.state}}

+
+ + + State + + + + {{state | uppercase}} + + + + + + {{state | uppercase}} + + + + +
+ +
+ +
Starting Date
+
+

{{productOrder?.requestedStartDate | date:'d MMM y, h:mm a'}} - Local Time

+

{{productOrder?.requestedStartDate | date:'d MMM y, h:mm a':'UTC'}} - UTC

+
+
+ + + Starting Date + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.startDate | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+ +
+ +
Expected Completion Date
+
+

{{productOrder?.expectedCompletionDate | date:'d MMM y, h:mm a'}} - Local Time

+

{{productOrder?.expectedCompletionDate | date:'d MMM y, h:mm a':'UTC'}} - UTC

+
+ +
+ + + Expected Completion Date + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.expectedCompletionDate | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+ +
+
Notes
+
+
+
+
+ {{note.text}} +
+ {{note.date | date:'d MMM y, h:mm:ss a'}} (Local Time) + by {{note.author}} +
+
+
+
+
+ +
+ + +
+
+
+ + New Note + + + +
+
+
+
+
+
+ +
+ + + +
+
+ +
+
+ + + +
+
+ +
+ + +
+
+ + + +
+
+
+
+ There are not any related parties assigned +
+ +
+
Username (Role)
+

{{relatedParty.name}} ({{relatedParty.role}})

+ + +
+
+ +
+
+ + + + + +
+
+
+ + + + + + + Order Item's Product main properties + + + +
+
+
ID
+

{{orderItem?.productOffering.id}}

+
+
+
Name
+

{{orderItem?.productOffering.name}}

+
+
+ +
+
+
Product Type
+

{{orderItem?.type}}

+
+
+
Category
+

{{orderItem?.category}}

+
+
+
+ + + + + Product Specification Characteristics allocated with Order Item's Offering + + + +
+ There are not any Product Specification Characteristics allocated. +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Characteristic
Value (Alias)
{{specCharacteristic.name}} + {{specCharacteristic.value?.value}} + + ({{specCharacteristic.value.alias}}) + + + + + + + + +
+ + {{item.value}} ({{item.alias}}) + + + {{item}} + +
+
+
+
+ + + + + +
+ +
+ +
+
+
+ + + + + +
+ +
+ +
+
+ + +
+
+
+
\ No newline at end of file diff --git a/src/app/p_product/admin/productOrderManagement/preview-product-order/preview-product-order.component.scss b/src/app/p_product/admin/productOrderManagement/preview-product-order/preview-product-order.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..f8d7d92a203d4e5f8898273428e2fbcd6fb5f188 --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/preview-product-order/preview-product-order.component.scss @@ -0,0 +1,89 @@ +.minh-40vh { + min-height: 30vh; +} + +.nav-link:hover { + cursor: pointer; +} + +.nav-link.disabled { + color: rgba(0,0,0,.30); +} + +.nav-pills .nav-link.active { + color: #fff; + transition: all 0.2s; +} + +.nav-item { + border-bottom: 1px dashed rgba(0, 0, 0, 0.125); + padding: .5rem 0; +} + + +.tab-pane > .card:nth-child(1) { + min-height: max(350px, 20vh); +} + +.tab-pane .card .card-body.space-between{ + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.orderItem-border { + border: 2px dotted #ddd; + padding: 1rem .5rem .5rem .5rem; + border-radius: 12px; + margin-bottom: 1rem; +} + +.orderItem-title { + margin-bottom: 1rem; + text-align: center; +} + +.note-card-body { + padding: .5rem; +} + +mat-form-field { + width: 100%; +} + +.notes-container { + max-height: 660px; + overflow-y: auto; +} + +.notes-graph-container { + display: flex; + justify-content: center; +} + +.service-spec-container { + display: flex; + justify-content: space-between; + align-items: center; +} + +table.table-borderless tbody tr td { + padding: 0; +} + +.supporting-service-card { + cursor: pointer +} + +.no-shadow { + box-shadow: none; +} + +.supporting-service-card:hover { + box-shadow: none; +} + +.supporting-service-card .note-card-body:hover { + background: #e5e5e5; + border-radius: 12px; +} \ No newline at end of file diff --git a/src/app/p_product/admin/productOrderManagement/preview-product-order/preview-product-order.component.ts b/src/app/p_product/admin/productOrderManagement/preview-product-order/preview-product-order.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..6e41567530544b57fc152cc38fc88d655063a607 --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/preview-product-order/preview-product-order.component.ts @@ -0,0 +1,408 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ProductOrder, ProductOrderUpdate, ServiceRef, ProductOrderItem } from 'src/app/openApis/productOrderingManagement/models'; +import { ProductOrderService } from 'src/app/openApis/productOrderingManagement/services'; +import { ToastrService } from 'ngx-toastr'; +import { UntypedFormControl, UntypedFormGroup } from '@angular/forms'; +import { ServiceService } from 'src/app/openApis/serviceInventoryManagement/services'; +import { Service } from 'src/app/openApis/serviceInventoryManagement/models'; +import { delay } from 'rxjs/operators'; +import { AuthService } from 'src/app/shared/services/auth.service'; +import { MatDialog } from '@angular/material/dialog'; + +import { timer, Subscription } from 'rxjs'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; +import { trigger } from '@angular/animations'; +import { fadeIn, simpleFade } from 'src/app/shared/animations/animations'; +import { SelectionModel } from '@angular/cdk/collections'; +import { AppService } from 'src/app/shared/services/app.service'; +import { relative } from 'path'; +import { TerminateProductOrderItemsComponent } from './terminate-product-order-items/terminate-product-order-items.component'; +import { EditProductOrderItemsComponent } from './edit-product-order-items/edit-product-order-items.component'; +import { EditOrdersProductSpecCharacteristicsComponent } from './edit-product-order-items/edit-orders-product-spec-characteristics/edit-orders-product-spec-characteristics.component'; +import { ServiceOrderService } from 'src/app/openApis/serviceOrderingManagement/services'; + +@Component({ + selector: 'app-preview-product-order', + templateUrl: './preview-product-order.component.html', + styleUrls: ['./preview-product-order.component.scss'], + animations: [ + trigger('fadeIn', fadeIn()), + trigger('simpleFade', simpleFade()), + ] + +}) +export class PreviewProductOrderComponent implements OnInit { + + constructor( + private activatedRoute: ActivatedRoute, + private orderService: ProductOrderService, + private router: Router, + private inventoryService: ServiceService, + private toast: ToastrService, + private authService: AuthService, + private dialog: MatDialog, + private sortingService: SortingService, + public appService: AppService, + private serviceOrderService: ServiceOrderService + ) { } + + staticListItems = ["Main Order Properties", "Related Parties"] + activeListItem = "Main Order Properties" + + availableOrderStates = ['INITIAL', 'ACKNOWLEDGED', 'REJECTED', 'PENDING', 'HELD', 'INPROGRESS', 'CANCELLED', 'COMPLETED', 'FAILED', 'PARTIAL'] + availableInitialOrderStates = ['INITIAL', 'ACKNOWLEDGED', 'REJECTED'] + + availablePriorities = ['low', 'normal', 'high'] + + relatedServiceOrder: boolean = false; + + + productOrder: ProductOrder + orderID: string + productOrderNotFound: boolean = false + finishedLoading: boolean = false + + supportingServices: Service[][] = [] + // supportingServices' first array is Order Item Index and second array is SupportingService index of the respective Order Item + editMode: boolean = false + editModeNotes: boolean = false + isAdminUser: boolean = false + + editForm = new UntypedFormGroup ({ + state: new UntypedFormControl(), + priority: new UntypedFormControl('NORMAL'), + startDate: new UntypedFormControl(), + expectedCompletionDate: new UntypedFormControl(), + note: new UntypedFormControl() + }) + + checkboxesOrderItemList: {orderItem: ProductOrderItem, isChecked: boolean}[] = [] + selection = new SelectionModel(true, []); + + subscription = new Subscription + + currentItemRelationshipsUrl: string[] = [] + notesGraphUrl: string + + ngOnInit() { + this.isAdminUser = this.authService.portalUserJWT.realm_access.roles.includes('ADMIN') + + if (this.activatedRoute.snapshot.params.id) + { + this.orderID = this.activatedRoute.snapshot.params.id + this.retrieveProductOrder() + } else { + this.router.navigate(['../product_orders'], { relativeTo: this.activatedRoute}) + } + } + + selectListItem(item: string) { + this.activeListItem = item + + if (!this.staticListItems.includes(item)) + this.productOrder.productOrderItem.find(it => it.id === item).product.productCharacteristic + } + + retrieveProductOrder() { + this.selection.clear() + this.orderService.retrieveProductOrder({id: this.orderID}).subscribe( + data => this.productOrder = data, + error => { console.error(error) }, + () => { + if (this.productOrder) { + this.finishedLoading = true + + this.editForm.patchValue({ + state: this.productOrder.state, + startDate: this.productOrder.requestedStartDate ? this.productOrder.requestedStartDate : this.productOrder.requestedStartDate, + expectedCompletionDate: this.productOrder.expectedCompletionDate ? this.productOrder.expectedCompletionDate : this.productOrder.completionDate + }) + + this.productOrder.note.sort(this.sortingService.ascDateSortingFuncByDateProperty()) + + if (!this.productOrder.requestedStartDate) { this.productOrder.requestedStartDate = this.productOrder.requestedStartDate } + + if (!this.productOrder.expectedCompletionDate) { this.productOrder.expectedCompletionDate = this.productOrder.requestedCompletionDate } + + this.checkboxesOrderItemList = [] + this.currentItemRelationshipsUrl = [] + + this.supportingServices = [] + this.productOrder.productOrderItem.forEach((orderItem) => { + + //Expands the length of the array for each Service Order Item + this.supportingServices.push([]) + + this.checkboxesOrderItemList.push({orderItem: orderItem, isChecked: false}) + + orderItem.product.productCharacteristic.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + + // orderItem.product.realizingService.forEach( (supService) => { + // this.retrieveProductInventory(supService.id).subscribe( + // data => { + // const orderItemIndex = this.productOrder.productOrderItem.findIndex(SOI => orderItem.id === SOI.id) + // const supportingServiceIndex = this.productOrder.productOrderItem[orderItemIndex].product.realizingService.findIndex(SupS => supService.id === SupS.id) + // this.supportingServices[orderItemIndex][supportingServiceIndex] = data + // } + // ) + // }) + + // this.currentItemRelationshipsUrl.push( this.orderService.rootUrl + "/productOrderingManagement/v4/productOrder/" + this.productOrder.id + "/item/" + orderItem.id + "/relationship_graph" ); + }) + + // this.notesGraphUrl = this.orderService.rootUrl + "/productOrderingManagement/v4/productOrder/" + this.productOrder.id + "/notes_graph"; + + if (this.activatedRoute.snapshot.queryParams && this.productOrder.productOrderItem.some(item => item.id === this.activatedRoute.snapshot.queryParams.item)) { + // console.log(this.activatedRoute.snapshot.queryParams) + this.activeListItem = this.activatedRoute.snapshot.queryParams.item + + } + if (['ACKNOWLEDGED', 'INPROGRESS', 'COMPLETED', 'PARTIAL'].includes(this.productOrder.state)) { + this.relatedServiceOrder = true; + } + + } else { + this.productOrderNotFound = true + } + } + ) + } + + + retrieveProductInventory(serviceId:string) { + return this.inventoryService.retrieveService({id:serviceId}) + } + + orderItemStateClassSelector(state:'INITIAL' | 'ACKNOWLEDGED' | 'REJECTED' | 'PENDING' | 'HELD' | 'INPROGRESS' | 'CANCELLED' | 'COMPLETED' | 'FAILED' | 'ASSESSINGCANCELLATION' | 'PENDINGCANCELLATION') { + let cssClass: string = 'badge' + switch (state) { + case 'INITIAL': + cssClass += ' badge-primary' + break; + case 'COMPLETED': + cssClass += ' badge-success' + break; + case 'PENDING': + case 'HELD': + cssClass += ' badge-secondary' + break; + case 'CANCELLED': + case 'FAILED': + case 'REJECTED': + cssClass += ' badge-danger' + break; + default: + cssClass += ' badge-warning' + } + return cssClass + } + + orderStateClassSelector(state:'INITIAL'|'ACKNOWLEDGED'|'REJECTED'|'PENDING'|'HELD'|'INPROGRESS'|'CANCELLED'|'COMPLETED'|'FAILED'|'PARTIAL') { + let cssClass: string = 'badge' + switch (state) { + case 'INITIAL': + cssClass += ' badge-primary' + break; + case 'REJECTED': + case 'CANCELLED': + case 'FAILED': + cssClass += ' badge-danger' + break; + case 'COMPLETED': + cssClass += ' badge-success' + break; + default: + cssClass += ' badge-warning' + } + return cssClass + } + + enableOrderEditing() { + this.editMode = true + } + + submitOrderEditing() { + this.editMode = false + let orderUpdate: ProductOrderUpdate = { + state: this.editForm.get('state').value, + requestedStartDate: this.editForm.get('startDate').value, + expectedCompletionDate: this.editForm.get('expectedCompletionDate').value, + productOrderItem: [] + } + if (this.editForm.get('note').value) { + orderUpdate.note = [{ + author:this.authService.portalUserJWT.preferred_username, + text: this.editForm.get('note').value, + date: new Date().toISOString() + }] + } + + this.orderService.patchProductOrder({body: orderUpdate, id: this.orderID}).subscribe( + data => {this.toast.success("Product Order was successfully updated")}, + error => {console.error(error); this.toast.error("An error occurred while editing Product Order")}, + () => { + this.enableOrderRefreshTimer() + } + ) + } + + cancelOrderEditing() { + this.editMode = false + } + + triggerAdminNote() { + this.editModeNotes = !this.editModeNotes + } + + // openOrdersSpecCharacteristicsDialog(orderItem: ProductOrderItem) { + + // const dialogRef = this.dialog.open(EditOrdersProductSpecCharacteristicsComponent, { + // data: { orderItem } + // }) + + // dialogRef.afterClosed().subscribe( + // result => { + // // console.log(result) + // // console.log() + // // if (result) { + // // orderItem.service.serviceCharacteristic = result + // // } + // console.log(this.productOrder) + // if (result) { + + // let newOrderUpdate: ProductOrderUpdate = { + // productOrderItem: [] + // } + + // this.productOrder.productOrderItem.find(item => item.id === orderItem.id).product.productCharacteristic = result + // newOrderUpdate.productOrderItem = this.productOrder.productOrderItem + // this.orderService.patchProductOrder({body: newOrderUpdate, id: this.productOrder.id}).subscribe( + // data => { this.retrieveProductOrder() }, + // error => console.error(error) + // ) + // } + // } + // ) + // } + + areOrderItemsEditable() { + // states > 'INITIAL'|'ACKNOWLEDGED'|'REJECTED'|'PENDING'|'HELD'|'INPROGRESS'|'CANCELLED'|'COMPLETED'|'FAILED'|'PARTIAL' + // return ['INITIAL', 'REJECTED','CANCELLED', 'COMPLETED', 'FAILED', 'PARTIAL'].includes(this.productOrder.state) + return ['INITIAL'].includes(this.productOrder.state) + } + + areOrderItemsTerminable() { + return ['COMPLETED', 'FAILED', 'PARTIAL'].includes(this.productOrder.state) + } + + openEditProductOrderItemsDialog() { + const dialogRef = this.dialog.open(EditProductOrderItemsComponent, { + data: this.selection.selected, + minWidth: "60vw" + }) + + dialogRef.afterClosed().subscribe( + (editedOrderItems: {orderItemID: string, productSpecChars:[]}[]) => { + + // console.log(editedOrderItems) + if (editedOrderItems) { + + let newOrderUpdate: ProductOrderUpdate = { + productOrderItem: [] + } + editedOrderItems.forEach( editedOrderItem => { + this.productOrder.productOrderItem.find(item => item.id === editedOrderItem.orderItemID).product.productCharacteristic = editedOrderItem.productSpecChars + // Decide orderItem action verb + if (this.productOrder.state === "COMPLETED") { + this.productOrder.productOrderItem.find(item => item.id === editedOrderItem.orderItemID).action = "MODIFY" + } + + // newOrderUpdate.orderItem.push(this.productOrder.orderItem.find(item => item.id === editedOrderItem.orderItemID)) + }) + + newOrderUpdate.productOrderItem = this.productOrder.productOrderItem + + // console.log(newOrderUpdate) + + this.orderService.patchProductOrder({body: newOrderUpdate, id: this.productOrder.id}).subscribe( + data => { + this.toast.success("Selected Order Items were successfully updated") + this.retrieveProductOrder() + }, + error => { + this.toast.error("An error occurred while updating Product Order Items") + this.retrieveProductOrder() + console.error(error) + } + ) + } + } + ) + + } + + terminateProductOrderItemsDialog() { + const dialogRef = this.dialog.open(TerminateProductOrderItemsComponent, { + data: this.selection.selected + }) + + dialogRef.afterClosed().subscribe( + result => { + if (result) { + let newOrderUpdate: ProductOrderUpdate = { + productOrderItem: [] + } + this.selection.selected.forEach( selectedOrderItem => { + this.productOrder.productOrderItem.find(item => item.id === selectedOrderItem.id).action = "DELETE" + // this.productOrder.productOrderItem.find(item => item.id === selectedOrderItem.id).service.state = "TERMINATED" + }) + + newOrderUpdate.productOrderItem = this.productOrder.productOrderItem + + // console.log(newOrderUpdate) + + this.orderService.patchProductOrder({body: newOrderUpdate, id: this.productOrder.id}).subscribe({ + next: () => { + this.toast.success("Selected Order Items were successfully updated") + this.retrieveProductOrder() + }, + error: (error) => { + this.toast.error("An error occurred while updating Product Order Items") + this.retrieveProductOrder() + console.error(error) + } + }) + } + } + ) + } + + //checkBoxSelection Logic + isAllSelected() { + const numSelected = this.selection.selected.length + const numItems = this.productOrder.productOrderItem.length + return numSelected === numItems + } + + masterCheckboxToggle() { + this.isAllSelected() ? + this.selection.clear() : + this.productOrder.productOrderItem.forEach (item => this.selection.select(item)) + } + //---checkBoxSelection Logic + + enableOrderRefreshTimer() { + this.subscription.unsubscribe() + this.subscription = timer(0, 10000).subscribe( + data => { + // this.supportingServices = [[]] + this.retrieveProductOrder() + } + ) + } + + ngOnDestroy() { + this.subscription.unsubscribe() + } +} diff --git a/src/app/p_product/admin/productOrderManagement/preview-product-order/terminate-product-order-items/terminate-product-order-items.component.html b/src/app/p_product/admin/productOrderManagement/preview-product-order/terminate-product-order-items/terminate-product-order-items.component.html new file mode 100644 index 0000000000000000000000000000000000000000..ee19bb4413b71e1c38bf9ab73f6a15660e63b3d5 --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/preview-product-order/terminate-product-order-items/terminate-product-order-items.component.html @@ -0,0 +1,16 @@ +

+ + Confirm termination +

+
+ Are you sure you want to terminate products allocated with the selected Order Items? +
    +
  • {{orderItem.productOffering.name}}
  • +
+
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/p_product/admin/productOrderManagement/preview-product-order/terminate-product-order-items/terminate-product-order-items.component.scss b/src/app/p_product/admin/productOrderManagement/preview-product-order/terminate-product-order-items/terminate-product-order-items.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_product/admin/productOrderManagement/preview-product-order/terminate-product-order-items/terminate-product-order-items.component.ts b/src/app/p_product/admin/productOrderManagement/preview-product-order/terminate-product-order-items/terminate-product-order-items.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..a90bf0c4b21c4c23af2d40d8281db8f954f75ad1 --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/preview-product-order/terminate-product-order-items/terminate-product-order-items.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { DeleteProductCategoriesComponent } from 'src/app/p_product/admin/productCatalogManagement/delete-product-categories/delete-product-categories.component'; +import { ProductOrderItem } from 'src/app/openApis/productOrderingManagement/models'; +import { DeleteProductOfferingComponent } from '../../../productCatalogManagement/delete-product-offering/delete-product-offering.component'; + +@Component({ + selector: 'app-terminate-product-order-items', + templateUrl: './terminate-product-order-items.component.html', + styleUrls: ['./terminate-product-order-items.component.scss'] +}) +export class TerminateProductOrderItemsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ProductOrderItem[], + private dialogRef: MatDialogRef, + ) { } + + ngOnInit() { + } + + confirmTermination() { + this.dialogRef.close('deleted') + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_product/admin/productOrderManagement/product-order-calendar/event-utils.ts b/src/app/p_product/admin/productOrderManagement/product-order-calendar/event-utils.ts new file mode 100644 index 0000000000000000000000000000000000000000..5bdc5ebc1e538bef2bc09bc5cbccf655ee6f083f --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/product-order-calendar/event-utils.ts @@ -0,0 +1,25 @@ +import { EventInput } from '@fullcalendar/core'; + +let eventGuid = 0; +const TODAY_STR = new Date().toISOString().replace(/T.*$/, ''); // YYYY-MM-DD of today +var result = new Date(); +result.setDate(result.getDate() + 2); +const TODAY_STRONW = result.toISOString().replace(/T.*$/, ''); // YYYY-MM-DD of today + +export const INITIAL_EVENTS: EventInput[] = [ + { + id: createEventId(), + title: 'All-day event', + start: TODAY_STR + }, + { + id: createEventId(), + title: 'Timed event', + start: TODAY_STR + 'T12:00:00', + end: TODAY_STRONW + 'T18:00:00' + } +]; + +export function createEventId() { + return String(eventGuid++); +} diff --git a/src/app/p_product/admin/productOrderManagement/product-order-calendar/product-order-calendar.component.html b/src/app/p_product/admin/productOrderManagement/product-order-calendar/product-order-calendar.component.html new file mode 100644 index 0000000000000000000000000000000000000000..7ff50361924839fdd278bbd14f558fb8f745059b --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/product-order-calendar/product-order-calendar.component.html @@ -0,0 +1,20 @@ +
+
+
+
+
+
+

Product Orders Calendar

+

View Product Orders

+
+ +
+ + + + + +
+
+
+
\ No newline at end of file diff --git a/src/app/p_product/admin/productOrderManagement/product-order-calendar/product-order-calendar.component.scss b/src/app/p_product/admin/productOrderManagement/product-order-calendar/product-order-calendar.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..6c61423bebb55df0dc47f1e1c3759d93885a0cf3 --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/product-order-calendar/product-order-calendar.component.scss @@ -0,0 +1,5 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} \ No newline at end of file diff --git a/src/app/p_product/admin/productOrderManagement/product-order-calendar/product-order-calendar.component.ts b/src/app/p_product/admin/productOrderManagement/product-order-calendar/product-order-calendar.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..0789f95adfe8b5f902135cab713b1f21c5b2a498 --- /dev/null +++ b/src/app/p_product/admin/productOrderManagement/product-order-calendar/product-order-calendar.component.ts @@ -0,0 +1,170 @@ +import { Router } from '@angular/router'; +import { startWith } from 'rxjs/operators'; +import { MatTableDataSource } from '@angular/material/table'; +import { ProductOrder } from 'src/app/openApis/productOrderingManagement/models'; +import { ProductOrderService } from 'src/app/openApis/productOrderingManagement/services'; + +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { ToastrService } from 'ngx-toastr'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { CalendarOptions, DateSelectArg, EventClickArg, EventApi } from '@fullcalendar/core'; +import dayGridPlugin from '@fullcalendar/daygrid'; +import timeGridPlugin from '@fullcalendar/timegrid'; +import listPlugin from '@fullcalendar/list'; +import interactionPlugin from '@fullcalendar/interaction'; +import resourceTimelinePlugin from '@fullcalendar/resource-timeline'; +import { formatDate } from '@angular/common'; + +@Component({ + selector: 'product-order-calendar', + templateUrl: './product-order-calendar.component.html', + styleUrls: ['./product-order-calendar.component.scss'] + }) +export class ProductOrderCalendarComponent implements OnInit { + + calendarVisible = true; + calendarOptions: CalendarOptions = { + headerToolbar: { + left: 'prev,next today', + center: 'title', + right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek' + }, + plugins: [ dayGridPlugin, timeGridPlugin, listPlugin, interactionPlugin, resourceTimelinePlugin], + initialView: 'dayGridMonth', + //initialEvents: INITIAL_EVENTS, // alternatively, use the `events` setting to fetch from a feed + weekends: true, + editable: true, + selectable: true, + selectMirror: true, + dayMaxEvents: true, + select: this.handleDateSelect.bind(this), + eventClick: this.handleEventClick.bind(this), + eventsSet: this.handleEvents.bind(this), + /* you can update a remote database when these fire: + eventAdd: + eventChange: + eventRemove: + */ + + events: function(info, successCallback, failureCallback) { + + if ( this == null){ + console.info("this is null") + return + } + + var str = info.start.valueOf(); + const adate = new Date(str); + adate.setDate(adate.getDate() - 30); + const dateTimeNow = adate.toISOString(); + + this.productOrder.listProductOrder({ starttime: `${dateTimeNow}` }).subscribe( + + //this.productOrder.listProductOrder({ }).subscribe( + data => { this.productOrders = data }, + error => { + console.error(error) + failureCallback(error) + }, + () => { + successCallback( + Array.prototype.slice.call( // convert to array + this.productOrders + ).map(function(eventEl: ProductOrder) { + + // console.info("this is event: " + eventEl.id +" " + eventEl.requestedStartDate ) + // var result = new Date(eventEl.startDate); + // var evd = result.toISOString().replace(/T.*$/, ''); // YYYY-MM-DD of today + + return { + title: eventEl.id , + start: eventEl.requestedStartDate, + end: eventEl.expectedCompletionDate + } + }) + ) + + } + ) + + }.bind(this) + + }; + currentEvents: EventApi[] = []; + + + constructor( + private productOrder: ProductOrderService, + private router: Router + ) { } + + + productOrders: ProductOrder[] + dataSource = new MatTableDataSource() + + retrieveOrderList() { + this.productOrder.listProductOrder({}).subscribe( + data => { this.productOrders = data }, + error => { console.error(error) }, + () => { + + + } + ) + } + + + handleCalendarToggle() { + this.calendarVisible = !this.calendarVisible; + } + + handleWeekendsToggle() { + const { calendarOptions } = this; + calendarOptions.weekends = !calendarOptions.weekends; + } + + handleDateSelect(selectInfo: DateSelectArg) { + // const title = prompt('Please enter a new title for your event'); + // const calendarApi = selectInfo.view.calendar; + + // calendarApi.unselect(); // clear date selection + + // if (title) { + // calendarApi.addEvent({ + // id: createEventId(), + // title, + // start: selectInfo.startStr, + // end: selectInfo.endStr, + // allDay: selectInfo.allDay + // }); + // } + } + + handleEventClick(clickInfo: EventClickArg) { + // if (confirm(`Are you sure you want to delete the event '${clickInfo.event.title}'`)) { + // clickInfo.event.remove(); + // } + + ///services/service_order/{{element.id}} + this.router.navigate([`products/product_order/${clickInfo.event.title}`]); + + + } + + handleEvents(events: EventApi[]) { + this.currentEvents = events; + } + + + + + ngOnInit() { + + + + } + + +} \ No newline at end of file diff --git a/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.html b/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.html index e5645e7ff0ad9aa5893d52374cadfb03ae629c0f..0cdacb485c6852efc81d62205ffe9ec1be451c78 100644 --- a/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.html +++ b/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.html @@ -14,14 +14,16 @@
{{productOffering?.name}}
-
- +
+
+
+
Version @@ -29,25 +31,16 @@ {{productOffering?.version}}
-
- Bundle -
- {{productSpec?.isBundle}} - Not Specified -
-
-
- - +
@@ -56,19 +49,49 @@
Description
-
-
- + +
Product Characteristics
+ +
+ +
This product does not contain any configurable characteristics
+ +
+ + + + + + - + + + + + + + +
Characteristic's Name + {{element.name}} + Default Values + + +
+ {{val.value.value}} + ({{val.value.alias}}) +
+
{{val.unitOfMeasure}}
+ +
+
+
@@ -76,13 +99,6 @@
-
-
- - - - - - + \ No newline at end of file diff --git a/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.ts b/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.ts index 2d5fff5821ed29c4c9edc03a5705a982bd932da7..87031c89b3541a339659bf3f77e776f3f7570aee 100644 --- a/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.ts +++ b/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.ts @@ -1,10 +1,15 @@ import { trigger } from '@angular/animations'; -import { Component, OnInit, Inject } from '@angular/core'; +import { Component, OnInit, Inject, ViewChild } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { ProductOffering, ProductSpecification } from 'src/app/openApis/productCatalogManagement/models'; -import { ProductSpecificationService } from 'src/app/openApis/productCatalogManagement/services'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ProductOffering, ProductSpecificationCharacteristicRes } from 'src/app/openApis/productCatalogManagement/models'; +import { ProductOfferingService } from 'src/app/openApis/productCatalogManagement/services'; import { fadeIn } from 'src/app/shared/animations/animations'; +import { AuthService } from 'src/app/shared/services/auth.service'; import { ThemingService } from 'src/app/theming/theming.service'; +import { ProductRequesterService } from '../../orderCheckout/services/product-requester.service'; +import { ToastrService } from 'ngx-toastr'; @Component({ selector: 'app-preview-market-place-item', @@ -19,44 +24,83 @@ export class PreviewMarketPlaceItemComponent implements OnInit { productOffering: ProductOffering }, private dialogRef: MatDialogRef, - private specService: ProductSpecificationService, - private themingService: ThemingService + private productOfferingService: ProductOfferingService, + private themingService: ThemingService, + public authService: AuthService, + private productRequesterService: ProductRequesterService, + private toastr: ToastrService ) { } productOffering: ProductOffering - productSpec: ProductSpecification finishedLoading: boolean = false specLogoUrl: string + dataSource = new MatTableDataSource(); + displayedColumns = ['name', 'defaultValues']; + + @ViewChild('sort1', {static: true}) sort1: MatSort; + ngOnInit(): void { this.productOffering = this.data.productOffering - if (this.productOffering.productSpecification && this.productOffering.productSpecification.id) { - this.retrieveProductSpec(this.data.productOffering) + + if (this.productOffering.prodSpecCharValueUse) { + this.dataSource.data = this.productOffering.prodSpecCharValueUse; + this.dataSource.sort = this.sort1; + } + + // Logic to fetch logo or extra spec details + if (this.productOffering && this.productOffering.id) { + this.retrieveProductOffering(this.data.productOffering) } else { this.specLogoUrl = this.themingService.getConfig().DEPLOYMENT_LOGO_PATH this.finishedLoading = true } } - retrieveProductSpec(offering: ProductOffering) { - this.specService.retrieveProductSpecification({ id: offering.productSpecification.id }).subscribe( - data => this.productSpec = data, + retrieveProductOffering(offering: ProductOffering) { + this.productOfferingService.retrieveProductOffering({ id: offering.id }).subscribe( + data => this.productOffering = data, error => console.error(error), () => { this.finishedLoading = true - //Check if spec has a defined logo this.specLogoUrl = this.themingService.getConfig().DEPLOYMENT_LOGO_PATH + + if (this.dataSource.data.length === 0 && this.productOffering.prodSpecCharValueUse == null) { + this.dataSource.data = this.productOffering.prodSpecCharValueUse; + this.dataSource.sort = this.sort1; + } } ) + } + placeInOrderList() { + if (!this.productRequesterService.orderedProductSpecsList.some(el => el.id === this.productOffering.id)) { + // this.requesterService.serviceSpecsCart.push(this.spec) + + this.productRequesterService.orderedProductSpecsList.push(this.productOffering) + this.saveOrderToLocalStorage(this.productOffering.id) + // this.requesterService.serviceConfigurationList.push({ + // spec: this.spec, + // checked: false, + // specCharacteristics: this.initCharacteristicsValue() + // }) + this.dialogRef.close("added_to_order_list") + } else { + this.toastr.warning("This Product is already in your Product Order List") + } + } + + saveOrderToLocalStorage(specId) { + let orderArray = [] + orderArray = JSON.parse(localStorage.getItem('orderedProductSpecsList')) || [] + orderArray.push(specId) + localStorage.setItem('orderedProductSpecsList', JSON.stringify(orderArray)) } closeDialog() { this.dialogRef.close() } - - -} +} \ No newline at end of file diff --git a/src/app/p_product/marketplace/product-marketplace.component.ts b/src/app/p_product/marketplace/product-marketplace.component.ts index 171f833463be5159242369f26dd92adcc1e8ed76..01bc8e6b6e6c64439e87e4e979654f50178e8197 100644 --- a/src/app/p_product/marketplace/product-marketplace.component.ts +++ b/src/app/p_product/marketplace/product-marketplace.component.ts @@ -3,7 +3,7 @@ import { AppService } from 'src/app/shared/services/app.service'; import { TreeServiceMarketPlaceService } from './services/tree-service-market-place.service'; import { MatDialog } from '@angular/material/dialog'; import { SortingService } from 'src/app/shared/functions/sorting.service'; -import { CatalogService, ProductOfferingService } from 'src/app/openApis/productCatalogManagement/services'; +import { CatalogService, ProductOfferingService, CategoryService } from 'src/app/openApis/productCatalogManagement/services'; import { Catalog, Category, CategoryRef, ProductOffering, ProductOfferingRef } from 'src/app/openApis/productCatalogManagement/models'; import { UntypedFormControl } from '@angular/forms'; import { Observable, Subscription } from 'rxjs'; @@ -19,7 +19,6 @@ import { ThemingService } from 'src/app/theming/theming.service'; templateUrl: './product-marketplace.component.html', styleUrls: ['./product-marketplace.component.scss'], animations: [ trigger('simpleFade', simpleFade()) ] - }) export class ProductMarketplaceComponent implements OnInit { @@ -27,6 +26,7 @@ export class ProductMarketplaceComponent implements OnInit { private appService: AppService, private catalogService: CatalogService, private productOfferingService: ProductOfferingService, + private categoryService: CategoryService, private treeMarketPlaceService: TreeServiceMarketPlaceService, private dialog: MatDialog, private sortingService: SortingService, @@ -37,7 +37,6 @@ export class ProductMarketplaceComponent implements OnInit { isCatalogsCollapsed: Boolean[] = [] selectedCategoryRef: CategoryRef - selectedCategory: Category productOfferings: ProductOffering[] = [] @@ -50,9 +49,14 @@ export class ProductMarketplaceComponent implements OnInit { resultsNotFound: boolean = false subscriptions = new Subscription() + // key: Offering ID, value: array of Category References + offeringCategoryMap: Map = new Map(); + ngOnInit() { this.config = this.appService.config + this.buildOfferingCategoryMap(); + this.retrieveCatalogsList() this.treeMarketPlaceService.categorySelected$.subscribe( @@ -70,6 +74,34 @@ export class ProductMarketplaceComponent implements OnInit { ) } + buildOfferingCategoryMap() { + this.categoryService.listCategory({}).subscribe( + (allCategories: Category[]) => { + allCategories.forEach(category => { + if (category.productOffering && category.productOffering.length > 0) { + + category.productOffering.forEach(offeringRef => { + const existingCategories = this.offeringCategoryMap.get(offeringRef.id) || []; + + const catRef: CategoryRef = { + id: category.id, + name: category.name, + "@type": "CategoryRef" + }; + + if (!existingCategories.some(c => c.id === catRef.id)) { + existingCategories.push(catRef); + } + + this.offeringCategoryMap.set(offeringRef.id, existingCategories); + }); + } + }); + }, + error => console.error('Failed to build category map', error) + ); + } + retrieveCatalogsList() { this.catalogService.listCatalog({}).subscribe( data => { this.productCatalogs = data }, @@ -86,26 +118,17 @@ export class ProductMarketplaceComponent implements OnInit { data => { let productOffering: ProductOffering = data // offering.fetchingLogo = true - productOffering['logo'] = this.themingService.getConfig().DEFAULT_SERVICE_LOGO_PATH //set Default App Image, path defined in theming.service.ts + productOffering['logo'] = this.themingService.getConfig().DEFAULT_SERVICE_LOGO_PATH - this.productOfferings.push(productOffering) - - // this.specificationService.getAttachment({id: data.serviceSpecification.id, attid:'logo'}).subscribe( - // data => { - // const reader = new FileReader(); - // reader.readAsDataURL(data); - // reader.onload = (__event) => { - // const base64data = reader.result; - // this.serviceCandidates.find(cand => cand.id === candidateRef.id).logo = base64data - // candidate.fetchingLogo = false - // } - // }, - // error => { - // candidate.fetchingLogo = false - // // console.error (error) - // } - // ) + if (this.offeringCategoryMap.has(productOffering.id)) { + if (!productOffering.category || productOffering.category.length === 0) { + productOffering.category = this.offeringCategoryMap.get(productOffering.id); + } else { + productOffering.category = this.offeringCategoryMap.get(productOffering.id); + } + } + this.productOfferings.push(productOffering) }, error => { console.error(error) }, () => { @@ -138,4 +161,4 @@ export class ProductMarketplaceComponent implements OnInit { this.subscriptions.unsubscribe() } -} +} \ No newline at end of file diff --git a/src/app/p_product/orderCheckout/product-order-checkout/product-order-checkout.component.html b/src/app/p_product/orderCheckout/product-order-checkout/product-order-checkout.component.html new file mode 100644 index 0000000000000000000000000000000000000000..03913a68c61ff53635f97e9f226ba6ffb6aeca01 --- /dev/null +++ b/src/app/p_product/orderCheckout/product-order-checkout/product-order-checkout.component.html @@ -0,0 +1,217 @@ +
+ + +

Product Order Checkout

+ +

+ Product Order List is empty +

+ + + +
+
+
+
+ Selected Product Configuration + {{selectedOrderSpecToView?.offering.name}} +
+
+ +
+ This product does not contain any configurable characteristics +
+ +
+
+
+
+ + + {{charForm.get('name').value}} {{charForm.get('valueType').value}} +
+ +
+
+ + + + + + + + + + + + + + + + + + + + Custom Value + + date_range + + + + + + + Custom Value + + + + + + + Custom Value + + + {{charValue.value.alias}} + + + + + + + Custom Value + + + {{charValue.value.alias}} + + + + + + +
+
+
+
+ + Custom Alias + + + + Custom Value + + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+
+
+
+ + +
+
+ +
+ +
+ Order Item List + {{orderedSpecsConfigurationList.length}} +
+ +
    +
  • +
    +
    {{item.offering.name}}
    + {{item.offering.version}} +
    +
    + +
    +
  • +
+
+
+ +
+
+
+
+ Product Order Preferences +
+
+
+ + Notes about the order + + +
+
+ + Requested Start Date + + + date_range + + Date is displayed in Local Time (UTC: {{reqStartDate.value | date:'dd/MM/yy, HH:mm':'UTC'}}) + + + + Requested Completion Date + + date_range + + Date is displayed in Local Time (UTC: {{reqCompletionDate.value | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+
+ +
+
+
+
+ + +
+
+ +
+
+ +
\ No newline at end of file diff --git a/src/app/p_product/orderCheckout/product-order-checkout/product-order-checkout.component.scss b/src/app/p_product/orderCheckout/product-order-checkout/product-order-checkout.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..fd36c88ccc4999bd789679e12e5f11b283995638 --- /dev/null +++ b/src/app/p_product/orderCheckout/product-order-checkout/product-order-checkout.component.scss @@ -0,0 +1,31 @@ +.shadow { + box-shadow: 0 2px 4px -1px rgba(0,0,0,.2), 0 4px 5px 0 rgba(0,0,0,.14), 0 1px 10px 0 rgba(0,0,0,.12); +} + +.selected-spec { + // color: #fff; + background-color: rgba(0, 0, 0, 0.06); + border-color: #ddd; +} + +.list-group-item { + cursor: pointer; +} + +.container { + min-height: 40vh; + display: flex; + flex-direction: column; + justify-content: center; +} + +.info-icon { + color:555; + cursor: pointer; +} + +.border-bottom { + border-bottom: 1px dotted rgba(0, 0, 0, 0.125); + margin-bottom: .75rem; +} + diff --git a/src/app/p_product/orderCheckout/product-order-checkout/product-order-checkout.component.ts b/src/app/p_product/orderCheckout/product-order-checkout/product-order-checkout.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..3d0ae561f9d5980e33ce9801d13bd2ffdf843a9b --- /dev/null +++ b/src/app/p_product/orderCheckout/product-order-checkout/product-order-checkout.component.ts @@ -0,0 +1,301 @@ +import { Component, OnInit } from '@angular/core'; +import { ProductRequesterService, productSpecConfigurationListItem } from '../services/product-requester.service'; +import { UntypedFormArray, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; +import { ProductOffering, ProductSpecificationCharacteristicRes, ProductSpecificationCharacteristicValue } from 'src/app/openApis/productCatalogManagement/models'; +import { Subscription } from 'rxjs'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; +import { ToastrService } from 'ngx-toastr'; +import { ProductOrder, ProductOrderCreate, ProductOrderItem } from 'src/app/openApis/productOrderingManagement/models'; +import { AuthService } from 'src/app/shared/services/auth.service'; +import { Router } from '@angular/router'; +import { ProductOrderService } from 'src/app/openApis/productOrderingManagement/services'; +import { AppService } from 'src/app/shared/services/app.service'; + +const today = new Date(); + +@Component({ + selector: 'app-product-order-checkout', + templateUrl: './product-order-checkout.component.html', + styleUrls: ['./product-order-checkout.component.scss'] +}) +export class ProductOrderCheckoutComponent implements OnInit { + + constructor( + private productRequesterService: ProductRequesterService, + private sortingService: SortingService, + private authService: AuthService, + private router: Router, + private orderService: ProductOrderService, + private toastr: ToastrService, + private appService: AppService + ) { } + + subscription = new Subscription + serviceNoteCtrl = new UntypedFormControl('') + reqStartDate = new UntypedFormControl(new Date()) + reqCompletionDate = new UntypedFormControl(new Date(new Date().setDate(today.getDate() + 1))) + + specCharFormArray = new UntypedFormArray([]) + + configurableSpecChar: ProductSpecificationCharacteristicRes[] = [] + + orderedSpecsConfigurationList: productSpecConfigurationListItem[] = [] + selectedOrderSpecToView: productSpecConfigurationListItem + + ngOnInit(): void { + if (this.productRequesterService.orderedProductSpecsList.length === 0) { + this.freshLoadOrderListChanges() + } + + this.populateOrderedSpecsConfigurationList() + } + + freshLoadOrderListChanges() { + let storageOrderArray = [] + storageOrderArray = JSON.parse(localStorage.getItem('orderedProductSpecsList')) || [] + + this.subscription = this.productRequesterService.orderListUpdated$.subscribe( + () => { + if (storageOrderArray.length && (storageOrderArray.length === this.productRequesterService.orderedProductSpecsList.length)) { + this.populateOrderedSpecsConfigurationList() + } + } + ) + } + + populateOrderedSpecsConfigurationList() { + this.productRequesterService.orderedProductSpecsList.forEach(orderedSpec => { + this.orderedSpecsConfigurationList.push({ + offering: orderedSpec, + checked: false, + specCharacteristics: this.initCharacteristicsValue(orderedSpec) + }) + }) + + this.selectedOrderSpecToView = this.orderedSpecsConfigurationList[0] + + if (this.orderedSpecsConfigurationList.length) { + this.initValuesForm() + } + } + + initCharacteristicsValue(orderedSpec: ProductOffering): { name: string; valueType: string; value: ProductSpecificationCharacteristicValue[]; }[] { + let initialCharValues: { + name: string, + valueType: string, + value: ProductSpecificationCharacteristicRes[] + }[] = [] + + const configurableSpecChar = orderedSpec.prodSpecCharValueUse; + + configurableSpecChar.forEach(confSpecChar => { + + const charDefaultValueArray = confSpecChar.productSpecCharacteristicValue.filter(val => val.isDefault) + + //In case there are no Default Values assigned, initiate Default Value Array with null values + if (charDefaultValueArray.length === 0) { charDefaultValueArray[0] = { value: { value: '', alias: '' } } } + + initialCharValues.push({ + name: confSpecChar.name, + valueType: confSpecChar.valueType, + value: charDefaultValueArray + }) + }) + + return initialCharValues + } + + initValuesForm() { + this.specCharFormArray = new UntypedFormArray([]) + const formArray = this.specCharFormArray as UntypedFormArray + this.configurableSpecChar = this.selectedOrderSpecToView.offering.prodSpecCharValueUse; + + //Sort Configurable Characteristics by Asc Name Order + this.configurableSpecChar.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + + this.configurableSpecChar.forEach((confSpecChar) => { + formArray.push(this.updateFormArrayItem(confSpecChar)) + }) + } + + updateFormArrayItem(specChar: ProductSpecificationCharacteristicRes): UntypedFormGroup { + const charValueArray = this.orderedSpecsConfigurationList.find(listItem => listItem.offering.id === this.selectedOrderSpecToView.offering.id).specCharacteristics.find(char => char.name === specChar.name).value + + return new UntypedFormGroup({ + name: new UntypedFormControl(specChar.name), + valueType: new UntypedFormControl(specChar.valueType), + value: new UntypedFormControl(charValueArray) + }) + } + + addToArrayCharacteristicValue(characteristic: ProductSpecificationCharacteristicRes) { + this.orderedSpecsConfigurationList.find(listItem => listItem.offering.id === this.selectedOrderSpecToView.offering.id).specCharacteristics.find(char => char.name === characteristic.name).value.push( + { + isDefault: true, + valueType: characteristic.productSpecCharacteristicValue[0].valueType, + value: { value: '', alias: '' } + } + ) + } + + deleteFromArrayCharacteristicValue(characteristic: ProductSpecificationCharacteristicRes, index) { + this.orderedSpecsConfigurationList.find(listItem => listItem.offering.id === this.selectedOrderSpecToView.offering.id).specCharacteristics.find(char => char.name === characteristic.name).value.splice(index, 1) + } + + viewAndConfigureSpec(item: productSpecConfigurationListItem) { + this.updateActiveProductInList() + this.selectedOrderSpecToView = item + this.initValuesForm() + } + + removeSpecFromCart(item: productSpecConfigurationListItem) { + const toBeRemovedSpecIndex = this.orderedSpecsConfigurationList.findIndex(el => el.offering.id === item.offering.id) + this.selectedOrderSpecToView = null + + this.orderedSpecsConfigurationList.splice(toBeRemovedSpecIndex, 1) + this.productRequesterService.orderedProductSpecsList.splice(toBeRemovedSpecIndex, 1) + this.removeOrderFromLocalStorage(item.offering.id) + + if (toBeRemovedSpecIndex === this.orderedSpecsConfigurationList.length) { + this.selectedOrderSpecToView = this.orderedSpecsConfigurationList[toBeRemovedSpecIndex - 1] + } else { + this.selectedOrderSpecToView = this.orderedSpecsConfigurationList[toBeRemovedSpecIndex] + } + this.initValuesForm(); + } + + removeOrderFromLocalStorage(specId) { + let orderArray = [] + orderArray = JSON.parse(localStorage.getItem('orderedProductSpecsList')) || [] + if (orderArray.length) { + orderArray.splice(orderArray.findIndex(el => el === specId), 1) + } + localStorage.setItem('orderedProductSpecsList', JSON.stringify(orderArray)) + } + + submitOrder() { + + this.updateActiveProductInList(); + + const startDate = this.reqStartDate.value + ? new Date(this.reqStartDate.value).toISOString() + : new Date().toISOString(); + + const completionDate = this.reqCompletionDate.value + ? new Date(this.reqCompletionDate.value).toISOString() + : new Date().toISOString(); + + let newOrder: ProductOrderCreate = { + category: "Product Order", + description: "Product Order via Portal", + requestedStartDate: startDate, + requestedCompletionDate: completionDate, + productOrderItem: [], + relatedParty: [], + note: [] + }; + + if (this.authService.portalUserJWT) { + newOrder.relatedParty.push({ + role: 'REQUESTER', + name: this.authService.portalUserJWT.preferred_username || 'Unknown', + }); + } + + if (this.serviceNoteCtrl.value) { + newOrder.note.push({ + author: this.authService.portalUserJWT?.preferred_username || 'User', + text: this.serviceNoteCtrl.value, + date: new Date().toISOString() + }); + } + + this.orderedSpecsConfigurationList.forEach((productItem, index) => { + if (!productItem.offering?.id) return; + + const pChars = []; + + productItem.specCharacteristics.forEach((characteristic) => { + const validItems = characteristic.value.filter(el => el.value && el.value.value && String(el.value.value).trim() !== ''); + + if (validItems.length > 0) { + let finalValue: any; + + if (characteristic.valueType === 'SET' || characteristic.valueType === 'ARRAY') { + finalValue = JSON.stringify(validItems.map(el => ({ value: el.value.value, alias: el.value.alias }))); + } + else { + let rawValue = validItems[0].value.value; + + if (characteristic.valueType === 'INTEGER') { + finalValue = {value: parseInt(rawValue as string), alias: validItems[0].value.alias}; + } else if (characteristic.valueType === 'FLOAT') { + finalValue = {value: parseFloat(rawValue as string), alias: validItems[0].value.alias}; + } else if (characteristic.valueType === 'BOOLEAN') { + finalValue = {value: (String(rawValue).toLowerCase() === 'true'), alias: validItems[0].value.alias}; + } else { + finalValue = {value: rawValue, alias: validItems[0].value.alias}; + } + } + + pChars.push({ + name: characteristic.name, + valueType: characteristic.valueType, + value: finalValue + }); + } + }); + + const newOrderItem: ProductOrderItem = { + id: (index + 1).toString(), + action: 'ADD', + quantity: 1, + productOffering: { + id: productItem.offering.id, + name: productItem.offering.name + }, + product: { + productCharacteristic: pChars, + productSpecification: productItem.offering.productSpecification ? { + id: productItem.offering.productSpecification.id, + name: productItem.offering.name, + version: productItem.offering.version + } : undefined + } as any + }; + + newOrder.productOrderItem.push(newOrderItem); + }); + + + this.orderService.createProductOrder({ body: newOrder }).subscribe({ + next: (createdOrder: ProductOrder) => { + this.toastr.success("Order Placed Successfully"); + + this.orderedSpecsConfigurationList = []; + this.productRequesterService.orderedProductSpecsList = []; + localStorage.removeItem('orderedProductSpecsList'); + + if (createdOrder?.id) { + this.router.navigate(["products", 'product_order', createdOrder.id]); + } else { + this.router.navigate(["products", 'product_orders']); + } + }, + error: (error) => { + console.error("Submission Error:", error); + this.toastr.error("Product Order Failed"); + } + }); + } + + + updateActiveProductInList() { + this.orderedSpecsConfigurationList.find(listItem => listItem.offering.id === this.selectedOrderSpecToView.offering.id).specCharacteristics = this.specCharFormArray.value + } + + ngOnDestroy() { + this.subscription.unsubscribe() + } + +} \ No newline at end of file diff --git a/src/app/p_product/orderCheckout/services/product-requester.service.ts b/src/app/p_product/orderCheckout/services/product-requester.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..07f60cd1eb44f8f179100382e0d4552850f2ab30 --- /dev/null +++ b/src/app/p_product/orderCheckout/services/product-requester.service.ts @@ -0,0 +1,44 @@ +import { Injectable } from '@angular/core'; +import { ProductSpecification, ProductOffering, ProductSpecificationCharacteristicValue, ProductSpecificationCharacteristicRes } from 'src/app/openApis/productCatalogManagement/models'; +import { Subject } from 'rxjs'; +import { ProductOfferingService } from 'src/app/openApis/productCatalogManagement/services'; + +@Injectable({ + providedIn: 'root' +}) +export class ProductRequesterService { + + orderedProductSpecsList: ProductOffering[] = [] + + orderListUpdated$ = new Subject() + + constructor( + private specService: ProductOfferingService + ) { + const orderList: string[] = JSON.parse(localStorage.getItem('orderedProductSpecsList')) + if (orderList && (this.orderedProductSpecsList.length === 0 || orderList.length !== this.orderedProductSpecsList.length)) { + orderList.forEach(specId => { + if (!this.orderedProductSpecsList.some(el => el.id === specId)) { + this.specService.retrieveProductOffering({id: specId}).subscribe( + data => { + this.orderedProductSpecsList.push(data) + this.orderListUpdated$.next(true) + }, + error => { + this.orderedProductSpecsList = [] + localStorage.removeItem('orderedProductSpecsList') + } + ) + } + }); + } + } +} +export interface productSpecConfigurationListItem { + checked:boolean, + offering: ProductOffering, + specCharacteristics: { + name: string, + valueType: string, + value: ProductSpecificationCharacteristicValue[] }[] +} diff --git a/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.html b/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.html index 3e47d755a79b31367401bcb16d7db08c0246e0fa..d43e091d0073c09ea6d89b16e36d9e3281d66279 100644 --- a/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.html +++ b/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.html @@ -345,6 +345,7 @@ + diff --git a/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.ts b/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.ts index c1ab3f56841896119644d4adbfd78b370d73056c..602039246f1b76c10535104186fc25b028669175 100644 --- a/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.ts +++ b/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.ts @@ -1421,7 +1421,24 @@ export class ServiceRuleDesignComponent implements OnInit { return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['askAgent'] = function(block: any) { + // Variable getter. + console.log('askAgent') + + var agentName = Blockly.Java.valueToCode(block, 'agentName', + Blockly.Java.ORDER_NONE) || null; + var chattext = Blockly.Java.valueToCode(block, 'text', + Blockly.Java.ORDER_NONE) || null; + var defaultText = Blockly.Java.valueToCode(block, 'defaultText', + Blockly.Java.ORDER_NONE) || null; + var timeOut = Blockly.Java.valueToCode(block, 'timeOut', + Blockly.Java.ORDER_NONE) || null; + + var code = 'askAgent(' + agentName + ',' + chattext + ',' + defaultText + ',' + timeOut + ')'; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['createServiceOrderJson'] = function(block: any) { // Variable getter. console.log('createServiceOrderJson') @@ -1433,6 +1450,7 @@ export class ServiceRuleDesignComponent implements OnInit { return [code, Blockly.Java.ORDER_ATOMIC]; }; + Blockly.Java['variables_get'] = function(block: any) { // Variable getter. console.log('Variable getter CUSTOM') diff --git a/src/app/shared.module.ts b/src/app/shared.module.ts index 471910c456e807f45ea83a88327642689cedba0a..75e8f5386812d6156ecebe79913adc91bf279b16 100644 --- a/src/app/shared.module.ts +++ b/src/app/shared.module.ts @@ -1,4 +1,4 @@ -import { NgModule } from '@angular/core'; +import { NgModule, SecurityContext } from '@angular/core'; import { CommonModule } from '@angular/common'; import { NgProgressModule } from 'ngx-progressbar'; @@ -14,7 +14,7 @@ import { OAuthModule } from 'angular-oauth2-oidc'; import { FileUploadModule } from '@iplab/ngx-file-upload' -import { MarkdownModule } from 'ngx-markdown' +import { MarkdownModule, MarkedOptions } from 'ngx-markdown' import { BootstrapComponent } from './bootstrap/bootstrap.component'; @@ -38,7 +38,7 @@ import { MatNativeDateModule } from '@angular/material/core'; import { MatDatepickerModule } from '@angular/material/datepicker'; import { MatDialogModule } from '@angular/material/dialog'; import { MatExpansionModule } from '@angular/material/expansion'; -import { MatIconModule } from '@angular/material/icon'; +import { MatIcon, MatIconModule } from '@angular/material/icon'; import { MatInputModule } from '@angular/material/input'; import { MatListModule } from '@angular/material/list'; import { MatPaginatorModule } from '@angular/material/paginator'; @@ -52,13 +52,19 @@ import { MatTabsModule } from '@angular/material/tabs'; import { MatToolbarModule } from '@angular/material/toolbar'; import { MatTooltipModule } from '@angular/material/tooltip'; import { MatTreeModule } from '@angular/material/tree'; +import { MatCardModule } from '@angular/material/card'; import {DragDropModule} from '@angular/cdk/drag-drop'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { RouterModule } from '@angular/router'; +import { RouterModule, Routes } from '@angular/router'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { NgJsonEditorModule } from 'ang-jsoneditor'; +import { AssistantComponent } from './p_chat/assistant/assistant.component'; +import { AuthGuardService } from './shared/services/auth-guard.service'; +const routes: Routes = [ + { path: '', component: AssistantComponent, canActivate: [AuthGuardService] } +]; @NgModule({ declarations: [ @@ -71,10 +77,11 @@ import { NgJsonEditorModule } from 'ang-jsoneditor'; DeleteOrganizationComponent, ListIndividualsComponent, EditIndividualsComponent, - DeleteIndividualComponent + DeleteIndividualComponent, + AssistantComponent ], imports: [ - RouterModule, + RouterModule.forChild(routes), FormsModule, ReactiveFormsModule, CommonModule, @@ -99,6 +106,7 @@ import { NgJsonEditorModule } from 'ang-jsoneditor'; MatRadioModule, MatProgressSpinnerModule, MatListModule, + MatCardModule, DragDropModule, MatNativeDateModule, MatDatepickerModule, @@ -109,7 +117,15 @@ import { NgJsonEditorModule } from 'ang-jsoneditor'; // ToastrModule.forRoot({progressBar: true, preventDuplicates: true}), // OAuthModule.forRoot(), FileUploadModule, - MarkdownModule.forRoot(), + MarkdownModule.forRoot({ + markedOptions: { + provide: MarkedOptions, + useValue: { + gfm: true, + breaks: true, // This converts single \n into
+ }, + }, + }), NgJsonEditorModule ], exports: [ diff --git a/src/app/shared/components/redirect/redirect.component.ts b/src/app/shared/components/redirect/redirect.component.ts index 4354f2126a6ba403a914fe4c63e5c49d90f218f5..d50453cc61cc257b3d5f9702f00acbff325f2348 100644 --- a/src/app/shared/components/redirect/redirect.component.ts +++ b/src/app/shared/components/redirect/redirect.component.ts @@ -1,6 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { Router } from '@angular/router'; import { AppService } from '../../services/app.service'; +import { el } from '@fullcalendar/core/internal-common'; @Component({ selector: 'app-redirect', @@ -31,6 +32,10 @@ export class RedirectComponent implements OnInit { this.router.navigate(['products', 'marketplace']) } + else if (activePortal === 'assistant') { + this.router.navigate(['assistant']) + } + else { this.router.navigate(['/']) } diff --git a/src/app/shared/models/app-config.model.ts b/src/app/shared/models/app-config.model.ts index 7d639d6cbe5a1a2c0cf824796f8d0725ac6b85e6..8ee673c940364b2c8e7e32fefa966928615633de 100644 --- a/src/app/shared/models/app-config.model.ts +++ b/src/app/shared/models/app-config.model.ts @@ -7,6 +7,7 @@ export interface IAppConfig { "BUGZILLA": string, "STATUS": string, "WEBURL": string, + "ASSISTANT_URL": string, "PORTAL_REPO_APIURL": string, "ASSURANCE_SERVICE_MGMT_APIURL": string, "APITMFURL": string, diff --git a/src/app/shared/navbar/navbar.component.html b/src/app/shared/navbar/navbar.component.html index 510cb5748abb0f04d5c0d7624688e253473e9b1b..9594a4efb3396058d1c60640c8f6ac66913589ac 100644 --- a/src/app/shared/navbar/navbar.component.html +++ b/src/app/shared/navbar/navbar.component.html @@ -42,6 +42,22 @@ Products + + @@ -68,52 +84,52 @@ @@ -141,16 +157,16 @@ @@ -234,22 +252,22 @@